Re: [PATCH v6 12/14] mm/gup: longterm pin migration cleaup
From: Pavel Tatashin <pasha.tatashin@soleen.com>
Date: 2021-01-20 14:28:35
Also in:
linux-kselftest, linux-mm, lkml
From: Pavel Tatashin <pasha.tatashin@soleen.com>
Date: 2021-01-20 14:28:35
Also in:
linux-kselftest, linux-mm, lkml
On Wed, Jan 20, 2021 at 8:19 AM Jason Gunthorpe [off-list ref] wrote:
On Tue, Jan 19, 2021 at 08:43:31PM -0500, Pavel Tatashin wrote:quoted
When pages are longterm pinned, we must migrated them out of movable zone. The function that migrates them has a hidden loop with goto. The loop is to retry on isolation failures, and after successful migration. Make this code better by moving this loop to the caller. Signed-off-by: Pavel Tatashin <pasha.tatashin@soleen.com> mm/gup.c | 88 +++++++++++++++++++++++--------------------------------- 1 file changed, 36 insertions(+), 52 deletions(-)This looks OK, it is better Reviewed-by: Jason Gunthorpe <jgg@nvidia.com> I really dislike we always have to go over the page list twice in pin mode
I agree, I also dislike that we have to loop twice.
The is_pinnable_page() and LRU isolation should really be done inside __get_user_pages_locked() as each page is added to the output list But that is more of a larger issue than this series
We could also think about adding some optimization flags, i.e. clients could tell gup that the pinned memory content can be discarded FOLL_DISCARD. That way we could always allocate new pages in the right zones as we do with this series and free existing translations. No migration check would be necessary with such a flag.
Jason