]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
btrfs: streamline code in run_delalloc_nocow in case of inline extents
authorNikolay Borisov <nborisov@suse.com>
Mon, 5 Aug 2019 14:47:06 +0000 (17:47 +0300)
committerDavid Sterba <dsterba@suse.com>
Mon, 9 Sep 2019 12:59:13 +0000 (14:59 +0200)
The extent range check right after the "out_check" label is redundant,
because the only way it can trigger is if we have an inline extent. In
this case it makes more sense to actually move it in the branch
explictly dealing with inlines extents.

What's more, the nested 'if (nocow)' can never be true because for
inline extents we always do COW and there is no chance 'nocow' can be
true, just remove that check.

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/inode.c

index 383ad5256f706ee7b7639260e8abf0d1bf6f25fd..aece5dd0e7a8a247697c8dab1b55364005b46d75 100644 (file)
@@ -1507,17 +1507,15 @@ static noinline int run_delalloc_nocow(struct inode *inode,
                                btrfs_file_extent_ram_bytes(leaf, fi);
                        extent_end = ALIGN(extent_end,
                                           fs_info->sectorsize);
+                       /* Skip extents outside of our requested range */
+                       if (extent_end <= start) {
+                               path->slots[0]++;
+                               goto next_slot;
+                       }
                } else {
                        BUG();
                }
 out_check:
-               /* Skip extents outside of our requested range */
-               if (extent_end <= start) {
-                       path->slots[0]++;
-                       if (nocow)
-                               btrfs_dec_nocow_writers(fs_info, disk_bytenr);
-                       goto next_slot;
-               }
                /*
                 * If nocow is false then record the beginning of the range
                 * that needs to be COWed