#include "daemon.h"
#include "c-ctype.h"
#include "actions.h"
+#include "optgroups.h"
+
+int
+optgroup_lvm2_available (void)
+{
+ int r = access ("/sbin/lvm", X_OK);
+ return r == 0;
+}
/* LVM actions. Keep an eye on liblvm, although at the time
* of writing it hasn't progressed very far.
for (i = 3; i <= argc; ++i)
argv[i] = physvols[i-3];
- r = commandv (NULL, &err, (char **) argv);
+ r = commandv (NULL, &err, (const char * const*) argv);
if (r == -1) {
reply_with_error ("%s", err);
free (err);
for (i = 4; i <= argc; ++i)
argv[i] = volgroups[i-4];
- r = commandv (NULL, &err, (char **) argv);
+ r = commandv (NULL, &err, (const char * const*) argv);
if (r == -1) {
reply_with_error ("vgchange: %s", err);
free (err);
char *empty[] = { NULL };
return do_vg_activate (activate, empty);
}
+
+int
+do_lvrename (const char *logvol, const char *newlogvol)
+{
+ char *err;
+ int r;
+
+ r = command (NULL, &err,
+ "/sbin/lvm", "lvrename",
+ logvol, newlogvol, NULL);
+ if (r == -1) {
+ reply_with_error ("lvrename: %s -> %s: %s", logvol, newlogvol, err);
+ free (err);
+ return -1;
+ }
+
+ free (err);
+
+ udev_settle ();
+
+ return 0;
+}
+
+int
+do_vgrename (const char *volgroup, const char *newvolgroup)
+{
+ char *err;
+ int r;
+
+ r = command (NULL, &err,
+ "/sbin/lvm", "vgrename",
+ volgroup, newvolgroup, NULL);
+ if (r == -1) {
+ reply_with_error ("vgrename: %s -> %s: %s", volgroup, newvolgroup, err);
+ free (err);
+ return -1;
+ }
+
+ free (err);
+
+ udev_settle ();
+
+ return 0;
+}