2 * Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
3 * Copyright (C) 2004-2009 Red Hat, Inc. All rights reserved.
5 * This file is part of LVM2.
7 * This copyrighted material is made available to anyone wishing to use,
8 * modify, copy, or redistribute it subject to the terms and conditions
9 * of the GNU Lesser General Public License v.2.1.
11 * You should have received a copy of the GNU Lesser General Public License
12 * along with this program; if not, write to the Free Software Foundation,
13 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 int vgcfgrestore(struct cmd_context *cmd, int argc, char **argv)
23 vg_name = skip_dev_dir(cmd, argv[0], NULL);
24 if (!validate_name(vg_name)) {
25 log_error("Volume group name \"%s\" is invalid", vg_name);
28 } else if (!(arg_count(cmd, list_ARG) && arg_count(cmd, file_ARG))) {
29 log_error("Please specify a *single* volume group to restore.");
34 * FIXME: overloading the -l arg for now to display a
35 * list of archive files for a particular vg
37 if (arg_count(cmd, list_ARG)) {
38 if (!(arg_count(cmd,file_ARG) ?
39 archive_display_file(cmd,
40 arg_str_value(cmd, file_ARG, "")) :
41 archive_display(cmd, vg_name))) {
45 return ECMD_PROCESSED;
48 if (!lock_vol(cmd, vg_name, LCK_VG_WRITE)) {
49 log_error("Unable to lock volume group %s", vg_name);
53 if (!lock_vol(cmd, VG_ORPHANS, LCK_VG_WRITE)) {
54 log_error("Unable to lock orphans");
55 unlock_vg(cmd, vg_name);
59 cmd->handles_unknown_segments = 1;
61 if (!(arg_count(cmd, file_ARG) ?
62 backup_restore_from_file(cmd, vg_name,
63 arg_str_value(cmd, file_ARG, "")) :
64 backup_restore(cmd, vg_name))) {
65 unlock_vg(cmd, VG_ORPHANS);
66 unlock_vg(cmd, vg_name);
67 log_error("Restore failed.");
71 log_print("Restored volume group %s", vg_name);
73 unlock_vg(cmd, VG_ORPHANS);
74 unlock_vg(cmd, vg_name);
75 return ECMD_PROCESSED;