diff options
author | David Teigland <teigland@redhat.com> | 2022-12-08 16:42:04 -0600 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2022-12-08 16:53:36 -0600 |
commit | fa7fe5cbbe927d13a8b93aba24640ce5d8c11896 (patch) | |
tree | d60e60cc263ffe4357c24bcd0ab71b94a6e46268 /lib | |
parent | 9ce55a43d0165da9827e7b8e75bf25583a571e89 (diff) | |
download | lvm2-fa7fe5cbbe927d13a8b93aba24640ce5d8c11896.tar.gz |
writecache: support settings metadata_only and pause_writeback
Two new settings for tuning dm-writecache.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/metadata/writecache_manip.c | 8 | ||||
-rw-r--r-- | lib/writecache/writecache.c | 20 |
2 files changed, 28 insertions, 0 deletions
diff --git a/lib/metadata/writecache_manip.c b/lib/metadata/writecache_manip.c index 8150d0781..21b7940fb 100644 --- a/lib/metadata/writecache_manip.c +++ b/lib/metadata/writecache_manip.c @@ -518,6 +518,14 @@ int writecache_settings_to_str_list(struct writecache_settings *settings, struct if (!_writecache_setting_str_list_add("max_age", (uint64_t)settings->max_age, NULL, result, mem)) errors++; + if (settings->metadata_only_set) + if (!_writecache_setting_str_list_add("metadata_only", (uint64_t)settings->metadata_only, NULL, result, mem)) + errors++; + + if (settings->pause_writeback_set) + if (!_writecache_setting_str_list_add("pause_writeback", (uint64_t)settings->pause_writeback, NULL, result, mem)) + errors++; + if (settings->new_key && settings->new_val) if (!_writecache_setting_str_list_add(settings->new_key, 0, settings->new_val, result, mem)) errors++; diff --git a/lib/writecache/writecache.c b/lib/writecache/writecache.c index aa2113271..8ccaca2d0 100644 --- a/lib/writecache/writecache.c +++ b/lib/writecache/writecache.c @@ -135,6 +135,18 @@ static int _writecache_text_import(struct lv_segment *seg, seg->writecache_settings.max_age_set = 1; } + if (dm_config_has_node(sn, "metadata_only")) { + if (!dm_config_get_uint32(sn, "metadata_only", &seg->writecache_settings.metadata_only)) + return SEG_LOG_ERROR("Unknown writecache_setting in"); + seg->writecache_settings.metadata_only_set = 1; + } + + if (dm_config_has_node(sn, "pause_writeback")) { + if (!dm_config_get_uint32(sn, "pause_writeback", &seg->writecache_settings.pause_writeback)) + return SEG_LOG_ERROR("Unknown writecache_setting in"); + seg->writecache_settings.pause_writeback_set = 1; + } + if (dm_config_has_node(sn, "writecache_setting_key")) { const char *key; const char *val; @@ -207,6 +219,14 @@ static int _writecache_text_export(const struct lv_segment *seg, outf(f, "max_age = %u", seg->writecache_settings.max_age); } + if (seg->writecache_settings.metadata_only_set) { + outf(f, "metadata_only = %u", seg->writecache_settings.metadata_only); + } + + if (seg->writecache_settings.pause_writeback_set) { + outf(f, "pause_writeback = %u", seg->writecache_settings.pause_writeback); + } + if (seg->writecache_settings.new_key && seg->writecache_settings.new_val) { outf(f, "writecache_setting_key = \"%s\"", seg->writecache_settings.new_key); |