From 4b43f7c96be88b65cf84c8757dc05fb87024468a Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Mon, 1 Sep 2014 15:01:34 +0200 Subject: [PATCH] libfdisk: (gpt) follow label-id from script Signed-off-by: Karel Zak --- libfdisk/src/gpt.c | 13 +++++++++++-- libfdisk/src/script.c | 4 +++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/libfdisk/src/gpt.c b/libfdisk/src/gpt.c index 5b06159a4..082dcadce 100644 --- a/libfdisk/src/gpt.c +++ b/libfdisk/src/gpt.c @@ -505,6 +505,7 @@ static int gpt_mknew_header(struct fdisk_context *cxt, struct gpt_header *header, uint64_t lba) { uint64_t first, last; + int has_id = 0; if (!cxt || !header) return -ENOSYS; @@ -525,9 +526,17 @@ static int gpt_mknew_header(struct fdisk_context *cxt, header->last_usable_lba = cpu_to_le64(last); gpt_mknew_header_common(cxt, header, lba); - uuid_generate_random((unsigned char *) &header->disk_guid); - swap_efi_guid(&header->disk_guid); + if (cxt->script) { + const char *id = fdisk_script_get_header(cxt->script, "label-id"); + if (id && string_to_guid(id, &header->disk_guid) == 0) + has_id = 1; + } + + if (!has_id) { + uuid_generate_random((unsigned char *) &header->disk_guid); + swap_efi_guid(&header->disk_guid); + } return 0; } diff --git a/libfdisk/src/script.c b/libfdisk/src/script.c index 69efe4113..5b0548f7a 100644 --- a/libfdisk/src/script.c +++ b/libfdisk/src/script.c @@ -900,7 +900,7 @@ int test_apply(struct fdisk_test *ts, int argc, char *argv[]) int rc; cxt = fdisk_new_context(); - fdisk_assign_device(cxt, devname, 1); + fdisk_assign_device(cxt, devname, 0); dp = fdisk_new_script_from_file(cxt, scriptname); if (!dp) @@ -925,6 +925,8 @@ int test_apply(struct fdisk_test *ts, int argc, char *argv[]) done: fdisk_free_iter(itr); fdisk_unref_table(tb); + + /*fdisk_write_disklabel(cxt);*/ fdisk_unref_context(cxt); return 0; }