btrfs: disable compressed readahead for subpage
authorQu Wenruo <wqu@suse.com>
Mon, 26 Jul 2021 06:34:52 +0000 (14:34 +0800)
committerDavid Sterba <dsterba@suse.com>
Mon, 23 Aug 2021 11:19:04 +0000 (13:19 +0200)
For current subpage support, we only support 64K page size with 4K
sector size.

This makes compressed readahead less effective, as maximum compressed
extent size is only 128K, 2x the page size.

On the other hand, the function add_ra_bio_pages() is still assuming
sectorsize == PAGE_SIZE, and code change may affect 4K page size
systems.

So for now, let's disable subpage compressed readahead for now.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/compression.c

index aeda426b612110cb3db16c1f3a393893b8a18c33..18579b904d5c31a09f9f6369bdc76ff2feae093b 100644 (file)
@@ -564,6 +564,16 @@ static noinline int add_ra_bio_pages(struct inode *inode,
        if (isize == 0)
                return 0;
 
+       /*
+        * For current subpage support, we only support 64K page size,
+        * which means maximum compressed extent size (128K) is just 2x page
+        * size.
+        * This makes readahead less effective, so here disable readahead for
+        * subpage for now, until full compressed write is supported.
+        */
+       if (btrfs_sb(inode->i_sb)->sectorsize < PAGE_SIZE)
+               return 0;
+
        end_index = (i_size_read(inode) - 1) >> PAGE_SHIFT;
 
        while (last_offset < compressed_end) {