All of lore.kernel.org
 help / color / mirror / Atom feed
* master - vdo: data percentage
@ 2018-07-09 13:35 Zdenek Kabelac
  0 siblings, 0 replies; only message in thread
From: Zdenek Kabelac @ 2018-07-09 13:35 UTC (permalink / raw)
  To: lvm-devel

Gitweb:        https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=44c99a882299b4a6d6d675df3db5a6ef481fa2a0
Commit:        44c99a882299b4a6d6d675df3db5a6ef481fa2a0
Parent:        5807993bbfedfc7a7c58de082c92811109c02ea0
Author:        Zdenek Kabelac <zkabelac@redhat.com>
AuthorDate:    Wed Jul 4 23:17:38 2018 +0200
Committer:     Zdenek Kabelac <zkabelac@redhat.com>
CommitterDate: Mon Jul 9 15:28:35 2018 +0200

vdo: data percentage

Display percentage of used virtual size of vdo-pool volume.
---
 lib/activate/activate.c          |   15 +++++++++++++++
 lib/metadata/lv.c                |    5 ++++-
 lib/metadata/metadata-exported.h |    1 +
 lib/metadata/vdo_manip.c         |    4 ++++
 4 files changed, 24 insertions(+), 1 deletions(-)

diff --git a/lib/activate/activate.c b/lib/activate/activate.c
index 0435139..28d67b4 100644
--- a/lib/activate/activate.c
+++ b/lib/activate/activate.c
@@ -798,6 +798,21 @@ int lv_info_with_seg_status(struct cmd_context *cmd,
 		lv_seg = find_snapshot(lv);
 	}
 
+	if (lv_is_vdo(lv)) {
+		if (!_lv_info(cmd, lv, 0, &status->info, NULL, NULL,
+			      with_open_count, with_read_ahead))
+			return_0;
+		if (status->info.exists) {
+			/* Status for VDO pool */
+			(void) _lv_info(cmd, seg_lv(lv_seg, 0), 1, NULL,
+					first_seg(seg_lv(lv_seg, 0)),
+					&status->seg_status, 0, 0);
+			/* Use VDO pool segtype result for VDO segtype */
+			status->seg_status.seg = lv_seg;
+		}
+		return 1;
+	}
+
 	return _lv_info(cmd, lv, 0, &status->info, lv_seg, &status->seg_status,
 			with_open_count, with_read_ahead);
 }
diff --git a/lib/metadata/lv.c b/lib/metadata/lv.c
index d8417bc..9c8b028 100644
--- a/lib/metadata/lv.c
+++ b/lib/metadata/lv.c
@@ -451,7 +451,10 @@ dm_percent_t lvseg_percent_with_info_and_seg_status(const struct lv_with_info_an
 		}
 		break;
 	case SEG_STATUS_VDO_POOL:
-		p = s->vdo_pool.usage;
+		if (seg_is_vdo_pool(lvdm->seg_status.seg))
+			p = s->vdo_pool.usage;
+		else
+			p = s->vdo_pool.data_usage;
 		break;
 	default:
 		p = DM_PERCENT_INVALID;
diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h
index b6ac4cb..92def2b 100644
--- a/lib/metadata/metadata-exported.h
+++ b/lib/metadata/metadata-exported.h
@@ -1257,6 +1257,7 @@ struct lv_status_vdo {
 	uint64_t logical_blocks_used;	/* grabbed from /sys/kvdo */
 	dm_percent_t usage;
 	dm_percent_t saving;
+	dm_percent_t data_usage;
 };
 
 const char *get_vdo_compression_state_name(enum dm_vdo_compression_state state);
diff --git a/lib/metadata/vdo_manip.c b/lib/metadata/vdo_manip.c
index 5801a1b..1286e84 100644
--- a/lib/metadata/vdo_manip.c
+++ b/lib/metadata/vdo_manip.c
@@ -141,6 +141,7 @@ int parse_vdo_pool_status(struct dm_pool *mem, const struct logical_volume *vdo_
 
 	status->usage = DM_PERCENT_INVALID;
 	status->saving = DM_PERCENT_INVALID;
+	status->data_usage = DM_PERCENT_INVALID;
 
 	if (!(dm_name = dm_build_dm_name(mem, vdo_pool_lv->vg->name,
 					 vdo_pool_lv->name, NULL))) {
@@ -170,6 +171,9 @@ int parse_vdo_pool_status(struct dm_pool *mem, const struct logical_volume *vdo_
 						result.status->total_blocks);
 		status->saving = dm_make_percent(status->logical_blocks_used - status->data_blocks_used,
 						 status->logical_blocks_used);
+		status->data_usage = dm_make_percent(status->data_blocks_used * DM_VDO_BLOCK_SIZE,
+						     first_seg(vdo_pool_lv)->vdo_pool_virtual_extents *
+						     (uint64_t) vdo_pool_lv->vg->extent_size);
 	}
 
 	return 1;



^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2018-07-09 13:35 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-09 13:35 master - vdo: data percentage Zdenek Kabelac

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.