> > >> ---
> > >>  net/xdp/xdp_umem.c | 6 ++----
> > >>  1 file changed, 2 insertions(+), 4 deletions(-)
> > >>
> > >> diff --git a/net/xdp/xdp_umem.c b/net/xdp/xdp_umem.c index
> > >> 5ab236c5c9a5..25e1e76654a8 100644
> > >> --- a/net/xdp/xdp_umem.c
> > >> +++ b/net/xdp/xdp_umem.c
> > >> @@ -265,10 +265,8 @@ static int xdp_umem_pin_pages(struct
> xdp_umem *umem)
> > >>         if (!umem->pgs)
> > >>                 return -ENOMEM;
> > >>
> > >> -       down_write(&current->mm->mmap_sem);
> > >> -       npgs = get_user_pages(umem->address, umem->npgs,
> > >> -                             gup_flags, &umem->pgs[0], NULL);
> > >> -       up_write(&current->mm->mmap_sem);
> > >> +       npgs = get_user_pages_fast(umem->address, umem->npgs,
> > >> +                                  gup_flags, &umem->pgs[0]);
> > >>
> > >
> > > Thanks for the patch!
> > >
> > > The lifetime of the pinning is similar to RDMA umem mapping, so
> > > isn't gup_longterm preferred?
> >
> > Seems reasonable from reading what gup_longterm seems to do. Davidlohr
> > or Dan, any thoughts on the above?
> 
> Yes, any gup where the lifetime of the corresponding put_page() is under
> direct control of userspace should be using the _longterm flavor to
> coordinate be careful in the presence of dax. In the dax case there is no page
> cache indirection to coordinate truncate vs page pins. Ira is looking to add a
> "fast + longterm" flavor for cases like this.

Yes I'm just about ready with a small patch set to add a GUP fast longterm.

I think this should wait for that series.

Ira
 

Reply via email to