summaryrefslogtreecommitdiff
path: root/tools/vgexport.c
diff options
context:
space:
mode:
authorAlasdair Kergon <agk@redhat.com>2002-01-29 17:23:33 +0000
committerAlasdair Kergon <agk@redhat.com>2002-01-29 17:23:33 +0000
commitf53c6aa66ef8b5c75a4e43e6cf518f0ec9cd5cfe (patch)
treed8d7170bb389a01a14e0f2c49e4f339fd1d5c63e /tools/vgexport.c
parent14936c751efc3f3d5d692e5c7c7ff7ac5b0694e0 (diff)
downloadlvm2-f53c6aa66ef8b5c75a4e43e6cf518f0ec9cd5cfe.tar.gz
o Basic support for exporting (but importing not completed yet).
o When volume group does not have write flag set, prevent changes to it. o Preparation for partial activation (not completed yet).
Diffstat (limited to 'tools/vgexport.c')
-rw-r--r--tools/vgexport.c68
1 files changed, 68 insertions, 0 deletions
diff --git a/tools/vgexport.c b/tools/vgexport.c
new file mode 100644
index 000000000..9ece85a13
--- /dev/null
+++ b/tools/vgexport.c
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2001 Sistina Software
+ *
+ * LVM is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * LVM is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with LVM; see the file COPYING. If not, write to
+ * the Free Software Foundation, 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ */
+
+#include "tools.h"
+
+static int vgexport_single(const char *vg_name);
+
+int vgexport(int argc, char **argv)
+{
+ return process_each_vg(argc, argv, &vgexport_single);
+}
+
+static int vgexport_single(const char *vg_name)
+{
+ struct volume_group *vg;
+
+ if (!(vg = fid->ops->vg_read(fid, vg_name))) {
+ log_error("Unable to find volume group %s", vg_name);
+ return ECMD_FAILED;
+ }
+
+ if (vg->status & EXPORTED_VG) {
+ log_error("Volume group %s is already exported", vg_name);
+ return ECMD_FAILED;
+ }
+
+ if (!(vg->status & LVM_WRITE)) {
+ log_error("Volume group %s is read-only", vg_name);
+ return ECMD_FAILED;
+ }
+
+ if (lvs_in_vg_activated(vg)) {
+ log_error("Volume group %s has active logical volumes",
+ vg_name);
+ return ECMD_FAILED;
+ }
+
+ if (!archive(vg))
+ return ECMD_FAILED;
+
+ vg->status |= EXPORTED_VG;
+
+ if (!fid->ops->vg_write(fid,vg))
+ return ECMD_FAILED;
+
+ backup(vg);
+
+ log_print("Volume group %s successfully exported", vg->name);
+
+ return 0;
+}