summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGrzegorz Kostka <kostka.grzegorz@gmail.com>2018-03-01 19:58:03 +0100
committerGitHub <noreply@github.com>2018-03-01 19:58:03 +0100
commit96b4563a7ed9f603a6f66cbe21cbd1acb2f0294a (patch)
treea18f586eec116b1b3a27d40a4c0db992b37c0520 /src
parent66168642b95814725e1f6662729b112d80ab3abb (diff)
parent151cd9f6e9120e3c41600875c6cfa42dc1321a0b (diff)
Merge pull request #36 from mmmaisel/dev
Improvements from ext4-browser project
Diffstat (limited to 'src')
-rw-r--r--src/ext4_mbr.c6
-rw-r--r--src/ext4_mkfs.c3
2 files changed, 6 insertions, 3 deletions
diff --git a/src/ext4_mbr.c b/src/ext4_mbr.c
index 14fe252..0376545 100644
--- a/src/ext4_mbr.c
+++ b/src/ext4_mbr.c
@@ -59,7 +59,8 @@ struct ext4_part_entry {
};
struct ext4_mbr {
- uint8_t bootstrap[446];
+ uint8_t bootstrap[442];
+ uint32_t disk_id;
struct ext4_part_entry part_entry[4];
uint16_t signature;
};
@@ -126,7 +127,7 @@ int ext4_mbr_scan(struct ext4_blockdev *parent, struct ext4_mbr_bdevs *bdevs)
return r;
}
-int ext4_mbr_write(struct ext4_blockdev *parent, struct ext4_mbr_parts *parts)
+int ext4_mbr_write(struct ext4_blockdev *parent, struct ext4_mbr_parts *parts, uint32_t disk_id)
{
int r;
uint64_t disk_size;
@@ -157,6 +158,7 @@ int ext4_mbr_write(struct ext4_blockdev *parent, struct ext4_mbr_parts *parts)
struct ext4_mbr *mbr = (void *)parent->bdif->ph_bbuf;
memset(mbr, 0, sizeof(struct ext4_mbr));
+ mbr->disk_id = disk_id;
uint32_t cyl_it = 0;
for (int i = 0; i < 4; ++i) {
diff --git a/src/ext4_mkfs.c b/src/ext4_mkfs.c
index 649c272..0dfc91f 100644
--- a/src/ext4_mkfs.c
+++ b/src/ext4_mkfs.c
@@ -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));