Re: How much of a mess does OpenVZ make? ;) Was: What can OpenVZdo?

From: Alexey Dobriyan
Date: Thu Feb 26 2009 - 11:21:31 EST


Regarding interactions of C/R with other code:

1. trivia
1a. field in some datastructure is removed

technically, compilation breaks

Need to decide what to do -- from trivial compile fix
by removing code to ignoring some fields in dump image.

1b. field is added

This is likely to happen silently, so maintainers
will have to keep an eye on critical data structures
and general big changes in core kernel.

Need to decide what to do with new field --
anything from 'doesn't matter' to 'yeah, needs C/R part'
with dump format change.

2. non-trivia
2a. standalone subsystem added (say, network protocol)

If submitter sends C/R part -- excellent.
If he doesn't, well, don't forget to add tiny bit of check
and abort if said subsystem is in use.

2b. massacre inside some subsystem (say, struct cred introduction)

Likely, C/R non-trivially breaks both in compilation and
in working, requires non-trivial changes in algorithms and in
C/R dump image.

For some very core data structures dump file images should be made
fatter than needed to more future-proof, like
a) statistics in u64 regardless of in-kernel width.
b) ->vm_flags in image should be at least u64 and bits made append-only
so dump format would survive flags addition, removal and
renumbering.
and so on.



So I guess, at first C/R maintainers will take care of all of these issues
with default policy being 'return -E, implement C/R later',
but, ideally, C/R will have same rights as other kernel subsystem, so people
will make non-trivial changes in C/R as they make their own non-trivial
changes.

If last statement isn't acceptable, in-kernel C/R is likely doomed from
the start (especially given lack of in-kernel testsuite).
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/