2 * Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
3 * Copyright (C) 2004-2007 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 static int vgdisplay_single(struct cmd_context *cmd, const char *vg_name,
19 struct volume_group *vg,
20 void *handle __attribute__((unused)))
22 /* FIXME Do the active check here if activevolumegroups_ARG ? */
23 vg_check_status(vg, EXPORTED_VG);
25 if (arg_count(cmd, colon_ARG)) {
27 return ECMD_PROCESSED;
30 if (arg_count(cmd, short_ARG)) {
32 return ECMD_PROCESSED;
35 vgdisplay_full(vg); /* was vg_show */
37 if (arg_count(cmd, verbose_ARG)) {
38 vgdisplay_extents(vg);
40 process_each_lv_in_vg(cmd, vg, NULL, NULL, NULL, NULL,
41 (process_single_lv_fn_t)lvdisplay_full);
43 log_print("--- Physical volumes ---");
44 process_each_pv_in_vg(cmd, vg, NULL, NULL,
45 (process_single_pv_fn_t)pvdisplay_short);
48 check_current_backup(vg);
50 return ECMD_PROCESSED;
53 int vgdisplay(struct cmd_context *cmd, int argc, char **argv)
55 if (arg_count(cmd, columns_ARG)) {
56 if (arg_count(cmd, colon_ARG) ||
57 arg_count(cmd, activevolumegroups_ARG) ||
58 arg_count(cmd, short_ARG)) {
59 log_error("Incompatible options selected");
60 return EINVALID_CMD_LINE;
62 return vgs(cmd, argc, argv);
63 } else if (arg_count(cmd, aligned_ARG) ||
64 arg_count(cmd, noheadings_ARG) ||
65 arg_count(cmd, options_ARG) ||
66 arg_count(cmd, separator_ARG) ||
67 arg_count(cmd, sort_ARG) || arg_count(cmd, unbuffered_ARG)) {
68 log_error("Incompatible options selected");
69 return EINVALID_CMD_LINE;
72 if (arg_count(cmd, colon_ARG) && arg_count(cmd, short_ARG)) {
73 log_error("Option -c is not allowed with option -s");
74 return EINVALID_CMD_LINE;
77 if (argc && arg_count(cmd, activevolumegroups_ARG)) {
78 log_error("Option -A is not allowed with volume group names");
79 return EINVALID_CMD_LINE;
82 /********* FIXME: Do without this - or else 2(+) passes!
83 Figure out longest volume group name
84 for (c = opt; opt < argc; opt++) {
85 len = strlen(argv[opt]);
91 return process_each_vg(cmd, argc, argv, 0, NULL,
94 /******** FIXME Need to count number processed
95 Add this to process_each_vg if arg_count(cmd,activevolumegroups_ARG) ?
99 if (arg_count(cmd,activevolumegroups_ARG))
101 printf("volume groups found\n\n");