diff options
author | Alasdair Kergon <agk@redhat.com> | 2001-10-15 22:04:27 +0000 |
---|---|---|
committer | Alasdair Kergon <agk@redhat.com> | 2001-10-15 22:04:27 +0000 |
commit | ffb316211684c3dc235ba0bf3cf1a1a2adeb9185 (patch) | |
tree | c999ad9afdde9407c3b685d226f93bf7c5fcb642 /tools/vgextend.c | |
parent | aa290eb285876fcf75fdaa2a256c3c287dbd534f (diff) | |
download | lvm2-ffb316211684c3dc235ba0bf3cf1a1a2adeb9185.tar.gz lvm2-ffb316211684c3dc235ba0bf3cf1a1a2adeb9185.tar.xz lvm2-ffb316211684c3dc235ba0bf3cf1a1a2adeb9185.zip |
vgextend
Diffstat (limited to 'tools/vgextend.c')
-rw-r--r-- | tools/vgextend.c | 86 |
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; +} |