get_user_pages rewrite (completed, updated for 2.4.46)

From: Ingo Oeser (ingo.oeser@informatik.tu-chemnitz.de)
Date: Thu Nov 07 2002 - 05:08:40 EST


Hi Andrew,

now I have implemented the big get_user_pages rewrite. All the
patches apply to 2.4.46 so far.

Description of each patch (all called page_walk_api-2.5.46-XX):

01 - Implements the page walk api, staying as compatible, as
     possible to the user users. Introduces get_one_user_page()
     for the purpose, that the name suggests.
     
     The page iterator is called walk_user_pages().
     get_one_user_page() expects find_extend_vma() to be called first.
     This is necessary or at least a nice optimization anyway in
     all its callers.

     Doesn't work with CONFIG_HUGETLB_PAGE and warns about that.
     (02 removes that).

     Introduces OBSOLETE_PAGE_WALKER and some mess to catch
     callers of get_user_pages, which need to collect vmas.
     (05 removes that).

     Also demonstrate its benefits in make_pages_present().

02 - Implements a new follow_hugetlb_page() for i386,ia64,sparc64.
     Caveat: spin_lock(&mm->page_table_lock) is taken in this
        function, which wasn't needed before.
        Some contention analysis is welcome!

03 - Use the new function from 02 and support huge tlb pages now, too.

04 - Sprinkle the get_one_user_page() where only one page is needed.

05 - This patch requires the aio fix, which I sent out earlier
     today[1]. fs/aio.c called get_user_pages() with a wrong argument,
     causing buffer overflow and scribble on kernel memory.
     
     Here get_user_pages() is reduced by the last argument ("vmas"),
     because no remaining callers used it.
     
     I also sprinkled comments about optimizing with the new
     page walker API, where apropriate.

All in all, I still need to implement the reason for all this:

   A scatterlist page walker.
   
This will be done, if this stuff is accepted, because it
makes no sense without it.

The attached patchset supersedes the one I sent as page_walk_api[2].

Comments are very welcome.

Regards

Ingo Oeser

[1] Ben might post it together with his next AIO update, so
   linux-kernel please stay tuned. On linux-mm it has been
   posted.

[2] <20021104144937.H659@nightmaster.csn.tu-chemnitz.de>

-- 
Science is what we can tell a computer. Art is everything else. --- D.E.Knuth






- 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/



This archive was generated by hypermail 2b29 : Thu Nov 07 2002 - 22:00:47 EST