[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#15352: [PATCH 04/19] libparted: preserve the uuid on dm partitions (
From: |
Brian C. Lane |
Subject: |
bug#15352: [PATCH 04/19] libparted: preserve the uuid on dm partitions (#832145) |
Date: |
Wed, 11 Sep 2013 12:24:54 -0700 |
From: "Brian C. Lane" <address@hidden>
* libparted/arch/linux.c (_dm_add_partition): Set the uuid if there was
one.
---
libparted/arch/linux.c | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c
index 1c5faa5..375be83 100644
--- a/libparted/arch/linux.c
+++ b/libparted/arch/linux.c
@@ -2711,9 +2711,12 @@ static int
_dm_add_partition (PedDisk* disk, const PedPartition* part)
{
LinuxSpecific* arch_specific = LINUX_SPECIFIC (disk->dev);
- char *params = NULL;
- char *vol_name = NULL;
- uint32_t cookie = 0;
+ char* params = NULL;
+ char* vol_name = NULL;
+ const char* dev_name = NULL;
+ char* vol_uuid = NULL;
+ const char* dev_uuid = NULL;
+ uint32_t cookie = 0;
/* Get map name from devicemapper */
struct dm_task *task = dm_task_create (DM_DEVICE_INFO);
@@ -2727,7 +2730,7 @@ _dm_add_partition (PedDisk* disk, const PedPartition*
part)
if (!dm_task_run (task))
goto err;
- const char *dev_name = dm_task_get_name (task);
+ dev_name = dm_task_get_name (task);
size_t name_len = strlen (dev_name);
vol_name = zasprintf ("%s%s%d",
dev_name,
@@ -2736,6 +2739,11 @@ _dm_add_partition (PedDisk* disk, const PedPartition*
part)
if (vol_name == NULL)
goto err;
+ dev_uuid = dm_task_get_uuid (task);
+ if (dev_uuid && (strlen(dev_uuid) > 0)
+ && !(vol_uuid = zasprintf ("part%d-%s", part->num, dev_uuid)))
+ goto err;
+
/* Caution: dm_task_destroy frees dev_name. */
dm_task_destroy (task);
task = NULL;
@@ -2748,6 +2756,8 @@ _dm_add_partition (PedDisk* disk, const PedPartition*
part)
goto err;
dm_task_set_name (task, vol_name);
+ if (vol_uuid)
+ dm_task_set_uuid (task, vol_uuid);
dm_task_add_target (task, 0, part->geom.length,
"linear", params);
if (!dm_task_set_cookie (task, &cookie, 0))
@@ -2756,6 +2766,7 @@ _dm_add_partition (PedDisk* disk, const PedPartition*
part)
dm_task_update_nodes ();
dm_task_destroy (task);
free (params);
+ free (vol_uuid);
free (vol_name);
return 1;
} else {
@@ -2766,6 +2777,7 @@ err:
if (task)
dm_task_destroy (task);
free (params);
+ free (vol_uuid);
free (vol_name);
return 0;
}
--
1.8.3.1
- bug#15346: [PATCH 01/19] libparted: copy pmbr_boot when duplicating GPT disk, (continued)
- bug#15349: [PATCH 10/19] libparted: mklabel to support EDEV DASD, Brian C. Lane, 2013/09/11
- bug#15353: [PATCH 12/19] tests: rewrite t6001 to use /dev/mapper, Brian C. Lane, 2013/09/11
- bug#15351: [PATCH 09/19] libparted: Avoid dasd as default disk type while probe, Brian C. Lane, 2013/09/11
- bug#15352: [PATCH 04/19] libparted: preserve the uuid on dm partitions (#832145),
Brian C. Lane <=
- bug#15354: [PATCH 05/19] tests: Make sure dm UUIDs are not erased, Brian C. Lane, 2013/09/11
- bug#15355: [PATCH 02/19] tests: test creating 20 device-mapper partitions (#803108), Brian C. Lane, 2013/09/11
- bug#15356: [PATCH 03/19] libparted: use dm_udev_wait (#698121), Brian C. Lane, 2013/09/11
- bug#15356: [PATCH 08/19] libparted: mklabel to support EAV DASD, Brian C. Lane, 2013/09/11
- bug#15356: [PATCH 16/19] libparted: Recognize btrfs filesystem, Brian C. Lane, 2013/09/11
- bug#15356: [PATCH 06/19] libparted: add support for implicit FBA DASD partitions, Brian C. Lane, 2013/09/11
- bug#15356: [PATCH 14/19] libparted: Add UEFI System Partition flag., Brian C. Lane, 2013/09/11
- bug#15356: [PATCH 15/19] libparted: Add hfs_esp partition flag to GPT., Brian C. Lane, 2013/09/11
- bug#15356: [PATCH 13/19] libparted: Add Intel Rapid Start Technology partition flag., Brian C. Lane, 2013/09/11