* master - cache: enhance lvdisplay for cache volumes
@ 2017-03-10 18:37 Zdenek Kabelac
0 siblings, 0 replies; only message in thread
From: Zdenek Kabelac @ 2017-03-10 18:37 UTC (permalink / raw)
To: lvm-devel
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=52935b5834b6592acab1e68df18b9779de54033f
Commit: 52935b5834b6592acab1e68df18b9779de54033f
Parent: 4d2b1a06603d09e815af5bf8687972a000683841
Author: Zdenek Kabelac <zkabelac@redhat.com>
AuthorDate: Thu Mar 2 00:15:11 2017 +0100
Committer: Zdenek Kabelac <zkabelac@redhat.com>
CommitterDate: Fri Mar 10 19:33:01 2017 +0100
cache: enhance lvdisplay for cache volumes
Better support for lvdisplay.
By default info about running (in kernel) cache status is printed.
To get 'segtype' info, user runs: 'lvdisplay -m', example:
--- Logical volume ---
LV Path /dev/vg/lvol0
LV Name lvol0
VG Name vg
LV UUID Y4uWuN-TBGk-duer-aPWl-yBWn-iFFR-RU1gg1
LV Write Access read/write
LV Creation host, time linux, 2017-03-01 20:52:39 +0100
LV Cache pool name lvol2
LV Cache origin name lvol0_corig
LV Status available
# open 0
LV Size 12,00 MiB
Cache used blocks 10,42%
Cache metadata blocks 0,49%
Cache dirty blocks 0,00%
Cache read hits/misses 112 / 34
Cache wrt hits/misses 133 / 0
Cache demotions 0
Cache promotions 20
Current LE 3
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
--- Segments ---
Logical extents 0 to 2:
Type cache
Chunk size 64,00 KiB
Metadata format 1
Mode writethrough
Policy smq
Setting migration_threshold=100000
---
WHATS_NEW | 1 +
lib/cache_segtype/cache.c | 27 +++++++++++++++++++++++++++
lib/display/display.c | 35 +++++++++++++++++++++++++++++++++++
3 files changed, 63 insertions(+), 0 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 1cc3e13..ba17a10 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.169 -
=====================================
+ Lvdisplay [-m] shows more informations for cached volumes.
Add option for lvcreate/lvconvert --cachemetadataformat auto|1|2.
Support cache segment with configurable metadata format.
Add allocation/cache_metadata_format profilable setttings.
diff --git a/lib/cache_segtype/cache.c b/lib/cache_segtype/cache.c
index 3129783..55b4c6e 100644
--- a/lib/cache_segtype/cache.c
+++ b/lib/cache_segtype/cache.c
@@ -36,6 +36,31 @@ static unsigned _feature_mask;
log_error(t " segment %s of logical volume %s.", ## p, \
dm_config_parent_name(sn), seg->lv->name), 0;
+static int _cache_out_line(const char *line, void *_f)
+{
+ log_print(" Setting\t\t%s", line);
+
+ return 1;
+}
+
+static void _cache_display(const struct lv_segment *seg)
+{
+ const struct dm_config_node *n;
+ const struct lv_segment *pool_seg =
+ seg_is_cache_pool(seg) ? seg : first_seg(seg->pool_lv);
+
+ log_print(" Chunk size\t\t%s",
+ display_size(seg->lv->vg->cmd, pool_seg->chunk_size));
+ log_print(" Metadata format\t%u", pool_seg->cache_metadata_format);
+ log_print(" Mode\t\t%s", get_cache_mode_name(pool_seg));
+ log_print(" Policy\t\t%s", pool_seg->policy_name);
+
+ if ((n = pool_seg->policy_settings->child))
+ dm_config_write_node(n, _cache_out_line, NULL);
+
+ log_print(" ");
+}
+
/*
* When older metadata are loaded without newer settings,
* set then to default settings (the one that could have been
@@ -356,6 +381,7 @@ static int _modules_needed(struct dm_pool *mem,
#endif /* DEVMAPPER_SUPPORT */
static struct segtype_handler _cache_pool_ops = {
+ .display = _cache_display,
.text_import = _cache_pool_text_import,
.text_import_area_count = _cache_pool_text_import_area_count,
.text_export = _cache_pool_text_export,
@@ -519,6 +545,7 @@ static int _cache_add_target_line(struct dev_manager *dm,
#endif /* DEVMAPPER_SUPPORT */
static struct segtype_handler _cache_ops = {
+ .display = _cache_display,
.text_import = _cache_text_import,
.text_import_area_count = _cache_text_import_area_count,
.text_export = _cache_text_export,
diff --git a/lib/display/display.c b/lib/display/display.c
index f8dd338..a8bb5cc 100644
--- a/lib/display/display.c
+++ b/lib/display/display.c
@@ -386,6 +386,7 @@ int lvdisplay_full(struct cmd_context *cmd,
dm_percent_t thin_data_percent, thin_metadata_percent;
int thin_active = 0;
dm_percent_t thin_percent;
+ struct lv_status_cache *cache_status = NULL;
if (lv_is_historical(lv))
return _lvdisplay_historical_full(cmd, lv);
@@ -491,6 +492,19 @@ int lvdisplay_full(struct cmd_context *cmd,
seg = first_seg(lv);
log_print("LV Pool metadata %s", seg->metadata_lv->name);
log_print("LV Pool data %s", seg_lv(seg, 0)->name);
+ } else if (lv_is_cache_origin(lv)) {
+ log_print("LV origin of Cache LV %s",
+ get_only_segment_using_this_lv(lv)->lv->name);
+ } else if (lv_is_cache(lv)) {
+ seg = first_seg(lv);
+ if (inkernel && !lv_cache_status(lv, &cache_status))
+ return_0;
+ log_print("LV Cache pool name %s", seg->pool_lv->name);
+ log_print("LV Cache origin name %s", seg_lv(seg, 0)->name);
+ } else if (lv_is_cache_pool(lv)) {
+ seg = first_seg(lv);
+ log_print("LV Pool metadata %s", seg->metadata_lv->name);
+ log_print("LV Pool data %s", seg_lv(seg, 0)->name);
}
if (inkernel && info.suspended)
@@ -510,6 +524,27 @@ int lvdisplay_full(struct cmd_context *cmd,
display_size(cmd,
snap_seg ? snap_seg->origin->size : lv->size));
+ if (cache_status) {
+ log_print("Cache used blocks %.2f%%",
+ dm_percent_to_float(cache_status->data_usage));
+ log_print("Cache metadata blocks %.2f%%",
+ dm_percent_to_float(cache_status->metadata_usage));
+ log_print("Cache dirty blocks %.2f%%",
+ dm_percent_to_float(cache_status->dirty_usage));
+ log_print("Cache read hits/misses " FMTu64 " / " FMTu64,
+ cache_status->cache->read_hits,
+ cache_status->cache->read_misses);
+ log_print("Cache wrt hits/misses " FMTu64 " / " FMTu64,
+ cache_status->cache->write_hits,
+ cache_status->cache->write_misses);
+ log_print("Cache demotions " FMTu64,
+ cache_status->cache->demotions);
+ log_print("Cache promotions " FMTu64,
+ cache_status->cache->promotions);
+
+ dm_pool_destroy(cache_status->mem);
+ }
+
if (thin_data_active)
log_print("Allocated pool data %.2f%%",
dm_percent_to_float(thin_data_percent));
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2017-03-10 18:37 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-10 18:37 master - cache: enhance lvdisplay for cache volumes 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.