summaryrefslogtreecommitdiffstats
path: root/tools/vgextend.c
diff options
context:
space:
mode:
authorAlasdair Kergon <agk@redhat.com>2001-10-15 22:04:27 +0000
committerAlasdair Kergon <agk@redhat.com>2001-10-15 22:04:27 +0000
commitffb316211684c3dc235ba0bf3cf1a1a2adeb9185 (patch)
treec999ad9afdde9407c3b685d226f93bf7c5fcb642 /tools/vgextend.c
parentaa290eb285876fcf75fdaa2a256c3c287dbd534f (diff)
downloadlvm2-ffb316211684c3dc235ba0bf3cf1a1a2adeb9185.tar.gz
lvm2-ffb316211684c3dc235ba0bf3cf1a1a2adeb9185.tar.xz
lvm2-ffb316211684c3dc235ba0bf3cf1a1a2adeb9185.zip
vgextend
Diffstat (limited to 'tools/vgextend.c')
-rw-r--r--tools/vgextend.c86
1 files changed, 86 insertions, 0 deletions
diff --git a/tools/vgextend.c b/tools/vgextend.c
new file mode 100644
index 00000000..3b449bd2
--- /dev/null
+++ b/tools/vgextend.c
@@ -0,0 +1,86 @@
+/*
+ * 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"
+
+int vgextend(int argc, char **argv)
+{
+ char *vg_name;
+ struct volume_group *vg = NULL;
+
+ if (!argc) {
+ log_error("Please enter volume group name and "
+ "physical volume(s)");
+ return EINVALID_CMD_LINE;
+ }
+
+ if (argc == 1) {
+ log_error("Please enter physical volume(s)");
+ return EINVALID_CMD_LINE;
+ }
+
+ vg_name = argv[0];
+ argc--;
+ argv++;
+
+ log_verbose("Checking for volume group '%s'", vg_name);
+ if (!(vg = ios->vg_read(ios, vg_name))) {
+ log_error("Volume group '%s' not found.", vg_name);
+ return ECMD_FAILED;
+ }
+
+ if (!(vg->status & ACTIVE)) {
+ log_error("Volume group '%s' is not active.", vg_name);
+ return ECMD_FAILED;
+ }
+
+ if (!(vg->status & EXTENDABLE_VG)) {
+ log_error("Volume group '%s' is not extendable.", vg_name);
+ return ECMD_FAILED;
+ }
+
+/********** FIXME
+ log_print("maximum logical volume size is %s",
+ (dummy = lvm_show_size(LVM_LV_SIZE_MAX(vg) / 2, LONG)));
+ dbg_free(dummy);
+ dummy = NULL;
+**********/
+
+ /* extend vg */
+ if (!vg_extend(ios, vg, argc, argv))
+ return ECMD_FAILED;
+
+ /* ret > 0 */
+ log_verbose("Volume group '%s' will be extended by %d new "
+ "physical volumes", vg_name, argc);
+
+ /* store vg on disk(s) */
+ if (!ios->vg_write(ios, vg))
+ return ECMD_FAILED;
+
+/********* FIXME
+ if ((ret = do_autobackup(vg_name, vg)))
+ return ret;
+*********/
+
+ log_print("Volume group '%s' successfully extended", vg_name);
+
+ return 0;
+}