Re: [RFC 2.6.11-rc2-mm2 0/7] mm: manual page migration -- overviewII

From: Ray Bryant
Date: Tue Feb 22 2005 - 13:42:42 EST


Andi Kleen wrote:


How about you add the va_start, va_end but only accept them when pid is 0 (= current process). Otherwise enforce with EINVAL
that they are both 0. This way you could map the
shared object into the batch manager, migrate it there, then
mark it somehow to not be migrated further, and then
migrate the anonymous pages using migrate_pages(pid, ...)


We'd have to use up a struct page flag (PG_MIGRATED?) to mark
the page as migrated to keep the call to migrate_pages() for
the anonymous pages from migrating the pages again. Then we'd
have to have some way to clear PG_MIGRATED once all of the
migrate_pages() calls are complete (we can't have the anonymous
page migrate_pages() calls clear the flags, since the second
such call would find the flag clear and remigrate the pages
in the overlapping nodes case.)

How about ignoring the va_start and va_end values unless
either:

pid == current->pid
or current->euid == 0 /* we're root */

I like the first check a bit better than checking for 0. Are
there other system calls that follow that convention (e. g.
pid = 0 implies current?)

The second check lets a sufficiently responsible task manipulate
other tasks. This task can choose to have the target tasks
suspended before it starts fussing with them.

BTW it might be better to make va_end a size, just to be more
symmetric with mlock,madvise,mmap et.al.


Yes,.that's been pointed out to me before. Let's make it so.

--
Best Regards,
Ray
-----------------------------------------------
Ray Bryant
512-453-9679 (work) 512-507-7807 (cell)
raybry@xxxxxxx raybry@xxxxxxxxxxxxx
The box said: "Requires Windows 98 or better",
so I installed Linux.
-----------------------------------------------
-
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/