diff --git a/btrfs-show-super.c b/btrfs-show-super.c index 45eb1024..3614c527 100644 --- a/btrfs-show-super.c +++ b/btrfs-show-super.c @@ -187,7 +187,7 @@ static void dump_superblock(struct btrfs_super_block *sb) s = (char *) &sb->magic; for (i = 0; i < 8; i++) putchar(isprint(s[i]) ? s[i] : '.'); - if (!memcmp(BTRFS_MAGIC, &sb->magic, 8)) + if (sb->magic == cpu_to_le64(BTRFS_MAGIC)) printf(" [match]\n"); else printf(" [DON'T MATCH]\n"); diff --git a/ctree.h b/ctree.h index d0f6062f..18b68e1b 100644 --- a/ctree.h +++ b/ctree.h @@ -28,7 +28,7 @@ struct btrfs_root; struct btrfs_trans_handle; -#define BTRFS_MAGIC "_BHRfS_M" +#define BTRFS_MAGIC 0x4D5F53665248425F /* ascii _BHRfS_M, no null */ #define BTRFS_MAX_LEVEL 8 diff --git a/disk-io.c b/disk-io.c index 0bf73f05..d3b8c518 100644 --- a/disk-io.c +++ b/disk-io.c @@ -932,8 +932,7 @@ int btrfs_read_dev_super(int fd, struct btrfs_super_block *sb, u64 sb_bytenr) return -1; if (btrfs_super_bytenr(&buf) != sb_bytenr || - strncmp((char *)(&buf.magic), BTRFS_MAGIC, - sizeof(buf.magic))) + buf.magic != cpu_to_le64(BTRFS_MAGIC)) return -1; memcpy(sb, &buf, sizeof(*sb)); @@ -951,8 +950,7 @@ int btrfs_read_dev_super(int fd, struct btrfs_super_block *sb, u64 sb_bytenr) /* if magic is NULL, the device was removed */ if (buf.magic == 0 && i == 0) return -1; - if (strncmp((char *)(&buf.magic), BTRFS_MAGIC, - sizeof(buf.magic))) + if (buf.magic != cpu_to_le64(BTRFS_MAGIC)) continue; if (!fsid_is_initialized) { diff --git a/utils.c b/utils.c index d92f3178..d2dec6fd 100644 --- a/utils.c +++ b/utils.c @@ -112,7 +112,7 @@ int make_btrfs(int fd, const char *device, const char *label, btrfs_set_super_bytenr(&super, blocks[0]); btrfs_set_super_num_devices(&super, 1); - strncpy((char *)&super.magic, BTRFS_MAGIC, sizeof(super.magic)); + super.magic = cpu_to_le64(BTRFS_MAGIC); btrfs_set_super_generation(&super, 1); btrfs_set_super_root(&super, blocks[1]); btrfs_set_super_chunk_root(&super, blocks[3]); @@ -1085,8 +1085,7 @@ int btrfs_device_already_in_root(struct btrfs_root *root, int fd, ret = 0; disk_super = (struct btrfs_super_block *)buf; - if (strncmp((char *)(&disk_super->magic), BTRFS_MAGIC, - sizeof(disk_super->magic))) + if (disk_super->magic != cpu_to_le64(BTRFS_MAGIC)) goto brelse; if (!memcmp(disk_super->fsid, root->fs_info->super_copy.fsid,