Re: [PATCH 5/4] update ksm userspace interfaces

Chris Wright
2009-04-02T15:13:21Z

* Andrea Arcangeli (aarcange@redhat.com) wrote:
> On Wed, Apr 01, 2009 at 10:31:14PM -0700, Chris Wright wrote:
> > - register only ATM, can add MADV_UNSHAREABLE to allow an app to proactively
> > unregister, but need a cleanup when ->mm goes away via exit/exec
>
> The unregister cleanup must happen at the vma level (with unregister
> when vma goes away or is overwritten) for this to provide sane madvise
> semantics (not just in exit/exec, but in unmap/mmap too). Otherwise
> this is all but madvise. Basically we need a chunk of code in core VM
> when KSM=y/m, even if we keep returning -EINVAL when KSM=n (for
> backwards compatibility, -ENOSYS not). Example, vma must be split in
> two if you MAP_SHARABLE only part of it etc...

Yes, of course. I mentioned that (push whole thing into vma).
Current api is really at ->mm level, it's vma agnostic. Simply put:
watch for pages in this ->mm between start and start+len and (more or
less regardless of the vma). To do it purely at the vma level would
mean a vma unmap would cause the watch to go away. So, question is...do
we need something in ->mm as well (like mlockall)?