All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Hansen <dave@linux.vnet.ibm.com>
To: Oren Laadan <orenl@cs.columbia.edu>
Cc: containers@lists.linux-foundation.org, jeremy@goop.org,
	linux-kernel@vger.kernel.org, arnd@arndb.de
Subject: Re: [RFC v3][PATCH 7/9] Infrastructure for shared objects
Date: Thu, 04 Sep 2008 11:14:22 -0700	[thread overview]
Message-ID: <1220552062.23386.35.camel@nimitz> (raw)
In-Reply-To: <Pine.LNX.4.64.0809040404550.5982@takamine.ncl.cs.columbia.edu>

On Thu, 2008-09-04 at 04:05 -0400, Oren Laadan wrote:
> +=== Shared resources (objects)
> +
> +Many resources used by tasks may be shared by more than one task (e.g.
> +file descriptors, memory address space, etc), or even have multiple
> +references from other resources (e.g. a single inode that represents
> +two ends of a pipe).
> +
> +Clearly, the state of shared objects need only be saved once, even if
> +they occur multiple times. We use a hash table (ctx->objhash) to keep
> +track of shared objects in the following manner.
> +
> +On the first encounter, the state is dumped and the object is assigned
> +a unique identifier and also stored in the hash table (indexed by its
> +physical kenrel address). From then on the object will be found in the
> +hash and only its identifier is saved.
> +
> +On restart the identifier is looked up in the hash table; if not found
> +then the state is read, the object is created, and added to the hash
> +table (this time indexed by its identifier). Otherwise, the object in
> +the hash table is used.
> +
> +The interface for the hash table is the following:
> +
> +int cr_obj_get_by_ptr(struct cr_ctx *ctx, void *ptr, unsigned short type);
> +  [checkpoint] find the unique identifier - object reference (objref)
> +  - of the object that is pointer to by ptr (or 0 if not found).
> +
> +int cr_obj_add_ptr(struct cr_ctx *ctx, void *ptr, int *objref,
> +                  unsigned short type, unsigned short flags);
> +  [checkpoint] add the object pointed to by ptr to the hash table if
> +  it isn't already there, and fill its unique identifier (objref); will
> +  return 0 if already found in the has, or 1 otherwise.
> +
> +void *cr_obj_get_by_ref(struct cr_ctx *ctx, int objref, unsigned short type);
> +  [restart] return the pointer to the object whose unique identifier
> +  is equal to objref.
> +
> +int cr_obj_add_ref(struct cr_ctx *ctx, void *ptr, int objref,
> +                  unsigned short type, unsigned short flags);
> +  [restart] add the object with unique identifier objref, pointed to by
> +  ptr to the hash table if it isn't already there; will return 0 if
> +  already found in the has, or 1 otherwise.

Once you get to the point of putting function prototypes in
Documentation/, it's probably a good time to start using kerneldocs. :)

