On 2/7/19 3:38 PM, Jeff Moyer wrote: > Hi, Jens, > > Jens Axboe <axboe@xxxxxxxxx> writes: > >> For now, buffers must not be file backed. If file backed buffers are >> passed in, the registration will fail with -1/EOPNOTSUPP. This >> restriction may be relaxed in the future. > > [...] > >> + down_write(¤t->mm->mmap_sem); >> + pret = get_user_pages_longterm(ubuf, nr_pages, FOLL_WRITE, >> + pages, vmas); >> + if (pret == nr_pages) { >> + /* don't support file backed memory */ >> + for (j = 0; j < nr_pages; j++) { >> + struct vm_area_struct *vma = vmas[j]; >> + >> + if (vma->vm_file) { >> + ret = -EOPNOTSUPP; >> + break; >> + } >> + } > > Unfortunately, this suffers the same problem as FOLL_ANON. Huge pages > are backed by hugetlbfs, and vma->vm_file will be filled in. > > I guess you could check is_file_hugepages(vma->vm_file): > > if (vma->vm_file && > !is_file_hugepages(vma->vm_file)) { > ret = -EOPNOTSUPP; > break; > } > > That works for me. Thanks, that looks better. Fixed! -- Jens Axboe