All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oren Laadan <orenl-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org>
To: Sukadev Bhattiprolu
	<sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
Cc: Containers
	<containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>
Subject: Re: [v10][PATCH] Implement clone_with_pids() syscall
Date: Mon, 02 Nov 2009 13:10:07 -0500	[thread overview]
Message-ID: <4AEF207F.3000904@librato.com> (raw)
In-Reply-To: <20091101204132.GA22116-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>

Hi,

What happened to eclone() or clonex() ?

('e' or 'x' for extended, and we extended it in a way so that
future extension need not require a new syscall).

Anything but clone_with_pids() ...

Otherwise, for patches 3 and 6:
Acked-by: Oren Laadan <orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>

Oren.

Sukadev Bhattiprolu wrote:
> [v10][PATCH 0/9] Implement clone_with_pids() system call
> 
> To support application checkpoint/restart, a task must have the same pid it
> had when it was checkpointed.  When containers are nested, the tasks within
> the containers exist in multiple pid namespaces and hence have multiple pids
> to specify during restart.
> 
> This patchset implements a new system call, clone_with_pids() that lets a
> process specify the pids of the child process.
> 
> Patches 1 through 6 are helper patches needed for choosing a pid for the
> child process.
> 
> PATCH 8 defines a prototype of the new system call. PATCH 9 adds some
> documentation on the new system call, some/all of which will eventually
> go into a man page.
> 
> Changelog[v10-rc1]:
> 	- [Linus Torvalds] Use PTREGSCALL() implementation for clone rather
> 	  than the generic system call
> 	- Rename clone3() to clone_with_pids()
> 	- Update Documentation/clone_with_pids() to show example usage with
> 	  the PTREGSCALL implementation.
> 
> Changelog[v9]:
> 	- [Pavel Emelyanov] Drop the patch that made 'pid_max' a property
> 	  of struct pid_namespace
> 	- [Roland McGrath, H. Peter Anvin and earlier on, Serge Hallyn] To
> 	  avoid inadvertent truncation clone_flags, preserve the first
> 	  parameter of clone3() as 'u32 clone_flags' and specify newer
> 	  flags in clone_args.flags_high (PATCH 8/9 and PATCH 9/9)
> 	- [Eric Biederman] Generalize alloc_pidmap() code to simplify and
> 	  remove duplication (see PATCH 3/9].
> 	  
> Changelog[v8]:
> 	- [Oren Laadan, Louis Rilling, KOSAKI Motohiro]
> 	  The name 'clone2()' is in use - renamed new syscall to clone3().
> 	- [Oren Laadan] ->parent_tidptr and ->child_tidptr need to be 64bit.
> 	- [Oren Laadan] Ensure that unused fields/flags in clone_struct are 0.
> 	  (Added [PATCH 7/10] to the patchset).
> 
> Changelog[v7]:
> 	- [Peter Zijlstra, Arnd Bergmann]
> 	  Group the arguments to clone2() into a 'struct clone_arg' to
> 	  workaround the issue of exceeding 6 arguments to the system call.
> 	  Also define clone-flags as u64 to allow additional clone-flags.
> 
> Changelog[v6]:
> 	- [Nathan Lynch, Arnd Bergmann, H. Peter Anvin, Linus Torvalds]
> 	  Change 'pid_set.pids' to 'pid_t pids[]' so sizeof(struct pid_set) is
> 	  constant across architectures (Patches 7, 8).
> 	- (Nathan Lynch) Change pid_set.num_pids to unsigned and remove
> 	  'unum_pids < 0' check (Patches 7,8)
> 	- (Pavel Machek) New patch (Patch 9) to add some documentation.
> 
> Changelog[v5]:
> 	- Make 'pid_max' a property of pid_ns (Integrated Serge Hallyn's patch
> 	  into this set)
> 	- (Eric Biederman): Avoid the new function, set_pidmap() - added
> 	  couple of checks on 'target_pid' in alloc_pidmap() itself.
> 
> === IMPORTANT NOTE:
> 
> clone() system call has another limitation - all but one, available bits in
> clone-flags are in use and if more new clone-flags are needed, we will need
> a variant of the clone() system call. 
> 
> It appears to make sense to try and extend this new system call to address
> this limitation as well. The requirements of a new clone system call could
> then be summarized as:
> 
> 	- do everything clone() does today, and
> 	- give application an ability to choose pids for the child process
> 	  in all ancestor pid namespaces, and
> 	- allow more clone_flags
> 
> Contstraints:
> 
> 	- system-calls are restricted to 6 parameters and clone() already
> 	  takes 5 parameters, any extension to clone() interface would require
> 	  one or more copy_from_user().  (Not sure if copy_from_user() of ~40
> 	  bytes would have a significant impact on performance of clone()).
> 
> Based on these requirements and constraints, we explored a couple of system
> call interfaces (in earlier versions of this patchset).  Based on input from
> Arnd Bergmann and others, the new interface of the system call is: 
> 
> 	struct clone_args {
> 		u64 clone_flags_high;
> 		u64 child_stack_base;
> 		u64 child_stack_size;
> 		u64 parent_tid_ptr;
> 		u64 child_tid_ptr;
> 		u32 nr_pids;
> 		u32 clone_args_size;
> 		u64 reserved1;
> 	};
> 
> 	sys_clone_with_pids(u32 flags_low, struct clone_args *cargs,
> 			pid_t *pids)
> 
> Details of the struct clone_args and the usage are explained in the
> documentation (PATCH 9/9).
> 
> NOTE:
> 	While this patchset enables support for more clone-flags, actual
> 	implementation for additional clone-flags is best implemented as
> 	a separate patchset (PATCH 8/9 identifies some TODOs)
> 
> Signed-off-by: Sukadev Bhattiprolu <sukadev-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
> 
> _______________________________________________
> Containers mailing list
> Containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
> https://lists.linux-foundation.org/mailman/listinfo/containers

  parent reply	other threads:[~2009-11-02 18:10 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-01 20:41 [v10][PATCH] Implement clone_with_pids() syscall Sukadev Bhattiprolu
     [not found] ` <20091101204132.GA22116-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-11-01 20:42   ` [v10][PATCH 1/9] Factor out code to allocate pidmap page Sukadev Bhattiprolu
2009-11-01 20:43   ` [v10][PATCH 2/9] Have alloc_pidmap() return actual error code Sukadev Bhattiprolu
2009-11-01 20:44   ` [v10][PATCH 3/9] Define set_pidmap() function Sukadev Bhattiprolu
2009-11-01 20:44   ` [v10][PATCH 4/9] Add target_pids parameter to alloc_pid() Sukadev Bhattiprolu
2009-11-01 20:44   ` [v10][PATCH 5/9] Add target_pids parameter to copy_process() Sukadev Bhattiprolu
2009-11-01 20:45   ` [v10][PATCH 6/9] Check invalid clone flags Sukadev Bhattiprolu
2009-11-01 20:45   ` [v10][PATCH 7/9] Define do_fork_with_pids() Sukadev Bhattiprolu
2009-11-01 20:45   ` [v10][PATCH 8/9] Define clone_with_pids() syscall Sukadev Bhattiprolu
     [not found]     ` <20091101204548.GG23168-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-11-02 18:09       ` Oren Laadan
     [not found]         ` <4AEF2077.5080107-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org>
2009-11-03  6:44           ` Sukadev Bhattiprolu
     [not found]             ` <20091103064454.GA22483-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-11-03  8:46               ` Arnd Bergmann
2009-11-03 16:16       ` Dave Hansen
2009-11-03 17:16         ` Sukadev Bhattiprolu
2009-11-04  0:32         ` Sukadev Bhattiprolu
2009-11-01 20:46   ` [v10][PATCH 9/9] Document " Sukadev Bhattiprolu
2009-11-02 18:10   ` Oren Laadan [this message]
     [not found]     ` <4AEF207F.3000904-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org>
2009-11-02 20:17       ` [v10][PATCH] Implement " Sukadev Bhattiprolu

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=4AEF207F.3000904@librato.com \
    --to=orenl-rdfvbdnroixbdgjk7y7tuq@public.gmane.org \
    --cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
    --cc=sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org \
    /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.