btrfs: reorder conditions in btrfs_extract_ordered_extent
authorChristoph Hellwig <hch@lst.de>
Wed, 24 May 2023 15:03:10 +0000 (17:03 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 19 Jun 2023 11:59:33 +0000 (13:59 +0200)
There is no good reason for doing one before the other in terms of
failure implications, but doing the extent_map split first will
simplify some upcoming refactoring.

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

index aba6dba..f7e0683 100644 (file)
@@ -2719,9 +2719,7 @@ int btrfs_extract_ordered_extent(struct btrfs_bio *bbio,
 {
        u64 start = (u64)bbio->bio.bi_iter.bi_sector << SECTOR_SHIFT;
        u64 len = bbio->bio.bi_iter.bi_size;
-       struct btrfs_inode *inode = bbio->inode;
-       u64 ordered_len = ordered->num_bytes;
-       int ret = 0;
+       int ret;
 
        /* Must always be called for the beginning of an ordered extent. */
        if (WARN_ON_ONCE(start != ordered->disk_bytenr))
@@ -2731,18 +2729,18 @@ int btrfs_extract_ordered_extent(struct btrfs_bio *bbio,
        if (ordered->disk_num_bytes == len)
                return 0;
 
-       ret = btrfs_split_ordered_extent(ordered, len);
-       if (ret)
-               return ret;
-
        /*
         * Don't split the extent_map for NOCOW extents, as we're writing into
         * a pre-existing one.
         */
-       if (test_bit(BTRFS_ORDERED_NOCOW, &ordered->flags))
-               return 0;
+       if (!test_bit(BTRFS_ORDERED_NOCOW, &ordered->flags)) {
+               ret = split_extent_map(bbio->inode, bbio->file_offset,
+                                      ordered->num_bytes, len);
+               if (ret)
+                       return ret;
+       }
 
-       return split_extent_map(inode, bbio->file_offset, ordered_len, len);
+       return btrfs_split_ordered_extent(ordered, len);
 }
 
 /*