]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
btrfs: merge the two calls to btrfs_add_ordered_extent in run_delalloc_nocow
authorChristoph Hellwig <hch@lst.de>
Wed, 31 May 2023 07:53:56 +0000 (09:53 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 19 Jun 2023 11:59:36 +0000 (13:59 +0200)
Refactor run_delalloc_nocow a little bit so that there is only a single
call to btrfs_add_ordered_extent instead of two.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Josef Bacik <josef@toxicpanda.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 600086b8195d76fa28eaf11431d27fcfc16e8845..cc643565af4fc4040a9346b8834dbf92fcc55fec 100644 (file)
@@ -2140,6 +2140,7 @@ static noinline int run_delalloc_nocow(struct btrfs_inode *inode,
                u64 ram_bytes;
                u64 nocow_end;
                int extent_type;
+               bool is_prealloc;
 
                nocow = false;
 
@@ -2278,8 +2279,8 @@ out_check:
                }
 
                nocow_end = cur_offset + nocow_args.num_bytes - 1;
-
-               if (extent_type == BTRFS_FILE_EXTENT_PREALLOC) {
+               is_prealloc = extent_type == BTRFS_FILE_EXTENT_PREALLOC;
+               if (is_prealloc) {
                        u64 orig_start = found_key.offset - nocow_args.extent_offset;
                        struct extent_map *em;
 
@@ -2295,29 +2296,21 @@ out_check:
                                goto error;
                        }
                        free_extent_map(em);
-                       ret = btrfs_add_ordered_extent(inode,
-                                       cur_offset, nocow_args.num_bytes,
-                                       nocow_args.num_bytes,
-                                       nocow_args.disk_bytenr,
-                                       nocow_args.num_bytes, 0,
-                                       1 << BTRFS_ORDERED_PREALLOC,
-                                       BTRFS_COMPRESS_NONE);
-                       if (ret) {
+               }
+
+               ret = btrfs_add_ordered_extent(inode, cur_offset,
+                               nocow_args.num_bytes, nocow_args.num_bytes,
+                               nocow_args.disk_bytenr, nocow_args.num_bytes, 0,
+                               is_prealloc
+                               ? (1 << BTRFS_ORDERED_PREALLOC)
+                               : (1 << BTRFS_ORDERED_NOCOW),
+                               BTRFS_COMPRESS_NONE);
+               if (ret) {
+                       if (is_prealloc) {
                                btrfs_drop_extent_map_range(inode, cur_offset,
                                                            nocow_end, false);
-                               goto error;
                        }
-               } else {
-                       ret = btrfs_add_ordered_extent(inode, cur_offset,
-                                                      nocow_args.num_bytes,
-                                                      nocow_args.num_bytes,
-                                                      nocow_args.disk_bytenr,
-                                                      nocow_args.num_bytes,
-                                                      0,
-                                                      1 << BTRFS_ORDERED_NOCOW,
-                                                      BTRFS_COMPRESS_NONE);
-                       if (ret)
-                               goto error;
+                       goto error;
                }
 
                if (nocow) {