]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: refactor setting write_fadvise_dontneed pool flag
authorMykola Golub <mgolub@mirantis.com>
Fri, 11 Sep 2015 18:02:41 +0000 (21:02 +0300)
committerMykola Golub <mgolub@mirantis.com>
Mon, 21 Sep 2015 06:08:16 +0000 (09:08 +0300)
Handle together with other flags.

Signed-off-by: Mykola Golub <mgolub@mirantis.com>
doc/rados/operations/pools.rst
qa/workunits/cephtool/test.sh
src/mon/MonCommands.h
src/mon/OSDMonitor.cc
src/test/mon/misc.sh

index 1872b498a5c1995e4dd0acef6c4547611179eba2..d4d2f1711372179867b56f3a2a4af3d0728df22a 100644 (file)
@@ -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.
index fc81f86f3ef08804788f770a36de25e4c978aa18..b515a3ccaec94f2cd681b6a7596ef86afc9b31c4 100755 (executable)
@@ -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
index b7bfe1c2fbadace1225c5105667e2efcc2d8298d..80f8c6b7e289b7d16d211f2789b4497a5edb63ae 100644 (file)
@@ -678,7 +678,7 @@ COMMAND("osd pool get " \
        "get pool parameter <var>", "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 <var> to <val>", "osd", "rw", "cli,rest")
index 5e23d3de61726e31248ec24ad3a6ec4e1f62c002..1a09c6ed0f001f5d68ba920846d32aa1819211b3 100644 (file)
@@ -4849,7 +4849,7 @@ int OSDMonitor::prepare_command_pool_set(map<string,cmd_vartype> &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<string,cmd_vartype> &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;
index c762029dfda10937b91a7c692599f3daac9312e8..82751faaba0215a8bb7b160a09c66364d4e6d069 100755 (executable)
@@ -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