btrfs: never return true for reads in btrfs_use_zone_append
authorChristoph Hellwig <hch@lst.de>
Mon, 12 Dec 2022 07:37:22 +0000 (08:37 +0100)
committerDavid Sterba <dsterba@suse.com>
Wed, 15 Feb 2023 18:38:55 +0000 (19:38 +0100)
Using Zone Append only makes sense for writes to the device, so check
that in btrfs_use_zone_append.  This avoids the possibility of
artificially limited read size on zoned file systems.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/zoned.c

index 8824748..442bb79 100644 (file)
@@ -1641,6 +1641,9 @@ bool btrfs_use_zone_append(struct btrfs_bio *bbio)
        if (!is_data_inode(&inode->vfs_inode))
                return false;
 
+       if (btrfs_op(&bbio->bio) != BTRFS_MAP_WRITE)
+               return false;
+
        /*
         * Using REQ_OP_ZONE_APPNED for relocation can break assumptions on the
         * extent layout the relocation code has.