summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorDavid Teigland <teigland@redhat.com>2022-12-08 16:42:04 -0600
committerDavid Teigland <teigland@redhat.com>2022-12-08 16:53:36 -0600
commitfa7fe5cbbe927d13a8b93aba24640ce5d8c11896 (patch)
treed60e60cc263ffe4357c24bcd0ab71b94a6e46268 /tools
parent9ce55a43d0165da9827e7b8e75bf25583a571e89 (diff)
downloadlvm2-fa7fe5cbbe927d13a8b93aba24640ce5d8c11896.tar.gz
writecache: support settings metadata_only and pause_writeback
Two new settings for tuning dm-writecache.
Diffstat (limited to 'tools')
-rw-r--r--tools/lvchange.c10
-rw-r--r--tools/toollib.c14
2 files changed, 24 insertions, 0 deletions
diff --git a/tools/lvchange.c b/tools/lvchange.c
index dfbefa000..db63eb9ea 100644
--- a/tools/lvchange.c
+++ b/tools/lvchange.c
@@ -665,6 +665,16 @@ static int _lvchange_writecache(struct cmd_context *cmd,
seg->writecache_settings.max_age = settings.max_age;
set_count++;
}
+ if (settings.metadata_only_set) {
+ seg->writecache_settings.metadata_only_set = settings.metadata_only_set;
+ seg->writecache_settings.metadata_only = settings.metadata_only;
+ set_count++;
+ }
+ if (settings.pause_writeback_set) {
+ seg->writecache_settings.pause_writeback_set = settings.pause_writeback_set;
+ seg->writecache_settings.pause_writeback = settings.pause_writeback;
+ set_count++;
+ }
if (settings.new_key && settings.new_val) {
seg->writecache_settings.new_key = settings.new_key;
seg->writecache_settings.new_val = settings.new_val;
diff --git a/tools/toollib.c b/tools/toollib.c
index ae6f311ba..d52c9e342 100644
--- a/tools/toollib.c
+++ b/tools/toollib.c
@@ -1473,6 +1473,20 @@ static int _get_one_writecache_setting(struct cmd_context *cmd, struct writecach
return 1;
}
+ if (!strncmp(key, "metadata_only", strlen("metadata_only"))) {
+ if (sscanf(val, "%u", &settings->metadata_only) != 1)
+ goto_bad;
+ settings->metadata_only_set = 1;
+ return 1;
+ }
+
+ if (!strncmp(key, "pause_writeback", strlen("pause_writeback"))) {
+ if (sscanf(val, "%u", &settings->pause_writeback) != 1)
+ goto_bad;
+ settings->pause_writeback_set = 1;
+ return 1;
+ }
+
if (settings->new_key) {
log_error("Setting %s is not recognized. Only one unrecognized setting is allowed.", key);
return 0;