diff options
author | Richard W.M. Jones <rjones@redhat.com> | 2012-07-25 10:29:58 +0100 |
---|---|---|
committer | Richard W.M. Jones <rjones@redhat.com> | 2012-07-25 14:47:15 +0100 |
commit | e64bf3fb2945e552d74bde43fb2ff4e1180b976b (patch) | |
tree | 5229b59c5d13f1d65be82dc2a8d184dcd441c9af /daemon | |
parent | 2b59b5f1d2e36b0ef84b7c7c9ab2c4b602f2ad91 (diff) | |
download | libguestfs-e64bf3fb2945e552d74bde43fb2ff4e1180b976b.tar.gz libguestfs-e64bf3fb2945e552d74bde43fb2ff4e1180b976b.tar.xz libguestfs-e64bf3fb2945e552d74bde43fb2ff4e1180b976b.zip |
New APIs: pvchange-uuid, pvchange-uuid-all, vgchange-uuid, vgchange-uuid-all.
These APIs will allow sysprep to change the UUIDs of all PVs and VGs
in the system.
LVs don't have UUIDs AFAICT, or at least there seems to be no way to
change them if they do have them.
Diffstat (limited to 'daemon')
-rw-r--r-- | daemon/lvm.c | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/daemon/lvm.c b/daemon/lvm.c index 06fdbff0..5f0c3a69 100644 --- a/daemon/lvm.c +++ b/daemon/lvm.c @@ -960,3 +960,87 @@ do_vgmeta (const char *vg, size_t *size_r) return buf; /* caller will free */ } + +int +do_pvchange_uuid (const char *device) +{ + char *err; + int r; + + r = command (NULL, &err, + "lvm", "pvchange", "-u", device, NULL); + if (r == -1) { + reply_with_error ("%s: %s", device, err); + free (err); + return -1; + } + + free (err); + + udev_settle (); + + return 0; +} + +int +do_pvchange_uuid_all (void) +{ + char *err; + int r; + + r = command (NULL, &err, + "lvm", "pvchange", "-u", "-a", NULL); + if (r == -1) { + reply_with_error ("%s", err); + free (err); + return -1; + } + + free (err); + + udev_settle (); + + return 0; +} + +int +do_vgchange_uuid (const char *vg) +{ + char *err; + int r; + + r = command (NULL, &err, + "lvm", "vgchange", "-u", vg, NULL); + if (r == -1) { + reply_with_error ("%s: %s", vg, err); + free (err); + return -1; + } + + free (err); + + udev_settle (); + + return 0; +} + +int +do_vgchange_uuid_all (void) +{ + char *err; + int r; + + r = command (NULL, &err, + "lvm", "vgchange", "-u", NULL); + if (r == -1) { + reply_with_error ("%s", err); + free (err); + return -1; + } + + free (err); + + udev_settle (); + + return 0; +} |