This is an old revision of the document!
200808 DevSummit Cambridge
The 4 and a bit steps of vimage integration
General comments
- All commits go through vimage-commit2 branch step by step. Julian and Marko bringing in the basic set and reviewers are going to finalize and produce the patch.
- BjoernZeeb volunteered to keep an eye on the schedule, progress, …
- After step 2 we are going to provide a clean p4 branch people can use to branch their own working area off to virtualize other subsystems like
vimage.sysvipc. If you want to work on anything before this use the 'vimage' p4 branch (//depot/projects/vimage/…).
Timeline
- Step 1.5 and step 2 are planned to take about 2 weeks each with step 3 being done at latest before November 1st preferably before EuroBSDCon2008.
- We are going to reflect on this at the upcoming EuroBSDCon2008 DevSummit.
The 4.5 steps
1. [DONE] Apply the V_ macro prefix:
- NOP (non functional) change.
- Invalidates most of the patches out there.
TODO: document how to validate the pure style changes (KrisKennaway)
1.5. Further style changes (NOP) bringing in more infrastructure:
- Resolve file local statics with conflicting names.
- Import INIT_VNET_* as NOPs along with net/vnet.h, netinet/vinet.h, netinet6/vinet6.h, netgraph/vnetgraph.h, …, move #defins from vimage.h to those header files, make the macros NOPs in vimage.h. Put things into present header files.
- Import “V_SYSCTLs”, make them behave SYSCTLs w/o vimage for the moment. update man pages.
2. Move the globals into a struct (g.v):
- Make sure the macros from step 1.5 are no longer NOPs.
- Bring in per module constructor functions.
- Move globals to structs.
- Make it possible to revert to globals for the commit and remove that shortly afterwards.
3. Apply virtualization (g→v):
- Add destructor functions.
- Add iterator macros.
- Per vimage pointers.
- INIT_VNET_INET would start doing something.
4. Finish more subsystems
- That is where your hands are needed and when you need to know what to do!
- Reorder variables in structs for cache locality.
- James Gritton's management framework.
- User space application will be called jail(8). There will be a switch to flip the behavior from classical to new style.
- Syscalls will be called
jail_*. - In kernel structure will be called
struct vimage, notstruct prison.
Unvirtualized (or not finished) parts of the network stack
- …
- …
- …
General virtual talk on Sunday
- Jail is useful for name for virtualization for “branding”
- You have jail safe file systems, but you should be able to only allow some file systems to be mounted in a jail
- Perhaps only allow jexec instead of jattach since jattach is “ugly” and leave things from outside
- You want jails without processes hanging around e.g. if “jails” which just does forwarding
- Perhaps keep jail(8) for compat, and new jcreate(8) for advanced fancy jails. jail(8) is just a jcreate(8) wrapper