]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: make 'ceph osd erasure-code-profile set ...' idempotent 1572/head
authorSage Weil <sage@inktank.com>
Mon, 31 Mar 2014 17:01:43 +0000 (10:01 -0700)
committerSage Weil <sage@inktank.com>
Mon, 31 Mar 2014 17:01:43 +0000 (10:01 -0700)
Signed-off-by: Sage Weil <sage@inktank.com>
qa/workunits/cephtool/test.sh
src/mon/OSDMonitor.cc

index f572a8da310f2b343cd88f8863fdc17d9a486c5a..df5d941b68103012fc115efd333d42ad8942056f 100755 (executable)
@@ -476,6 +476,13 @@ ceph osd pool set rbd cache_min_evict_age 234
 ceph osd pool get rbd crush_ruleset | grep 'crush_ruleset: 0'
 
 
+ceph osd erasure-code-profile set fooprofile a=b c=d
+ceph osd erasure-code-profile set fooprofile a=b c=d
+expect_false ceph osd erasure-code-profile set fooprofile a=b c=d e=f
+ceph osd erasure-code-profile set fooprofile a=b c=d e=f --force
+ceph osd erasure-code-profile set fooprofile a=b c=d e=f
+expect_false ceph osd erasure-code-profile set fooprofile a=b c=d e=f g=h
+
 
 set +e
 
index b721ddd83c2f91fdd02b02b735134455ecf0988d..28c35692bdc85f7c5e2c4aca06f2792a9d964d59 100644 (file)
@@ -4033,10 +4033,16 @@ bool OSDMonitor::prepare_command_impl(MMonCommand *m,
     if (err)
       goto reply;
 
-    if (osdmap.has_erasure_code_profile(name) && !force) {
-      err = -EPERM;
-      ss << "will not override erasure code profile " << name;
-      goto reply;
+    if (osdmap.has_erasure_code_profile(name)) {
+      if (osdmap.get_erasure_code_profile(name) == profile_map) {
+       err = 0;
+       goto reply;
+      }
+      if (!force) {
+       err = -EPERM;
+       ss << "will not override erasure code profile " << name;
+       goto reply;
+      }
     }
 
     if (pending_inc.has_erasure_code_profile(name)) {