ext4_mbr: Added "disk_id" parameter to MBR creation function
authorMax Maisel <max.maisel@posteo.de>
Thu, 1 Mar 2018 16:28:40 +0000 (17:28 +0100)
committerMax Maisel <max.maisel@posteo.de>
Thu, 1 Mar 2018 16:57:50 +0000 (17:57 +0100)
include/ext4_mbr.h
src/ext4_mbr.c

index e9c5f75e1fd7b51462f4f79640a244ef7f7e7e79..97a445952210f339b95ec349708f255809040fec 100644 (file)
@@ -60,7 +60,7 @@ struct ext4_mbr_parts {
        uint8_t division[4];
 };
 
-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);
 
 #ifdef __cplusplus
 }
index 7cbbe8907ac9111f941901b8e5681d1c5c76b88d..4d95d0cada2f41bba00cc34ee63e3026e7115276 100644 (file)
@@ -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 = parent->part_size;
@@ -155,6 +156,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) {