Hello! I've been looking at a strange performance issue with a fuse filesystem that showed up when upgrading the system it runs on from CentOS 7 to Rocky 8. We've narrowed it down to what looks like an extra write issued by fuse, but don't see any reason why that should happen. Here are the particulars for the narrowed down test: * The Centos 7 box is running kernel 3.10.0-1160.el7.x86_64 and fuse 2.9.2-11.el7 (i.e. the stock distro kernel and fuse from Centos 7). * We run fusexmp: [root@localhost ~]# ./fusexmp -obig_writes /mnt/passthrough/ * We do two 4000-byte writes to the passthrough filesystem: # dd if=/dev/zero of=/mnt/passthrough/mnt/cache/file1 bs=4000 count=2 2+0 records in 2+0 records out 8000 bytes (8.0 kB) copied, 0.00174133 s, 4.6 MB/s * strace shows that this translates to two 4000-byte writes via the fuse filesystem: [pid 9795] pwrite64(4, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4000, 0) = 4000 [pid 9795] pwrite64(4, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4000, 4000) = 4000 So far, so good and everything makes sense, Now Rocky 8: * The Rocky 8 box is running kernel 4.18.0-513.24.1.el8_9.x86_64 and fuse 2.9.7-17.el8 (i.e. again, the stock distro kernel and fuse for Rocky 8). * We run passthrough: [root@localhost example]# ./passthrough /mnt/passthrough/ * We do the same two 4000-byte writes to the passthrough filesystem: [root@localhost example]# dd if=/dev/zero of=/mnt/passthrough/mnt/cache/file1 bs=4000 count=2 2+0 records in 2+0 records out 8000 bytes (8.0 kB, 7.8 KiB) copied, 0.00227022 s, 3.5 MB/s * But, and here's the unexpected piece, strace shows that this translates to a single 4000-byte write, a 96-byte write, and then a 3904-byte write via the fuse filesystem: [pid 62909] pwrite64(8, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4000, 0) = 4000 [pid 62909] pwrite64(8, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 96, 4000) = 96 [pid 62910] pwrite64(8, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 3904, 4096) = 3904 Can anyone help explain why one of the 4000-byte writes is being split into a 96-byte and then 3904-byte write? Thanks, Daphne