From: Karel Zak Date: Mon, 1 Sep 2014 13:01:34 +0000 (+0200) Subject: libfdisk: (gpt) follow label-id from script X-Git-Tag: v2.26-rc1~470 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4b43f7c96be88b65cf84c8757dc05fb87024468a;p=thirdparty%2Futil-linux.git libfdisk: (gpt) follow label-id from script Signed-off-by: Karel Zak --- diff --git a/libfdisk/src/gpt.c b/libfdisk/src/gpt.c index 5b06159a48..082dcadce7 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 69efe4113c..5b0548f7a8 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; }