Messages in this thread | | | Subject | Re: [linux-next RFC v2] mm/gup.c: Convert to use get_user_{page|pages}_fast_only() | From | John Hubbard <> | Date | Sun, 24 May 2020 18:06:55 -0700 |
| |
On 2020-05-23 21:27, Souptick Joarder wrote: > API __get_user_pages_fast() renamed to get_user_pages_fast_only() > to align with pin_user_pages_fast_only(). > > As part of this we will get rid of write parameter. Instead caller > will pass FOLL_WRITE to get_user_pages_fast_only(). This will not > change any existing functionality of the API. > > All the callers are changed to pass FOLL_WRITE.
This looks good. A few nits below, but with those fixed, feel free to add:
Reviewed-by: John Hubbard <jhubbard@nvidia.com>
> > There are few places where 1 is passed to 2nd parameter of > __get_user_pages_fast() and return value is checked for 1 > like [1]. Those are replaced with new inline > get_user_page_fast_only(). > > [1] if (__get_user_pages_fast(hva, 1, 1, &page) == 1) >
We try to avoid talking *too* much about the previous version of the code. Just enough. So, instead of the above two paragraphs, I'd compress it down to:
Also: introduce get_user_page_fast_only(), and use it in a few places that hard-code nr_pages to 1.
... > diff --git a/include/linux/mm.h b/include/linux/mm.h > index 93d93bd..8d4597f 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -1817,10 +1817,16 @@ extern int mprotect_fixup(struct vm_area_struct *vma, > /* > * doesn't attempt to fault and will return short. > */ > -int __get_user_pages_fast(unsigned long start, int nr_pages, int write, > - struct page **pages); > +int get_user_pages_fast_only(unsigned long start, int nr_pages, > + unsigned int gup_flags, struct page **pages);
Silly nit:
Can you please leave the original indentation in place? I don't normally comment about this, but I like the original indentation better, and it matches the pin_user_pages_fast() below, too.
... > @@ -2786,8 +2792,8 @@ static int internal_get_user_pages_fast(unsigned long start, int nr_pages, > * If the architecture does not support this function, simply return with no > * pages pinned. > */ > -int __get_user_pages_fast(unsigned long start, int nr_pages, int write, > - struct page **pages) > +int get_user_pages_fast_only(unsigned long start, int nr_pages, > + unsigned int gup_flags, struct page **pages)
Same thing here: you've changed the original indentation, which was (arguably, but to my mind anyway) more readable, and for no reason. It still would have fit within 80 cols.
I'm sure it's a perfect 50/50 mix of people who prefer either indentation style, and so for brand new code, I'll remain silent, as long as it is consistent with either itself and/or the surrounding code. But changing it back and forth is a bit aggravating, and best avoided. :)
thanks, -- John Hubbard NVIDIA
| |