]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Revert "btrfs: use proper endianness accessors for super_copy"
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 16 Mar 2018 14:00:50 +0000 (15:00 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 19 Mar 2018 08:09:48 +0000 (09:09 +0100)
This reverts commit 3c181c12c431fe33b669410d663beb9cceefcd1b as it
causes breakage on big endian systems with btrfs images.

Reported-by: Christoph Biedl <linux-kernel.bfrz@manchmal.in-ulm.de>
Cc: Anand Jain <anand.jain@oracle.com>
Cc: Liu Bo <bo.li.liu@oracle.com>
Cc: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/btrfs/sysfs.c
fs/btrfs/transaction.c

index 27baaff968800044c4706c452dc5137dadce61d9..a28bba801264d7f10ad0224b0f135cabba4c7979 100644 (file)
@@ -423,7 +423,7 @@ static ssize_t btrfs_nodesize_show(struct kobject *kobj,
 {
        struct btrfs_fs_info *fs_info = to_fs_info(kobj);
 
-       return snprintf(buf, PAGE_SIZE, "%u\n", fs_info->nodesize);
+       return snprintf(buf, PAGE_SIZE, "%u\n", fs_info->super_copy->nodesize);
 }
 
 BTRFS_ATTR(, nodesize, btrfs_nodesize_show);
@@ -433,7 +433,8 @@ static ssize_t btrfs_sectorsize_show(struct kobject *kobj,
 {
        struct btrfs_fs_info *fs_info = to_fs_info(kobj);
 
-       return snprintf(buf, PAGE_SIZE, "%u\n", fs_info->sectorsize);
+       return snprintf(buf, PAGE_SIZE, "%u\n",
+                       fs_info->super_copy->sectorsize);
 }
 
 BTRFS_ATTR(, sectorsize, btrfs_sectorsize_show);
@@ -443,7 +444,8 @@ static ssize_t btrfs_clone_alignment_show(struct kobject *kobj,
 {
        struct btrfs_fs_info *fs_info = to_fs_info(kobj);
 
-       return snprintf(buf, PAGE_SIZE, "%u\n", fs_info->sectorsize);
+       return snprintf(buf, PAGE_SIZE, "%u\n",
+                       fs_info->super_copy->sectorsize);
 }
 
 BTRFS_ATTR(, clone_alignment, btrfs_clone_alignment_show);
index 10d12b3de00124e3f20fb7236bf4e6722c0dfdc3..5a8c2649af2fa812a001eba8278a60babd2b841a 100644 (file)
@@ -1723,23 +1723,19 @@ static void update_super_roots(struct btrfs_fs_info *fs_info)
 
        super = fs_info->super_copy;
 
-       /* update latest btrfs_super_block::chunk_root refs */
        root_item = &fs_info->chunk_root->root_item;
-       btrfs_set_super_chunk_root(super, root_item->bytenr);
-       btrfs_set_super_chunk_root_generation(super, root_item->generation);
-       btrfs_set_super_chunk_root_level(super, root_item->level);
+       super->chunk_root = root_item->bytenr;
+       super->chunk_root_generation = root_item->generation;
+       super->chunk_root_level = root_item->level;
 
-       /* update latest btrfs_super_block::root refs */
        root_item = &fs_info->tree_root->root_item;
-       btrfs_set_super_root(super, root_item->bytenr);
-       btrfs_set_super_generation(super, root_item->generation);
-       btrfs_set_super_root_level(super, root_item->level);
-
+       super->root = root_item->bytenr;
+       super->generation = root_item->generation;
+       super->root_level = root_item->level;
        if (btrfs_test_opt(fs_info, SPACE_CACHE))
-               btrfs_set_super_cache_generation(super, root_item->generation);
+               super->cache_generation = root_item->generation;
        if (test_bit(BTRFS_FS_UPDATE_UUID_TREE_GEN, &fs_info->flags))
-               btrfs_set_super_uuid_tree_generation(super,
-                                                    root_item->generation);
+               super->uuid_tree_generation = root_item->generation;
 }
 
 int btrfs_transaction_in_commit(struct btrfs_fs_info *info)