On Thu, Jun 30, 2022 at 10:08:18PM +0900, Dominique MARTINET wrote: > Filipe Manana wrote on Thu, Jun 30, 2022 at 01:51:24PM +0100: > > > Please ask if there's any infos I could get you. > > > > Ok, maybe it's page fault related or there's something else besides page faults > > involved. > > > > Can you dump the subvolume tree like this: > > > > btrfs inspect-internal dump-tree -t 5 /dev/sda 2>&1 | xz -9 > dump.xz > > > > Here the 5 is the ID of the default subvolume. If the test file is on > > a different subvolume, you'll need to replace 5 with the subvolume's ID. > > Sure thing. > > It's 2MB compressed: > https://gaia.codewreck.org/local/tmp/dump-tree.xz Ok, the file has a mix of compressed and non-compressed extents. This may prevent the short reads (not tested yet): diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 7a54f964ff37..42fb56ed0021 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -7684,7 +7684,7 @@ static int btrfs_dio_iomap_begin(struct inode *inode, loff_t start, if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags) || em->block_start == EXTENT_MAP_INLINE) { free_extent_map(em); - ret = -ENOTBLK; + ret = (flags & IOMAP_NOWAIT) ? -EAGAIN : -ENOTBLK; goto unlock_err; } Can you give it a try? Thanks. > > > > This is just to look at the file extent layout. > > Also, then tell me what's the inode number of the file (or just its name, > > and I'll find out its inode number), and an example file offset and read > > length that triggers a short read, so that I know where to look at. > > There's just a single file in that subvolume, inode 257 > > > And btw, that dump-tree command will dump all file names, directory names > > and xattr names and values (if they are human readable) - so if privacy is > > a concern here, just pass --hide-names to the dump-tree command. > > (thanks for the warning) > -- > Dominique