This diff adds a new command line option --uuid_override <> which allows the user to specify the UUID suffix used for device mapper operations. This seems to be the most sensible option since we still get the atomic behavior for a given UUID.
Usage
Suppose we have a VM composed of ldm_span_1 and ldm_span_2. Suppose we have a cloned VM composed of ldm_span_1.cpy and ldm_span_2.cpy.
Summary
See https://github.com/mdbooth/libldm/issues/24 for the problem statement.
This diff adds a new command line option
--uuid_override <>
which allows the user to specify the UUID suffix used for device mapper operations. This seems to be the most sensible option since we still get the atomic behavior for a given UUID.Usage
Suppose we have a VM composed of
ldm_span_1
andldm_span_2
. Suppose we have a cloned VM composed ofldm_span_1.cpy
andldm_span_2.cpy
.We can see both VMs have the same disk group GUID, although they are backed by different disks:
With ldmtool 0.2.4, we are able to create separate devices for each VM by renaming the device:
With ldmtool 0.2.5, this no longer works since we match by UUID instead of name:
With this diff, we are able to manually specify a UUID for use with device mapper so we can deduplicate the volumes:
--uuid_override
is not allowed for shell mode or multiple volumes:Implementation overview
ldmtool.c
, we introduce an_options_t
struct to hold the uuid override. This is done for readability and extendability purposes.main
function, we parse the UUID and pass the_options_t
struct down to the subcommand implementation_ldm_vol_action
._ldm_vol_action
, we set the UUID override for a single volume by callingldm_volume_override_uuid
._dm_vol_uuid
will return the override UUID instead of the volume GUID.make check