mbox series

[0/1] fuse: fix direct io folio offset and length calculation

Message ID 20241211205556.1754646-1-joannelkoong@gmail.com (mailing list archive)
Headers show
Series fuse: fix direct io folio offset and length calculation | expand

Message

Joanne Koong Dec. 11, 2024, 8:55 p.m. UTC
As Malte noted in [1], there is an issue with commit 3b97c3652d91 ("fuse:
convert direct io to use folios"). This commit mistakenly assumed that all
folios encountered in fuse are one page size, but this is not true for the
direct io case.

This problem was found when running bcachefs as the rootfs on an Arch VM, and
installing FreeCAD with "flatpak install flathub org.freecad.FreeCAD".

Before this fix, the checksum was corrupted and installation fails:
 error: Failed to install org.kde.Platform: Error pulling from repo:
 While pulling runtime/org.kde.Platform/x86_64/6.7 from remote flathub:
 fsck content object
 886fd60617b81e81475db5e62beda5846d3e85fe77562eae536d2dd2a7af5b33:
 Corrupted file object; checksum
 expected='886fd60617b81e81475db5e62beda5846d3e85fe77562eae536d2dd2a7af5b33'
 actual='67f5a60d19f7a65e1ee272d455fed138b864be73399816ad18fa71319614a418'

After this fix, the installation succeeds.

A test case will be added for this (eg userspace opting into huge pages and
using O_DIRECT) as well, in a separate patchset.

[1] https://lore.kernel.org/linux-fsdevel/p3iss6hssbvtdutnwmuddvdadubrhfkdoosgmbewvo674f7f3y@cwnwffjqltzw/

Joanne Koong (1):
  fuse: fix direct io folio offset and length calculation

 fs/fuse/file.c | 28 ++++++++++++++++------------
 1 file changed, 16 insertions(+), 12 deletions(-)