-- Dave


  parent reply	other threads:[~2008-09-04 18:14 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-09-04  7:57 [RFC v3][PATCH 0/9] Kernel based checkpoint/restart Oren Laadan
2008-09-04  8:02 ` [RFC v3][PATCH 1/9] Create syscalls: sys_checkpoint, sys_restart Oren Laadan
2008-09-04  8:37   ` Cedric Le Goater
2008-09-04 14:42   ` Serge E. Hallyn
2008-09-04 17:32     ` Oren Laadan
2008-09-04 20:37       ` Serge E. Hallyn
     [not found]         ` <20080904203730.GA28313-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-09-04 21:05           ` Oren Laadan
2008-09-04 21:05             ` Oren Laadan
     [not found]             ` <48C04D7C.6020500-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2008-09-04 22:03               ` Serge E. Hallyn
2008-09-04 22:03             ` Serge E. Hallyn
     [not found]       ` <48C01B92.60900-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2008-09-04 20:37         ` Serge E. Hallyn
2008-09-08 15:02     ` [Devel] " Andrey Mirkin
     [not found]       ` <200809081902.33709.amirkin-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2008-09-08 16:07         ` Cedric Le Goater
2008-09-08 16:07           ` Cedric Le Goater
     [not found]     ` <20080904144223.GA19364-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-09-04 17:32       ` Oren Laadan
2008-09-08 15:02       ` [Devel] " Andrey Mirkin
     [not found]   ` <Pine.LNX.4.64.0809040401320.5982-CXF6herHY6ykSYb+qCZC/1i27PF6R63G9nwVQlTi/Pw@public.gmane.org>
2008-09-04  8:37     ` Cedric Le Goater
2008-09-04 14:42     ` Serge E. Hallyn
2008-09-04  8:02 ` [RFC v3][PATCH 2/9] General infrastructure for checkpoint restart Oren Laadan
2008-09-04 16:03   ` Serge E. Hallyn
     [not found]     ` <20080904160311.GC19364-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-09-04 16:09       ` Dave Hansen
2008-09-04 16:09     ` Dave Hansen
     [not found]   ` <Pine.LNX.4.64.0809040402170.5982-CXF6herHY6ykSYb+qCZC/1i27PF6R63G9nwVQlTi/Pw@public.gmane.org>
2008-09-04  9:12     ` Louis Rilling
2008-09-04  9:12       ` Louis Rilling
     [not found]       ` <20080904091230.GW14473-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org>
2008-09-04 16:00         ` Serge E. Hallyn
2008-09-04 16:00           ` Serge E. Hallyn
2008-09-04 16:03     ` Serge E. Hallyn
2008-09-04  8:03 ` [RFC v3][PATCH 3/9] x86 support for checkpoint/restart Oren Laadan
2008-09-04  8:03 ` [RFC v3][PATCH 4/9] Memory management (dump) Oren Laadan
2008-09-04 18:25   ` Dave Hansen
2008-09-07  1:54     ` Oren Laadan
2008-09-07  1:54       ` Oren Laadan
     [not found]       ` <48C3343D.9000407-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2008-09-08 15:55         ` Dave Hansen
2008-09-08 15:55       ` Dave Hansen
     [not found]   ` <Pine.LNX.4.64.0809040403120.5982-CXF6herHY6ykSYb+qCZC/1i27PF6R63G9nwVQlTi/Pw@public.gmane.org>
2008-09-04 18:25     ` Dave Hansen
2008-09-04  8:04 ` [RFC v3][PATCH 5/9] Memory managemnet (restore) Oren Laadan
     [not found]   ` <Pine.LNX.4.64.0809040404060.5982-CXF6herHY6ykSYb+qCZC/1i27PF6R63G9nwVQlTi/Pw@public.gmane.org>
2008-09-04 18:08     ` Dave Hansen
2008-09-04 18:08   ` Dave Hansen
2008-09-07  3:09     ` Oren Laadan
2008-09-08 16:49       ` Dave Hansen
2008-09-09  6:01         ` Oren Laadan
2008-09-09  6:01         ` Oren Laadan
     [not found]           ` <48C6113A.3080804-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2008-09-10 21:42             ` Dave Hansen
2008-09-10 21:42           ` Dave Hansen
2008-09-10 22:00             ` Cleanups for: [PATCH " Dave Hansen
2008-09-10 22:00             ` Dave Hansen
2008-09-11  7:37             ` [RFC v3][PATCH " Oren Laadan
2008-09-11  7:37             ` Oren Laadan
2008-09-11 15:38               ` Serge E. Hallyn
2008-09-12 16:34               ` Dave Hansen
     [not found]               ` <48C8CAC6.3090209-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2008-09-11 15:38                 ` Serge E. Hallyn
2008-09-12 16:34                 ` Dave Hansen
     [not found]       ` <48C345D2.1020603-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2008-09-08 16:49         ` Dave Hansen
2008-09-07  3:09     ` Oren Laadan
2008-09-04  8:04 ` [RFC v3][PATCH 6/9] Checkpoint/restart: initial documentation Oren Laadan
2008-09-04  8:05 ` [RFC v3][PATCH 7/9] Infrastructure for shared objects Oren Laadan
     [not found]   ` <Pine.LNX.4.64.0809040404550.5982-CXF6herHY6ykSYb+qCZC/1i27PF6R63G9nwVQlTi/Pw@public.gmane.org>
2008-09-04  9:38     ` Louis Rilling
2008-09-04 18:14     ` Dave Hansen
2008-09-04  9:38   ` Louis Rilling
2008-09-04 14:23     ` Oren Laadan
     [not found]     ` <20080904093803.GX14473-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org>
2008-09-04 14:23       ` Oren Laadan
2008-09-04 18:14   ` Dave Hansen [this message]
2008-09-04  8:05 ` [RFC v3][PATCH 8/9] File descriprtors (dump) Oren Laadan
     [not found]   ` <Pine.LNX.4.64.0809040405250.5982-CXF6herHY6ykSYb+qCZC/1i27PF6R63G9nwVQlTi/Pw@public.gmane.org>
2008-09-04  9:47     ` Louis Rilling
2008-09-04 15:01     ` Dave Hansen
2008-09-04 18:41     ` Dave Hansen
2008-09-04 18:41       ` Dave Hansen
2008-09-07  4:52       ` Oren Laadan
2008-09-07  4:52       ` Oren Laadan
2008-09-08 16:57         ` Dave Hansen
     [not found]         ` <48C35DFC.9080903-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2008-09-08 16:57           ` Dave Hansen
2008-09-04  9:47   ` Louis Rilling
2008-09-04 14:43     ` Oren Laadan
     [not found]     ` <20080904094740.GY14473-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org>
2008-09-04 14:43       ` Oren Laadan
2008-09-04 15:01   ` Dave Hansen
2008-09-04  8:06 ` [RFC v3][PATCH 9/9] File descriprtors (restore) Oren Laadan
     [not found] ` <Pine.LNX.4.64.0809040354440.460-CXF6herHY6ykSYb+qCZC/1i27PF6R63G9nwVQlTi/Pw@public.gmane.org>
2008-09-04  8:02   ` [RFC v3][PATCH 1/9] Create syscalls: sys_checkpoint, sys_restart Oren Laadan
2008-09-04  8:02   ` [RFC v3][PATCH 2/9] General infrastructure for checkpoint restart Oren Laadan
2008-09-04  8:03   ` [RFC v3][PATCH 3/9] x86 support for checkpoint/restart Oren Laadan
2008-09-04  8:03   ` [RFC v3][PATCH 4/9] Memory management (dump) Oren Laadan
2008-09-04  8:04   ` [RFC v3][PATCH 5/9] Memory managemnet (restore) Oren Laadan
2008-09-04  8:04   ` [RFC v3][PATCH 6/9] Checkpoint/restart: initial documentation Oren Laadan
2008-09-04  8:05   ` [RFC v3][PATCH 7/9] Infrastructure for shared objects Oren Laadan
2008-09-04  8:05   ` [RFC v3][PATCH 8/9] File descriprtors (dump) Oren Laadan
2008-09-04  8:06   ` [RFC v3][PATCH 9/9] File descriprtors (restore) Oren Laadan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1220552062.23386.35.camel@nimitz \
    --to=dave@linux.vnet.ibm.com \
    --cc=arnd@arndb.de \
    --cc=containers@lists.linux-foundation.org \
    --cc=jeremy@goop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=orenl@cs.columbia.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.