From: Mykola Golub Date: Fri, 11 Sep 2015 18:02:41 +0000 (+0300) Subject: osd: refactor setting write_fadvise_dontneed pool flag X-Git-Tag: v9.1.0~90^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=10235e3ff35335cee4c73da841bd93831bab14c0;p=ceph.git osd: refactor setting write_fadvise_dontneed pool flag Handle together with other flags. Signed-off-by: Mykola Golub --- diff --git a/doc/rados/operations/pools.rst b/doc/rados/operations/pools.rst index 1872b498a5c..d4d2f171137 100644 --- a/doc/rados/operations/pools.rst +++ b/doc/rados/operations/pools.rst @@ -298,6 +298,13 @@ You may set values for the following keys: :Version: Version ``FIXME`` +``write_fadvise_dontneed`` + +:Description: Set/Unset WRITE_FADVISE_DONTNEED flag on a given pool. +:Type: Integer +:Valid Range: 1 sets flag, 0 unsets flag + + ``hit_set_type`` :Description: Enables hit set tracking for cache pools. diff --git a/qa/workunits/cephtool/test.sh b/qa/workunits/cephtool/test.sh index fc81f86f3ef..b515a3ccaec 100755 --- a/qa/workunits/cephtool/test.sh +++ b/qa/workunits/cephtool/test.sh @@ -1355,7 +1355,7 @@ function test_mon_osd_pool_set() ceph --format=xml osd pool get $TEST_POOL_GETSET auid | grep $auid ceph osd pool set $TEST_POOL_GETSET auid 0 - for flag in hashpspool nodelete nopgchange nosizechange; do + for flag in hashpspool nodelete nopgchange nosizechange write_fadvise_dontneed; do ceph osd pool set $TEST_POOL_GETSET $flag false ceph osd pool set $TEST_POOL_GETSET $flag true ceph osd pool set $TEST_POOL_GETSET $flag 1 diff --git a/src/mon/MonCommands.h b/src/mon/MonCommands.h index b7bfe1c2fba..80f8c6b7e28 100644 --- a/src/mon/MonCommands.h +++ b/src/mon/MonCommands.h @@ -678,7 +678,7 @@ COMMAND("osd pool get " \ "get pool parameter ", "osd", "r", "cli,rest") COMMAND("osd pool set " \ "name=pool,type=CephPoolname " \ - "name=var,type=CephChoices,strings=size|min_size|crash_replay_interval|pg_num|pgp_num|crush_ruleset|hashpspool|nodelete|nopgchange|nosizechange|hit_set_type|hit_set_period|hit_set_count|hit_set_fpp|use_gmt_hitset|debug_fake_ec_pool|target_max_bytes|target_max_objects|cache_target_dirty_ratio|cache_target_dirty_high_ratio|cache_target_full_ratio|cache_min_flush_age|cache_min_evict_age|auid|min_read_recency_for_promote|write_fadvise_dontneed|min_write_recency_for_promote|fast_read " \ + "name=var,type=CephChoices,strings=size|min_size|crash_replay_interval|pg_num|pgp_num|crush_ruleset|hashpspool|nodelete|nopgchange|nosizechange|write_fadvise_dontneed|hit_set_type|hit_set_period|hit_set_count|hit_set_fpp|use_gmt_hitset|debug_fake_ec_pool|target_max_bytes|target_max_objects|cache_target_dirty_ratio|cache_target_dirty_high_ratio|cache_target_full_ratio|cache_min_flush_age|cache_min_evict_age|auid|min_read_recency_for_promote|min_write_recency_for_promote|fast_read " \ "name=val,type=CephString " \ "name=force,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \ "set pool parameter to ", "osd", "rw", "cli,rest") diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 5e23d3de617..1a09c6ed0f0 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -4849,7 +4849,7 @@ int OSDMonitor::prepare_command_pool_set(map &cmdmap, } p.crush_ruleset = n; } else if (var == "hashpspool" || var == "nodelete" || var == "nopgchange" || - var == "nosizechange") { + var == "nosizechange" || var == "write_fadvise_dontneed") { uint64_t flag = pg_pool_t::get_flag_by_name(var); // make sure we only compare against 'n' if we didn't receive a string if (val == "true" || (interr.empty() && n == 1)) { @@ -4979,15 +4979,6 @@ int OSDMonitor::prepare_command_pool_set(map &cmdmap, return -EINVAL; } p.min_read_recency_for_promote = n; - } else if (var == "write_fadvise_dontneed") { - if (val == "true" || (interr.empty() && n == 1)) { - p.flags |= pg_pool_t::FLAG_WRITE_FADVISE_DONTNEED; - } else if (val == "false" || (interr.empty() && n == 0)) { - p.flags &= ~pg_pool_t::FLAG_WRITE_FADVISE_DONTNEED; - } else { - ss << "expecting value 'true', 'false', '0', or '1'"; - return -EINVAL; - } } else if (var == "min_write_recency_for_promote") { if (interr.length()) { ss << "error parsing integer value '" << val << "': " << interr; diff --git a/src/test/mon/misc.sh b/src/test/mon/misc.sh index c762029dfda..82751faaba0 100755 --- a/src/test/mon/misc.sh +++ b/src/test/mon/misc.sh @@ -41,7 +41,7 @@ function TEST_osd_pool_get_set() { run_mon $dir a || return 1 local flag - for flag in hashpspool nodelete nopgchange nosizechange; do + for flag in hashpspool nodelete nopgchange nosizechange write_fadvise_dontneed; do if [ $flag = hashpspool ]; then ./ceph osd dump | grep 'pool ' | grep $flag || return 1 else