summaryrefslogtreecommitdiffstats
path: root/libdm/libdm-common.c
diff options
context:
space:
mode:
authorAlasdair Kergon <agk@redhat.com>2012-01-10 02:03:31 +0000
committerAlasdair Kergon <agk@redhat.com>2012-01-10 02:03:31 +0000
commit2e5ff5d11c362468060df519598f6790f0491ffd (patch)
treec828be890d0d1aac643610f6407e64bb98186f92 /libdm/libdm-common.c
parent7afa7b079c395514fba93677938e950ebc5566e8 (diff)
downloadlvm2-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.c26
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];