RE: [PATCH 1/2] xsk: do not use mmap_sem

From: Weiny, Ira
Date: Mon Feb 11 2019 - 12:16:18 EST


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