diff options
author | Alasdair Kergon <agk@redhat.com> | 2012-01-10 02:03:31 +0000 |
---|---|---|
committer | Alasdair Kergon <agk@redhat.com> | 2012-01-10 02:03:31 +0000 |
commit | 2e5ff5d11c362468060df519598f6790f0491ffd (patch) | |
tree | c828be890d0d1aac643610f6407e64bb98186f92 /libdm/libdm-common.c | |
parent | 7afa7b079c395514fba93677938e950ebc5566e8 (diff) | |
download | lvm2-2e5ff5d11c362468060df519598f6790f0491ffd.tar.gz lvm2-2e5ff5d11c362468060df519598f6790f0491ffd.tar.xz lvm2-2e5ff5d11c362468060df519598f6790f0491ffd.zip |
Add dm_uuid_prefix/dm_set_uuid_prefix for non-lvm users to override hard-coded
LVM- prefix.
Try harder not to leave stray empty devices around (locally or remotely) when
reverting changes after failures while there are inactive tables.
Diffstat (limited to 'libdm/libdm-common.c')
-rw-r--r-- | libdm/libdm-common.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/libdm/libdm-common.c b/libdm/libdm-common.c index 1ff69bde..516e77c5 100644 --- a/libdm/libdm-common.c +++ b/libdm/libdm-common.c @@ -61,6 +61,9 @@ static char _dm_dir[PATH_MAX] = DEV_DIR DM_DIR; static char _sysfs_dir[PATH_MAX] = "/sys/"; static char _path0[PATH_MAX]; /* path buffer, safe 4kB on stack */ +#define DM_MAX_UUID_PREFIX_LEN 15 +static char _default_uuid_prefix[DM_MAX_UUID_PREFIX_LEN + 1] = "LVM-"; + static int _verbose = 0; static int _suspended_dev_counter = 0; @@ -1139,6 +1142,29 @@ const char *dm_sysfs_dir(void) return _sysfs_dir; } +/* + * Replace existing uuid_prefix provided it isn't too long. + */ +int dm_set_uuid_prefix(const char *uuid_prefix) +{ + if (!uuid_prefix) + return_0; + + if (strlen(uuid_prefix) > DM_MAX_UUID_PREFIX_LEN) { + log_error("New uuid prefix %s too long.", uuid_prefix); + return 0; + } + + strcpy(_default_uuid_prefix, uuid_prefix); + + return 1; +} + +const char *dm_uuid_prefix(void) +{ + return _default_uuid_prefix; +} + int dm_device_has_holders(uint32_t major, uint32_t minor) { char sysfs_path[PATH_MAX]; |