Thread (114 messages) 114 messages, 16 authors, 2009-03-18

Re: What can OpenVZ do?

flat view

From: Ingo Molnar <hidden>
Date: 2009-02-18 18:19:13
Also in: linux-mm, lkml

* Alexey Dobriyan [off-list ref] wrote:
On Tue, Feb 17, 2009 at 04:40:39PM -0800, Dave Hansen wrote:
quoted
On Wed, 2009-02-18 at 01:32 +0100, Ingo Molnar wrote:
quoted
quoted
quoted
Uncheckpointable should be a one-way flag anyway. We want this 
to become usable, so uncheckpointable functionality should be as 
painful as possible, to make sure it's getting fixed ...
Again, as these patches stand, we don't support checkpointing 
when non-simple files are opened.  Basically, if a 
open()/lseek() pair won't get you back where you were, we 
don't deal with them.

init does non-checkpointable things.  If the flag is a one-way 
trip, we'll never be able to checkpoint because we'll always 
inherit init's ! checkpointable flag.

To fix this, we could start working on making sure we can 
checkpoint init, but that's practically worthless.
i mean, it should be per process (per app) one-way flag of 
course. If the app does something unsupported, it gets 
non-checkpointable and that's it.
OK, we can definitely do that.  Do you think it is OK to run through a
set of checks at exec() time to check if the app currently has any
unsupported things going on?  If we don't directly inherit the parent's
status, then we need to have *some* time when we check it.
Uncheckpointable is not one-way.

Imagine remap_file_pages(2) is unsupported. Now app uses 
remap_file_pages(2), then unmaps interesting VMA. Now app is 
checkpointable again.
But that's precisely the kind of over-design that defeats the 
common purpose: which would be to make everything 
checkpointable. (including weirdo APIs like fremap())

Nothing motivates more than app designers complaining about the 
one-way flag.

Furthermore, it's _far_ easier to make a one-way flag SMP-safe. 
We just set it and that's it. When we unset it, what do we about 
SMP races with other threads in the same MM installing another 
non-linear vma, etc.
As for overloading LSM, I think, it would be horrible. Most 
hooks are useless, there are config options expanding LSM 
hooks, and CPT and LSM are just totally orthogonal.
Sure it would have to be adopted to the needs of CPT, but i can 
tell you one thing for sure: there's only one thing that is 
worse than every syscall annotated with an LSM hook (which is 
the current status quo): every syscall annotated with an LSM 
hook _and_ a separate CPT hook.

It's just bad design. CPT might be orthogonal, but it wants to 
hook into syscalls at roughly the same places where LSM hooks 
into, which pretty much settles the question.

If there's places that need new hooks then we can add them not 
as CPT hooks, but as security hooks. That way there's synergy: 
both LSM and CPT advances, on the shoulders of each other.
Instead, just (no offence) get big enough coverage -- run 
modern and past distros, run servers packaged with them, and 
if you can checkpoint all of this, you're mostly fine.
That's definitely a good advice, just it doesnt give the kind of 
minimal environment from where productization efforts can be 
seeded from.

	Ingo

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help