Gitweb:
http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=812e0828e4829c...
Commit: 812e0828e4829cb47e0a339b850371c0b10a1261
Parent: c8a30abbfa8ba51eb83b49f33bff3cbbac96d3a1
Author: Peter Rajnoha <prajnoha(a)redhat.com>
AuthorDate: Tue Mar 10 16:10:16 2015 +0100
Committer: Peter Rajnoha <prajnoha(a)redhat.com>
CommitterDate: Fri Aug 21 11:15:53 2015 +0200
report: add pv_in_use field to display whether PV is in use or not
For example:
$ pvs -o pv_name,vg_name,pv_in_use
PV VG InUse
/dev/sda vg used
/dev/sdb
/dev/sdc used
(sda is part of vg - it's used
sdb is not part of vg - it's not used
sdc is part of vg, but MDAs missing - it's used)
---
lib/report/columns.h | 1 +
lib/report/properties.c | 2 ++
lib/report/report.c | 16 ++++++++++++++++
lib/report/values.h | 1 +
4 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/lib/report/columns.h b/lib/report/columns.h
index fe9aad9..b29a93b 100644
--- a/lib/report/columns.h
+++ b/lib/report/columns.h
@@ -113,6 +113,7 @@ FIELD(LABEL, label, SIZ, "DevSize", dev, 7, devsize,
dev_size, "Size of underlyi
FIELD(LABEL, label, STR, "PV", dev, 10, dev_name, pv_name, "Name.",
0)
FIELD(LABEL, label, SIZ, "PMdaFree", type, 9, pvmdafree, pv_mda_free,
"Free metadata area space on this device in current units.", 0)
FIELD(LABEL, label, SIZ, "PMdaSize", type, 9, pvmdasize, pv_mda_size,
"Size of smallest metadata area on this device in current units.", 0)
+FIELD(LABEL, label, BIN, "PInUse", type, 6, pvinuse, pv_in_use, "Set if PV
is used.", 0)
FIELD(PVS, pv, NUM, "1st PE", pe_start, 7, size64, pe_start, "Offset to
the start of data on the underlying device.", 0)
FIELD(PVS, pv, SIZ, "PSize", id, 5, pvsize, pv_size, "Size of PV in
current units.", 0)
diff --git a/lib/report/properties.c b/lib/report/properties.c
index e38359b..76c7158 100644
--- a/lib/report/properties.c
+++ b/lib/report/properties.c
@@ -190,6 +190,8 @@ GET_PV_NUM_PROPERTY_FN(pv_ba_size, SECTOR_SIZE * pv->ba_size)
#define _pv_exported_get prop_not_implemented_get
#define _pv_missing_set prop_not_implemented_set
#define _pv_missing_get prop_not_implemented_get
+#define _pv_in_use_get prop_not_implemented_get
+#define _pv_in_use_set prop_not_implemented_set
#define _vg_permissions_set prop_not_implemented_set
#define _vg_permissions_get prop_not_implemented_get
diff --git a/lib/report/report.c b/lib/report/report.c
index a17af32..4b80eaf 100644
--- a/lib/report/report.c
+++ b/lib/report/report.c
@@ -2301,6 +2301,22 @@ static int _pvmdasize_disp(struct dm_report *rh, struct dm_pool
*mem,
return _size64_disp(rh, mem, field, &min_mda_size, private);
}
+static int _pvinuse_disp(struct dm_report *rh, struct dm_pool *mem,
+ struct dm_report_field *field,
+ const void *data, void *private)
+{
+ const struct label *label = (const struct label *) data;
+ struct lvmcache_info *info = label->info;
+ uint32_t ext_flags;
+
+ if (info) {
+ ext_flags = lvmcache_ext_flags(info);
+ return _binary_disp(rh, mem, field, ext_flags & PV_EXT_USED,
GET_FIRST_RESERVED_NAME(pv_in_use_y), private);
+ }
+
+ return _binary_undef_disp(rh, mem, field, private);
+}
+
static int _vgmdasize_disp(struct dm_report *rh, struct dm_pool *mem,
struct dm_report_field *field,
const void *data, void *private)
diff --git a/lib/report/values.h b/lib/report/values.h
index 728760c..ac01934 100644
--- a/lib/report/values.h
+++ b/lib/report/values.h
@@ -52,6 +52,7 @@ TYPE_RESERVED_VALUE(NUM, NOFLAG, num_undef_64, "Reserved value for
undefined num
FIELD_RESERVED_BINARY_VALUE(pv_allocatable, pv_allocatable, "",
"allocatable")
FIELD_RESERVED_BINARY_VALUE(pv_exported, pv_exported, "",
"exported")
FIELD_RESERVED_BINARY_VALUE(pv_missing, pv_missing, "", "missing")
+FIELD_RESERVED_BINARY_VALUE(pv_in_use, pv_in_use, "", "used",
"in use")
/* Reserved values for VG fields */
FIELD_RESERVED_BINARY_VALUE(vg_extendable, vg_extendable, "",
"extendable")