Messages in this thread | | | Date | Thu, 16 Mar 2006 17:04:14 -0800 (PST) | From | Linus Torvalds <> | Subject | Re: [patch] mspec - special memory driver and do_no_pfn handler |
| |
On Thu, 16 Mar 2006, Andrew Morton wrote: > > hm. Is that a superset of ->nopage? Should we be looking at > migrating over to ->nopfn, retire ->nopage? > > <looks at the ghastly stuff in do_no_page> > > Maybe not...
Yeah, absolutely _not_.
If we wouldn't pass the "struct page" around, we wouldn't have anything to synchronize with, and each nopage() function would have to do rmap stuff.
That's actually how nopage() worked a long time ago (not rmap, but it was up the the low-level function to do all the page table logic etc). Switching to returning a structured return value and letting the generic VM code handle all the locking and the races was a _huge_ improvement.
So yes, the modern "->nopage()" interface is less flexible, but it's less flexible for a very good reason.
Quite frankly, I don't think nopfn() is a good interface. It's only usable for one single thing, so trying to claim that it's a generic VM op is really not valid. If (and that's a big if) we need this interface, we should just do it inside mm/memory.c instead of playing games as if it was generic.
Linus - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |