]> sourceware.org Git - lvm2.git/blame_incremental - tools/vgdisplay.c
metadata: use lv_hash in segment-specific metadata parsing
[lvm2.git] / tools / vgdisplay.c
... / ...
CommitLineData
1/*
2 * Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
3 * Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved.
4 *
5 * This file is part of LVM2.
6 *
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.
10 *
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
14 */
15
16#include "tools.h"
17
18static int _vgdisplay_single(struct cmd_context *cmd, const char *vg_name,
19 struct volume_group *vg,
20 struct processing_handle *handle __attribute__((unused)))
21{
22 if (arg_is_set(cmd, activevolumegroups_ARG) && !lvs_in_vg_activated(vg))
23 return ECMD_PROCESSED;
24
25 if (arg_is_set(cmd, colon_ARG)) {
26 vgdisplay_colons(vg);
27 return ECMD_PROCESSED;
28 }
29
30 if (arg_is_set(cmd, short_ARG)) {
31 vgdisplay_short(vg);
32 return ECMD_PROCESSED;
33 }
34
35 vgdisplay_full(vg); /* was vg_show */
36
37 if (arg_is_set(cmd, verbose_ARG)) {
38 vgdisplay_extents(vg);
39
40 process_each_lv_in_vg(cmd, vg, NULL, NULL, 0, NULL,
41 NULL, (process_single_lv_fn_t)lvdisplay_full);
42
43 log_print("--- Physical volumes ---");
44 process_each_pv_in_vg(cmd, vg, NULL,
45 (process_single_pv_fn_t)pvdisplay_short);
46 }
47
48 check_current_backup(vg);
49
50 return ECMD_PROCESSED;
51}
52
53int vgdisplay(struct cmd_context *cmd, int argc, char **argv)
54{
55 if (arg_is_set(cmd, columns_ARG)) {
56 if (arg_is_set(cmd, colon_ARG) ||
57 arg_is_set(cmd, activevolumegroups_ARG) ||
58 arg_is_set(cmd, short_ARG)) {
59 log_error("Incompatible options selected");
60 return EINVALID_CMD_LINE;
61 }
62 return vgs(cmd, argc, argv);
63 }
64
65 if (arg_is_set(cmd, aligned_ARG) ||
66 arg_is_set(cmd, binary_ARG) ||
67 arg_is_set(cmd, noheadings_ARG) ||
68 arg_is_set(cmd, options_ARG) ||
69 arg_is_set(cmd, separator_ARG) ||
70 arg_is_set(cmd, sort_ARG) ||
71 arg_is_set(cmd, unbuffered_ARG)) {
72 log_error("Incompatible options selected.");
73 return EINVALID_CMD_LINE;
74 }
75
76 if (arg_is_set(cmd, colon_ARG) && arg_is_set(cmd, short_ARG)) {
77 log_error("Option -c is not allowed with option -s");
78 return EINVALID_CMD_LINE;
79 }
80
81 if (argc && arg_is_set(cmd, activevolumegroups_ARG)) {
82 log_error("Option -A is not allowed with volume group names");
83 return EINVALID_CMD_LINE;
84 }
85
86/********* FIXME: Do without this - or else 2(+) passes!
87 Figure out longest volume group name
88 for (c = opt; opt < argc; opt++) {
89 len = strlen(argv[opt]);
90 if (len > max_len)
91 max_len = len;
92 }
93**********/
94
95 return process_each_vg(cmd, argc, argv, NULL, NULL, 0, 0, NULL,
96 _vgdisplay_single);
97
98/******** FIXME Need to count number processed
99 Add this to process_each_vg if arg_is_set(cmd,activevolumegroups_ARG) ?
100
101 if (opt == argc) {
102 log_print("no ");
103 if (arg_is_set(cmd,activevolumegroups_ARG))
104 printf("active ");
105 printf("volume groups found\n\n");
106 return LVM_E_NO_VG;
107 }
108************/
109}
This page took 0.026777 seconds and 6 git commands to generate.