On 10/3/18 9:27 AM, Jan Kara wrote: > On Fri 28-09-18 20:12:33, John Hubbard wrote: >> static inline void release_user_pages(struct page **pages, >> - unsigned long npages) >> + unsigned long npages, >> + bool set_dirty) >> { >> - while (npages) >> - put_user_page(pages[--npages]); >> + if (set_dirty) >> + release_user_pages_dirty(pages, npages); >> + else >> + release_user_pages_basic(pages, npages); >> +} > > Is there a good reason to have this with set_dirty argument? Generally bool > arguments are not great for readability (or greppability for that matter). > Also in this case callers can just as easily do: > if (set_dirty) > release_user_pages_dirty(...); > else > release_user_pages(...); > > And furthermore it makes the code author think more whether he needs > set_page_dirty() or set_page_dirty_lock(), rather than just passing 'true' > and hoping the function magically does the right thing for him. > Ha, I went through *precisely* that argument in my head, too--and then got seduced with the idea that it pretties up the existing calling code, because it's a drop-in one-liner at the call sites. But yes, I'll change it back to omit the bool set_dirty argument. thanks, -- John Hubbard NVIDIA