summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Rajnoha <prajnoha@redhat.com>2015-08-17 11:40:17 +0200
committerPeter Rajnoha <prajnoha@redhat.com>2016-02-03 17:40:31 +0100
commitfaef76521e8b8f7819e13714677d9bb662e6da90 (patch)
tree358987baafda75dea8eefb3d02ac20da6ec8f6ef
parentfc1ab4b831cf064cc3a564eb95cf39193993d7a0 (diff)
downloadlvm2-faef76521e8b8f7819e13714677d9bb662e6da90.tar.gz
report: add lv_removed field to identify removed LVs
The lv_removed reporting field is a simple binary field that reports whether an LV is removed ("removed" value or value of "1" displayed) or not (blank string "" or value of "0" displayed).
-rw-r--r--lib/report/columns.h1
-rw-r--r--lib/report/properties.c2
-rw-r--r--lib/report/report.c10
3 files changed, 12 insertions, 1 deletions
diff --git a/lib/report/columns.h b/lib/report/columns.h
index d1162461f..78146deb5 100644
--- a/lib/report/columns.h
+++ b/lib/report/columns.h
@@ -97,6 +97,7 @@ FIELD(LVS, lv, TIM, "CTime", lvid, 26, lvtime, lv_time, "Creation time of the LV
FIELD(LVS, lv, TIM, "RTime", lvid, 26, lvtimeremoved, lv_time_removed, "Removal time of the LV, if known", 0)
FIELD(LVS, lv, STR, "Host", lvid, 10, lvhost, lv_host, "Creation host of the LV, if known.", 0)
FIELD(LVS, lv, STR_LIST, "Modules", lvid, 7, modules, lv_modules, "Kernel device-mapper modules required for this LV.", 0)
+FIELD(LVS, lv, BIN, "Removed", lvid, 8, lvremoved, lv_removed, "Set if the LV is removed.", 0)
FIELD(LVSINFO, lv, SNUM, "KMaj", lvid, 4, lvkmaj, lv_kernel_major, "Currently assigned major number or -1 if LV is not active.", 0)
FIELD(LVSINFO, lv, SNUM, "KMin", lvid, 4, lvkmin, lv_kernel_minor, "Currently assigned minor number or -1 if LV is not active.", 0)
diff --git a/lib/report/properties.c b/lib/report/properties.c
index d53cf2979..863acc61f 100644
--- a/lib/report/properties.c
+++ b/lib/report/properties.c
@@ -247,6 +247,8 @@ GET_PV_NUM_PROPERTY_FN(pv_ba_size, SECTOR_SIZE * pv->ba_size)
#define _lv_health_status_get prop_not_implemented_get
#define _lv_skip_activation_set prop_not_implemented_set
#define _lv_skip_activation_get prop_not_implemented_get
+#define _lv_removed_set prop_not_implemented_set
+#define _lv_removed_get prop_not_implemented_get
#define _cache_total_blocks_set prop_not_implemented_set
#define _cache_total_blocks_get prop_not_implemented_get
diff --git a/lib/report/report.c b/lib/report/report.c
index 42135dc34..2b0045f1d 100644
--- a/lib/report/report.c
+++ b/lib/report/report.c
@@ -1738,7 +1738,7 @@ static int _lvnameremoved_disp(struct dm_report *rh, struct dm_pool *mem,
if (!lv_is_dead(lv))
return _string_disp(rh, mem, field, &blank_name, private);
- return _string_disp(rh, mem, field, &lv->this_glv->dead->dname, private);
+ return _lvname_disp(rh, mem, field, &lv->this_glv->dead->dname, private);
}
static int _lvfullname_disp(struct dm_report *rh, struct dm_pool *mem,
@@ -3336,6 +3336,14 @@ static int _lvskipactivation_disp(struct dm_report *rh, struct dm_pool *mem,
return _binary_disp(rh, mem, field, skip_activation, "skip activation", private);
}
+static int _lvremoved_disp(struct dm_report *rh, struct dm_pool *mem,
+ struct dm_report_field *field,
+ const void *data, void *private)
+{
+ const struct logical_volume *lv = (const struct logical_volume *) data;
+ return _binary_disp(rh, mem, field, lv_is_dead(lv), "removed", private);
+}
+
/*
* Macro to generate '_cache_<cache_status_field_name>_disp' reporting function.
* The 'cache_status_field_name' is field name from struct dm_cache_status.