Re: [PATCH v6 01/11] fuse: support copying large folios

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, May 14, 2025 at 7:06 PM Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote:
>
> On Wed, May 14, 2025 at 03:59:50PM -0700, Joanne Koong wrote:
> > On Tue, May 13, 2025 at 5:18 PM Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote:
> > > kmap_local_folio() only maps the page which contains 'offset'.
> > > following what the functions in highmem.h do, i'd suggest something
> > > like:
> > >
> > >                 if (folio) {
> > >                         void *mapaddr = kmap_local_folio(folio, offset);
> > >                         void *buf = mapaddr;
> > >
> > >                         if (folio_test_highmem(folio) &&
> > >                             size > PAGE_SIZE - offset_in_page(offset))
> > >                                 size = PAGE_SIZE - offset_in_page(offset);
> > >                         offset += fuse_copy_do(cs, &buf, &count);
> > >                         kunmap_local(mapaddr);
> > >
> > Ahh okay, I see, thanks. Do you think it makes sense to change
> > kmap_local_folio() to kmap all the pages in the folio if the folio is
> > in highmem instead of the caller needing to do that for each page in
> > the folio one by one? We would need a kunmap_local_folio() where we
> > pass in the folio so that we know how many pages need to be unmapped,
> > but it seems to me like with large folios, every caller will be
> > running into this issue, so maybe we should just have
> > kmap_local_folio() handle it?
>
> Spoken like someone who hasn't looked into the implementation of
> kmap_local at all ;-)
>
> Basically, this isn't possible.  There's only space for 16 pages to be
> mapped at once, and we might want to copy from one folio to another, so
> we'd be limited to a maximum folio order of 8.  Expanding the reserved
> space for kmap is hard because it's primarily used on 32-bit machines
> and we're very constrained in VA space.

Ah okay, I see, thanks.





[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux