dm persistent data: packed struct should have an aligned() attribute too
authorJoe Thornber <ejt@redhat.com>
Mon, 29 Mar 2021 15:34:57 +0000 (16:34 +0100)
committerMike Snitzer <snitzer@redhat.com>
Mon, 19 Apr 2021 16:48:12 +0000 (12:48 -0400)
Otherwise most non-x86 architectures (e.g. riscv, arm) will resort to
byte-by-byte access.

Cc: stable@vger.kernel.org
Signed-off-by: Joe Thornber <ejt@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/persistent-data/dm-btree-internal.h
drivers/md/persistent-data/dm-space-map-common.h

index d0c55916daa9a725cfda7c90bffb5775df15a6ac..b1788853a355258738b4d69daa9e5732e34d29eb 100644 (file)
@@ -34,12 +34,12 @@ struct node_header {
        __le32 max_entries;
        __le32 value_size;
        __le32 padding;
-} __packed;
+} __attribute__((packed, aligned(8)));
 
 struct btree_node {
        struct node_header header;
        __le64 keys[];
-} __packed;
+} __attribute__((packed, aligned(8)));
 
 
 /*
index 8de63ce39bdd53d099cb91eb50647f0d703d727a..87e17909ef5210729ff13b5594d0be82137deb36 100644 (file)
@@ -33,7 +33,7 @@ struct disk_index_entry {
        __le64 blocknr;
        __le32 nr_free;
        __le32 none_free_before;
-} __packed;
+} __attribute__ ((packed, aligned(8)));
 
 
 #define MAX_METADATA_BITMAPS 255
@@ -43,7 +43,7 @@ struct disk_metadata_index {
        __le64 blocknr;
 
        struct disk_index_entry index[MAX_METADATA_BITMAPS];
-} __packed;
+} __attribute__ ((packed, aligned(8)));
 
 struct ll_disk;
 
@@ -86,7 +86,7 @@ struct disk_sm_root {
        __le64 nr_allocated;
        __le64 bitmap_root;
        __le64 ref_count_root;
-} __packed;
+} __attribute__ ((packed, aligned(8)));
 
 #define ENTRIES_PER_BYTE 4
 
@@ -94,7 +94,7 @@ struct disk_bitmap_header {
        __le32 csum;
        __le32 not_used;
        __le64 blocknr;
-} __packed;
+} __attribute__ ((packed, aligned(8)));
 
 enum allocation_event {
        SM_NONE,