ext4_mkfs: Added UUID parameter to create new filesystems with non-zero UUID
authorMax Maisel <max.maisel@posteo.de>
Thu, 1 Mar 2018 16:31:32 +0000 (17:31 +0100)
committerMax Maisel <max.maisel@posteo.de>
Thu, 1 Mar 2018 16:57:53 +0000 (17:57 +0100)
include/ext4_mkfs.h
src/ext4_mkfs.c

index 2438e7d97b79c6781bde5f9a2f755346c9bde258..53f1820ab0b307150211e65ade0b72e7f7566d6d 100644 (file)
@@ -63,6 +63,7 @@ struct ext4_mkfs_info {
        uint16_t feat_incompat;
        uint32_t bg_desc_reserve_blocks;
        uint16_t dsc_size;
+       uint8_t uuid[UUID_SIZE];
        bool journal;
        const char *label;
 };
index 594205526bb3074776e00ad0668d1f2dcdb5a0d6..355b20a22d733959c2df4220178d6de61509bedd 100644 (file)
@@ -95,6 +95,7 @@ static int sb2info(struct ext4_sblock *sb, struct ext4_mkfs_info *info)
        info->label = sb->volume_name;
        info->len = (uint64_t)info->block_size * ext4_sb_get_blocks_cnt(sb);
        info->dsc_size = to_le16(sb->desc_size);
+       memcpy(info->uuid, sb->uuid, UUID_SIZE);
 
        return EOK;
 }
@@ -260,7 +261,7 @@ static void fill_sb(struct fs_aux_info *aux_info, struct ext4_mkfs_info *info)
        sb->features_incompatible = to_le32(info->feat_incompat);
        sb->features_read_only = to_le32(info->feat_ro_compat);
 
-       memset(sb->uuid, 0, sizeof(sb->uuid));
+       memcpy(sb->uuid, info->uuid, UUID_SIZE);
 
        memset(sb->volume_name, 0, sizeof(sb->volume_name));
        strncpy(sb->volume_name, info->label, sizeof(sb->volume_name));