]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
btrfs: set written super flag once in write_all_supers()
authorFilipe Manana <fdmanana@suse.com>
Tue, 3 Feb 2026 20:02:18 +0000 (20:02 +0000)
committerDavid Sterba <dsterba@suse.com>
Tue, 7 Apr 2026 16:55:54 +0000 (18:55 +0200)
In case we have multiple devices, there is no point in setting the written
flag in the super block on every iteration over the device list. Just do
it once before the loop.

Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/disk-io.c

index e4a2673ffeaa64486aad6e22cac031ca25b5722c..9f4f770c7da61387acbb601700e34d2319d0b8db 100644 (file)
@@ -4037,7 +4037,6 @@ int write_all_supers(struct btrfs_trans_handle *trans)
        int do_barriers;
        int max_errors;
        int total_errors = 0;
-       u64 flags;
 
        do_barriers = !btrfs_test_opt(fs_info, NOBARRIER);
 
@@ -4070,6 +4069,8 @@ int write_all_supers(struct btrfs_trans_handle *trans)
                }
        }
 
+       btrfs_set_super_flags(sb, btrfs_super_flags(sb) | BTRFS_HEADER_FLAG_WRITTEN);
+
        list_for_each_entry(dev, head, dev_list) {
                if (unlikely(!dev->bdev)) {
                        total_errors++;
@@ -4093,9 +4094,6 @@ int write_all_supers(struct btrfs_trans_handle *trans)
                memcpy(dev_item->fsid, dev->fs_devices->metadata_uuid,
                       BTRFS_FSID_SIZE);
 
-               flags = btrfs_super_flags(sb);
-               btrfs_set_super_flags(sb, flags | BTRFS_HEADER_FLAG_WRITTEN);
-
                ret = btrfs_validate_write_super(fs_info, sb);
                if (unlikely(ret < 0)) {
                        mutex_unlock(&fs_info->fs_devices->device_list_mutex);