Linux Container Development
 help / color / mirror / Atom feed
  • [parent not found: <4AD8C7E4.9000903@free.fr>]
  • * [RFC][v8][PATCH 0/10] Implement clone3() system call
    @ 2009-10-13  4:49 Sukadev Bhattiprolu
      0 siblings, 0 replies; 92+ messages in thread
    From: Sukadev Bhattiprolu @ 2009-10-13  4:49 UTC (permalink / raw)
      To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
      Cc: randy.dunlap-QHcLZuEGTsvQT0dZR+AlfA, arnd-r2nGTMty4D4, Containers,
    	Nathan Lynch, Louis.Rilling-aw0BnHfMbSpBDgjK7y7TUQ,
    	Eric W. Biederman, kosaki.motohiro-+CUm20s59erQFUHtdCDX3A,
    	hpa-YMNOUZJC4hwAvxtiuMwx3w, mingo-X9Un+BFzKDI,
    	linux-api-u79uwXL29TY76Z2rM5mHXA,
    	torvalds-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b, Alexey Dobriyan,
    	roland-H+wXaHxf7aLQT0dZR+AlfA, Pavel Emelyanov
    
    
    Subject: [RFC][v8][PATCH 0/10] Implement clone3() 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, clone3() that lets a process
    specify the pids of the child process.
    
    Patches 1 through 7 are helper patches, needed for choosing a pid for the
    child process.
    
    PATCH 9 defines a prototype of the new system call. PATCH 10 adds some
    documentation on the new system call, some/all of which will eventually
    go into a man page.
    
    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 TODO:
    
    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_struct {
    		u64 flags;
    		u64 child_stack;
    		u32 nr_pids;
    		u32 reserved1;
    		u64 parent_tid;
    		u64 child_tid;
    		u64 reserved2;
    	};
    
    	sys_clone3(struct clone_struct __user *cs, pid_t __user *pids)
    
    Signed-off-by: Sukadev Bhattiprolu <sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
    
    ^ permalink raw reply	[flat|nested] 92+ messages in thread

    end of thread, other threads:[~2009-10-24  3:38 UTC | newest]
    
    Thread overview: 92+ messages (download: mbox.gz follow: Atom feed
    -- links below jump to the message on this page --
         [not found] <20091013044925.GA28181@us.ibm.com>
         [not found] ` <20091013044925.GA28181-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-13  4:49   ` [RFC][v8][PATCH 1/10]: Factor out code to allocate pidmap page Sukadev Bhattiprolu
    2009-10-13  4:50   ` [RFC][v8][PATCH 2/10]: Have alloc_pidmap() return actual error code Sukadev Bhattiprolu
    2009-10-13  4:50   ` [RFC][v8][PATCH 3/10]: Make pid_max a pid_ns property Sukadev Bhattiprolu
         [not found]     ` <20091013045041.GC28435-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-13  5:19       ` Alexey Dobriyan
    2009-10-13 13:09       ` Pavel Emelyanov
         [not found]         ` <4AD47C1F.7040703-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
    2009-10-13 15:24           ` Serge E. Hallyn
         [not found]             ` <20091013152453.GA9994-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-13 16:10               ` Pavel Emelyanov
         [not found]             ` <4AD4A676.3010603@openvz.org>
         [not found]               ` <4AD4A676.3010603-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
    2009-10-13 16:28                 ` Serge E. Hallyn
    2009-10-13  4:51   ` [RFC][v8][PATCH 4/10]: Add target_pid parameter to alloc_pidmap() Sukadev Bhattiprolu
         [not found]     ` <20091013045104.GD28435-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-13 11:50       ` Pavel Emelyanov
         [not found]         ` <4AD46977.5020303-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
    2009-10-15  0:24           ` Sukadev Bhattiprolu
    2009-10-13  4:51   ` [RFC][v8][PATCH 5/10]: Add target_pids parameter to alloc_pid() Sukadev Bhattiprolu
    2009-10-13  4:52   ` [RFC][v8][PATCH 6/10]: Add target_pids parameter to copy_process() Sukadev Bhattiprolu
    2009-10-13  4:52   ` [RFC][v8][PATCH 7/10]: Check invalid clone flags Sukadev Bhattiprolu
         [not found]     ` <20091013045234.GG28435-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-13 18:35       ` Oren Laadan
         [not found]         ` <4AD4C88D.7040008-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org>
    2009-10-13 23:38           ` Sukadev Bhattiprolu
    2009-10-13  4:52   ` [RFC][v8][PATCH 8/10]: Define do_fork_with_pids() Sukadev Bhattiprolu
    2009-10-13  4:54   ` [RFC][v8][PATCH 9/10]: Define clone3() syscall Sukadev Bhattiprolu
         [not found]     ` <20091013045439.GI28435-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-13 18:46       ` Oren Laadan
    2009-10-16  4:20       ` Sukadev Bhattiprolu
         [not found]         ` <20091016042041.GA7220-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-16  6:25           ` Michael Kerrisk
         [not found]             ` <cfd18e0f0910152325m4a9125c2q18f36f5bd7d4a0-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
    2009-10-16 18:06               ` Sukadev Bhattiprolu
         [not found]             ` <20091016180631.GA31036@us.ibm.com>
         [not found]               ` <20091016180631.GA31036-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-19 17:44                 ` Matt Helsley
         [not found]               ` <20091019174405.GE27627@count0.beaverton.ibm.com>
         [not found]                 ` <20091019174405.GE27627-52DBMbEzqgQ/wnmkkaCWp/UQ3DHhIser@public.gmane.org>
    2009-10-19 21:31                   ` H. Peter Anvin
         [not found]                 ` <4ADCDAA8.5080408@zytor.com>
         [not found]                   ` <4ADCDAA8.5080408-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
    2009-10-19 23:50                     ` Matt Helsley
         [not found]                   ` <20091019235012.GF27627@count0.beaverton.ibm.com>
         [not found]                     ` <20091019235012.GF27627-52DBMbEzqgQ/wnmkkaCWp/UQ3DHhIser@public.gmane.org>
    2009-10-21  4:26                       ` Michael Kerrisk
         [not found]                     ` <cfd18e0f0910202126w1ebfa2e2u2ecbaa23b198d100@mail.gmail.com>
         [not found]                       ` <cfd18e0f0910202126w1ebfa2e2u2ecbaa23b198d100-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
    2009-10-21 13:03                         ` H. Peter Anvin
         [not found]                       ` <4ADF06B7.50508@zytor.com>
         [not found]                         ` <4ADF06B7.50508-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
    2009-10-21 19:44                           ` Sukadev Bhattiprolu
    2009-10-22 10:26                           ` Michael Kerrisk
         [not found]                         ` <20091021194440.GA1283@us.ibm.com>
         [not found]                           ` <20091021194440.GA1283-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-21 22:03                             ` H. Peter Anvin
    2009-10-22 10:40                             ` Michael Kerrisk
         [not found]                           ` <cfd18e0f0910220340n7c655daap78e395136c56f882@mail.gmail.com>
         [not found]                             ` <cfd18e0f0910220340n7c655daap78e395136c56f882-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
    2009-10-22 18:10                               ` Sukadev Bhattiprolu
         [not found]                         ` <cfd18e0f0910220326w1a71b899s5ff0fce9e0a2b8ed@mail.gmail.com>
         [not found]                           ` <cfd18e0f0910220326w1a71b899s5ff0fce9e0a2b8ed-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
    2009-10-22 11:38                             ` H. Peter Anvin
         [not found]                           ` <4AE0444B.5070603@zytor.com>
         [not found]                             ` <4AE0444B.5070603-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
    2009-10-22 12:14                               ` Michael Kerrisk
         [not found]                             ` <cfd18e0f0910220514y1bd5967aj3a04bc3f5b38948b@mail.gmail.com>
         [not found]                               ` <cfd18e0f0910220514y1bd5967aj3a04bc3f5b38948b-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
    2009-10-22 12:19                                 ` H. Peter Anvin
    2009-10-22 13:57                                 ` Matt Helsley
    2009-10-13  4:55   ` [RFC][v8][PATCH 10/10]: Document " Sukadev Bhattiprolu
         [not found]     ` <20091013045556.GJ28435-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-14 12:26       ` Arnd Bergmann
         [not found]         ` <200910141426.35338.arnd-r2nGTMty4D4@public.gmane.org>
    2009-10-14 18:39           ` Sukadev Bhattiprolu
    2009-10-19 21:36       ` Pavel Machek
         [not found]     ` <20091019213636.GB1482@ucw.cz>
         [not found]       ` <200910211037.38413.arnd@arndb.de>
         [not found]         ` <200910211037.38413.arnd-r2nGTMty4D4@public.gmane.org>
    2009-10-21  9:33           ` Pavel Machek
         [not found]         ` <20091021093338.GA11670@elf.ucw.cz>
         [not found]           ` <20091021093338.GA11670-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
    2009-10-21 13:26             ` Arnd Bergmann
         [not found]           ` <200910211526.50584.arnd@arndb.de>
         [not found]             ` <200910211526.50584.arnd-r2nGTMty4D4@public.gmane.org>
    2009-10-21 19:09               ` Pavel Machek
         [not found]       ` <20091019213636.GB1482-+ZI9xUNit7I@public.gmane.org>
    2009-10-21  8:37         ` Arnd Bergmann
    2009-10-21 18:27         ` Sukadev Bhattiprolu
    2009-10-13 20:50   ` [RFC][v8][PATCH 0/10] Implement clone3() system call Roland McGrath
         [not found]     ` <20091013205015.1ED524F7-nL1rrgvulkc2UH6IwYuUx0EOCMrvLtNR@public.gmane.org>
    2009-10-13 23:27       ` Sukadev Bhattiprolu
         [not found]         ` <20091013232736.GA24392-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-13 23:53           ` Roland McGrath
         [not found]             ` <20091013235320.E90022746-nL1rrgvulkc2UH6IwYuUx0EOCMrvLtNR@public.gmane.org>
    2009-10-14  1:13               ` H. Peter Anvin
         [not found]                 ` <4AD525B3.2070906-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
    2009-10-14  4:36                   ` Sukadev Bhattiprolu
         [not found]                     ` <20091014043607.GA32114-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-14  4:38                       ` H. Peter Anvin
    2009-10-14 22:36                   ` Sukadev Bhattiprolu
         [not found]                     ` <20091014223634.GB3515-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-14 22:49                       ` H. Peter Anvin
         [not found]                     ` <4AD6557D.3090501@zytor.com>
         [not found]                       ` <4AD6557D.3090501-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
    2009-10-15  0:17                         ` Sukadev Bhattiprolu
    2009-10-13 23:49   ` H. Peter Anvin
         [not found]     ` <4AD511F1.7010207-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
    2009-10-14  1:39       ` Matt Helsley
         [not found]         ` <20091014013936.GC27627-52DBMbEzqgQ/wnmkkaCWp/UQ3DHhIser@public.gmane.org>
    2009-10-14  2:24           ` H. Peter Anvin
         [not found]             ` <4AD5365E.5090709-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
    2009-10-14  4:40               ` Sukadev Bhattiprolu
         [not found]                 ` <20091014044035.GB32114-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-14  4:50                   ` H. Peter Anvin
    2009-10-14 16:07                   ` Serge E. Hallyn
    2009-10-16 19:22   ` Daniel Lezcano
         [not found] ` <4AD8C7E4.9000903@free.fr>
         [not found]   ` <4AD8C7E4.9000903-GANU6spQydw@public.gmane.org>
    2009-10-16 19:44     ` Sukadev Bhattiprolu
         [not found]   ` <20091016194451.GA28706@us.ibm.com>
         [not found]     ` <20091016194451.GA28706-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-19 20:34       ` Daniel Lezcano
         [not found]     ` <4ADCCD68.9030003@free.fr>
         [not found]       ` <4ADCCD68.9030003-GANU6spQydw@public.gmane.org>
    2009-10-19 21:47         ` Oren Laadan
         [not found]       ` <4ADCDE7F.4090501@librato.com>
         [not found]         ` <20091020005125.GG27627@count0.beaverton.ibm.com>
         [not found]           ` <20091020005125.GG27627-52DBMbEzqgQ/wnmkkaCWp/UQ3DHhIser@public.gmane.org>
    2009-10-20  3:33             ` Eric W. Biederman
         [not found]           ` <m1vdiad9jd.fsf@fess.ebiederm.org>
         [not found]             ` <m1vdiad9jd.fsf-+imSwln9KH6u2/kzUuoCbdi2O/JbrIOy@public.gmane.org>
    2009-10-20  4:03               ` Sukadev Bhattiprolu
    2009-10-20 14:09               ` Serge E. Hallyn
         [not found]             ` <20091020040315.GA26632@us.ibm.com>
         [not found]               ` <20091020040315.GA26632-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-20 10:46                 ` Eric W. Biederman
         [not found]               ` <m1iqeauyvl.fsf@fess.ebiederm.org>
         [not found]                 ` <m1iqeauyvl.fsf-+imSwln9KH6u2/kzUuoCbdi2O/JbrIOy@public.gmane.org>
    2009-10-20 14:16                   ` Serge E. Hallyn
    2009-10-20 18:33                   ` Sukadev Bhattiprolu
         [not found]                 ` <20091020183329.GB22646@us.ibm.com>
         [not found]                   ` <20091020183329.GB22646-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-20 19:26                     ` Eric W. Biederman
         [not found]                   ` <m1r5sxsw7w.fsf@fess.ebiederm.org>
         [not found]                     ` <m1r5sxsw7w.fsf-+imSwln9KH6u2/kzUuoCbdi2O/JbrIOy@public.gmane.org>
    2009-10-20 20:13                       ` Oren Laadan
    2009-10-21  6:20                       ` Sukadev Bhattiprolu
         [not found]                     ` <20091021062021.GA2667@us.ibm.com>
         [not found]                       ` <20091021062021.GA2667-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-21  9:16                         ` Eric W. Biederman
         [not found]                       ` <m1eioxrtsb.fsf@fess.ebiederm.org>
         [not found]                         ` <20091021185242.GB12955@us.ibm.com>
         [not found]                           ` <20091021185242.GB12955-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-21 21:11                             ` Eric W. Biederman
         [not found]                         ` <m1eioxrtsb.fsf-+imSwln9KH6u2/kzUuoCbdi2O/JbrIOy@public.gmane.org>
    2009-10-21 18:52                           ` Sukadev Bhattiprolu
    2009-10-23  0:42                           ` Sukadev Bhattiprolu
         [not found]                         ` <20091023004253.GA7915@us.ibm.com>
         [not found]                           ` <20091023004253.GA7915-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-23  1:03                             ` Eric W. Biederman
         [not found]                           ` <m1bpjyrkep.fsf@fess.ebiederm.org>
         [not found]                             ` <m1bpjyrkep.fsf-+imSwln9KH6u2/kzUuoCbdi2O/JbrIOy@public.gmane.org>
    2009-10-23  5:30                               ` Sukadev Bhattiprolu
         [not found]                             ` <20091023053001.GA24972@us.ibm.com>
         [not found]                               ` <20091023053001.GA24972-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-23  5:44                                 ` Eric W. Biederman
    2009-10-23 19:16                                 ` Oren Laadan
         [not found]                               ` <m1ws2mpsuk.fsf@fess.ebiederm.org>
         [not found]                                 ` <m1ws2mpsuk.fsf-+imSwln9KH6u2/kzUuoCbdi2O/JbrIOy@public.gmane.org>
    2009-10-23 19:21                                   ` Sukadev Bhattiprolu
         [not found]                                     ` <20091023192124.GA11088-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-23 20:48                                       ` Sukadev Bhattiprolu
         [not found]                                     ` <20091023204812.GA26524@us.ibm.com>
         [not found]                                       ` <20091023204812.GA26524-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
    2009-10-23 23:26                                         ` Eric W. Biederman
         [not found]                                       ` <m1y6n1lmk7.fsf@fess.ebiederm.org>
         [not found]                                         ` <m1y6n1lmk7.fsf-+imSwln9KH6u2/kzUuoCbdi2O/JbrIOy@public.gmane.org>
    2009-10-24  3:38                                           ` Sukadev Bhattiprolu
         [not found]                               ` <4AE20124.4010108@librato.com>
         [not found]                                 ` <4AE20124.4010108-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org>
    2009-10-23 19:34                                   ` Oren Laadan
         [not found]                                 ` <4AE20532.6060809@librato.com>
         [not found]                                   ` <4AE20532.6060809-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org>
    2009-10-23 23:12                                     ` Eric W. Biederman
         [not found]         ` <4ADCDE7F.4090501-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org>
    2009-10-20  0:51           ` Matt Helsley
    2009-10-21 15:53           ` Daniel Lezcano
         [not found]         ` <4ADF2E75.1020801@free.fr>
         [not found]           ` <4ADF2E75.1020801-GANU6spQydw@public.gmane.org>
    2009-10-21 18:45             ` Oren Laadan
         [not found]           ` <4ADF56D4.8030405@librato.com>
         [not found]             ` <4ADF56D4.8030405-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org>
    2009-10-22 11:22               ` Daniel Lezcano
    2009-10-13  4:49 Sukadev Bhattiprolu
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox