The mighty Linux-VServer inclusion branch ========================================= The Goal -------- To reshape the Linux-VServer kernel patch into a series of patches that incrementally add features, for inclusion into the mainstream Linux 2.6 tree. To do so without requiring the core Linux VServer team to compromise on their primary objectives or waste time maintaining the umpteen different kernel versions this process will create. And finally, to do so without drifting from the core patch so much it makes lots more work for Herbert. The Plan -------- Note that the dependency order of these patches is not strictly linear; however git is not in a position to apply patch calculus, so this is probably hard information to extract :) All revisions will be committed with Herbert's name as the Author rather than myself, though technically I am the author of those revisions, Herbert is the real author of the work. Patches, by general category, with a rough expected order: 0. features that don't need vserver, but are in the patch anyway a. Bind Mount Extensions (mount --bind --ro) b. Kernel split (already included upstream! and with incorrect acknowledgement ;)) 1. core vserver patch - no features a. struct and ps addition; internal API and refcounting ** UP TO HERE ** b. syscall, and switch c. /proc visibility d. debugging e. history 2. isolation features a. IPC, semaphore, and signal restrictions b. proc/array filtering c. IPv4 chbind d. FS chroot() barrier e. general /proc filtering f. ptrace g. process admin: alloc_uid, find_user, sys_setpriority h. printk i. kthread 3. virtualisation features a. uts information b. initpid c. uptime d. load average e. ksyslog f. vshelper (reboot support) g. vroot (quota, fs IOCTL, etc) i. general PID virtualisation j. ngnet (network stack virtualisation) 4. resource tracking features a. scheduler tracking hook b. FS xid counting c. FS xid tagging d. ulimit e. RSS usage f. IO - async tracking 5. resource sharing features a. scheduling v1 - TBF and vavavoom b. FS - immutable linkage invert (immulink) c. disk scheduler integration d. RSS limits e. FS - mad cow 6. resource limit features a. scheduler b. rlimits c. disklimits Locations --------- The GIT repository for this project is at: http://utsl.gen.nz/vserver/vserver.git The patch stack for this project will be on the "vserver-inclusion" branch; it is exported to: http://utsl.gen.nz/vserver/patches-split/mine/2.6.N+git-vsi/ Where 2.6.N was the last release (or release candidate) of Linus' tree. This patch is NOT against any release you can download as a tarball :). Upstream (13thfloor.at) patches will be on the "vs2.1.x.y" branch, corresponding to their version number. The "upstream" patch that was used as a source will be under: http://utsl.gen.nz/vserver/patches-split/13thfloor/2.6.N-vs2.1.x.y/ And, for sanity checking, the result of my importing of the upstream quilt patch into stgit and re-exporting the branch via stgit will be at: http://utsl.gen.nz/vserver/patches-split/mine/2.6.N-vs2.1.x.y/ The file sizes may be a lot smaller from STGIT; it does not repeat filename info for each hunk like Quilt does, but if you diff the diffs you'll hopefully see the differences are minor. This file is http://utsl.gen.nz/vserver/patch-plan.txt Acknowledgements / Plug ----------------------- Other than the whole VServer crew, thanks go out to Catalyst IT (NZ) Limited for sponsoring my time on this project. http://www.catalyst.net.nz/