]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: set next commit in mon command replies
authorSage Weil <sage@inktank.com>
Thu, 9 Jan 2014 22:44:49 +0000 (14:44 -0800)
committerSage Weil <sage@inktank.com>
Thu, 9 Jan 2014 22:44:49 +0000 (14:44 -0800)
The mon command acks include a version that is used by the client to
determine which version of the map they need to get or wait for in order
to see the effects of their command.  Current we are returning
get_last_committed() everywhere, but we are about to commit something (and
waiting for it), which will increase that value by one.  As a result,
clients are always getting epoch/version-1 instead of epoch.

This manifested by a LibRadosTier.Promote test that failed becaues the
OSD had the OSDMap updates adding the tier and overlay but not the final
map change that set the cache-mode to writeback.  I suspect this is also
the cause of of spurious errors in the past where we've seen misdirected
request errors that made no sense.

Backport: emperor, dumpling
Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Joao Eduardo Luis <joao@inktank.com>
src/mon/AuthMonitor.cc
src/mon/LogMonitor.cc
src/mon/MDSMonitor.cc
src/mon/MonmapMonitor.cc
src/mon/OSDMonitor.cc
src/mon/PGMonitor.cc

index 9f8855894425bd40c7175bb509dd9bc2992ff8c3..53bf47d4766b4ce9f28e4d3d11c9c7d58650a3b7 100644 (file)
@@ -726,7 +726,8 @@ bool AuthMonitor::prepare_command(MMonCommand *m)
     ss << "imported keyring";
     getline(ss, rs);
     err = 0;
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                             get_last_committed() + 1));
     return true;
   } else if (prefix == "auth add" && !entity_name.empty()) {
     /* expected behavior:
@@ -763,7 +764,7 @@ bool AuthMonitor::prepare_command(MMonCommand *m)
         if (inc.op == KeyServerData::AUTH_INC_ADD &&
             inc.name == entity) {
           wait_for_finished_proposal(
-              new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+              new Monitor::C_Command(mon, m, 0, rs, get_last_committed() + 1));
           return true;
         }
       }
@@ -848,7 +849,8 @@ bool AuthMonitor::prepare_command(MMonCommand *m)
 
     ss << "added key for " << auth_inc.name;
     getline(ss, rs);
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                                  get_last_committed() + 1));
     return true;
   } else if ((prefix == "auth get-or-create-key" ||
             prefix == "auth get-or-create") &&
@@ -900,7 +902,8 @@ bool AuthMonitor::prepare_command(MMonCommand *m)
        ::decode(auth_inc, q);
        if (auth_inc.op == KeyServerData::AUTH_INC_ADD &&
            auth_inc.name == entity) {
-         wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+         wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                               get_last_committed() + 1));
          return true;
        }
       }
@@ -935,7 +938,8 @@ bool AuthMonitor::prepare_command(MMonCommand *m)
 
     rdata.append(ds);
     getline(ss, rs);
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, rdata, get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, rdata,
+                                             get_last_committed() + 1));
     return true;
   } else if (prefix == "auth caps" && !entity_name.empty()) {
     KeyServerData::Incremental auth_inc;
@@ -957,7 +961,8 @@ bool AuthMonitor::prepare_command(MMonCommand *m)
 
     ss << "updated caps for " << auth_inc.name;
     getline(ss, rs);
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                             get_last_committed() + 1));
     return true;
   } else if (prefix == "auth del" && !entity_name.empty()) {
     KeyServerData::Incremental auth_inc;
@@ -972,7 +977,8 @@ bool AuthMonitor::prepare_command(MMonCommand *m)
 
     ss << "updated";
     getline(ss, rs);
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                             get_last_committed() + 1));
     return true;
   }
 
index b60656f5f92c967bb53a7710a30dd0202edfbebb..65139d0bb5a156b3ffb420b2800b45a669afe9d5 100644 (file)
@@ -382,7 +382,8 @@ bool LogMonitor::prepare_command(MMonCommand *m)
     le.msg = str_join(logtext, " ");
     pending_summary.add(le);
     pending_log.insert(pair<utime_t,LogEntry>(le.stamp, le));
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, string(), get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, string(),
+                                             get_last_committed() + 1));
     return true;
   }
 
index 3a1af05ffae5a81eab5c76bf4dc00b1a8df497ea..11bc7f9608dc9f9f30a6343d666c7c4ebd88724a 100644 (file)
@@ -838,7 +838,8 @@ bool MDSMonitor::prepare_command(MMonCommand *m)
       map.epoch = pending_mdsmap.epoch;  // make sure epoch is correct
       pending_mdsmap = map;
       string rs = "set mds map";
-      wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+      wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                               get_last_committed() + 1));
       return true;
     } else {
       ss << "next mdsmap epoch " << pending_mdsmap.epoch << " != " << e;
@@ -857,7 +858,8 @@ bool MDSMonitor::prepare_command(MMonCommand *m)
       ss << "set mds gid " << gid << " to state " << state << " " << ceph_mds_state_name(state);
       string rs;
       getline(ss, rs);
-      wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+      wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                               get_last_committed() + 1));
       return true;
     }
 
@@ -887,7 +889,8 @@ bool MDSMonitor::prepare_command(MMonCommand *m)
       ss << "removed mds gid " << gid;
       string rs;
       getline(ss, rs);
-      wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+      wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                               get_last_committed() + 1));
       return true;
     }
   } else if (prefix == "mds rmfailed") {
@@ -898,7 +901,8 @@ bool MDSMonitor::prepare_command(MMonCommand *m)
     ss << "removed failed mds." << w;
     string rs;
     getline(ss, rs);
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                             get_last_committed() + 1));
     return true;
   } else if (prefix == "mds cluster_down") {
     if (pending_mdsmap.test_flag(CEPH_MDSMAP_DOWN)) {
@@ -1026,7 +1030,8 @@ bool MDSMonitor::prepare_command(MMonCommand *m)
       ss << "new fs with metadata pool " << metadata << " and data pool " << data;
       string rs;
       getline(ss, rs);
-      wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+      wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                               get_last_committed() + 1));
       return true;
     }
   } else {
@@ -1038,7 +1043,8 @@ bool MDSMonitor::prepare_command(MMonCommand *m)
 
   if (r >= 0) {
     // success.. delay reply
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, r, rs, get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, r, rs,
+                                             get_last_committed() + 1));
     return true;
   } else {
     // reply immediately
index 7ecf27152831e57445cac5c817f328fb88bed382..61d85ae96c630e9618d7f5aff813f414203ee0b6 100644 (file)
@@ -346,7 +346,7 @@ bool MonmapMonitor::prepare_command(MMonCommand *m)
     pending_map.last_changed = ceph_clock_now(g_ceph_context);
     getline(ss, rs);
     wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
-                                                      get_last_committed()));
+                                                     get_last_committed() + 1));
     return true;
 
   } else if (prefix == "mon remove") {
index 3ff0d660a2b1487de7770ea6236eefe84fbeb321..6c92b82f216775560cadaf607c8a6bed6722a039 100644 (file)
@@ -2827,7 +2827,8 @@ bool OSDMonitor::prepare_set_flag(MMonCommand *m, int flag)
     pending_inc.new_flags = osdmap.get_flags();
   pending_inc.new_flags |= flag;
   ss << "set " << OSDMap::get_flag_string(flag);
-  wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, ss.str(), get_last_committed()));
+  wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, ss.str(),
+                                                   get_last_committed() + 1));
   return true;
 }
 
@@ -2838,7 +2839,8 @@ bool OSDMonitor::prepare_unset_flag(MMonCommand *m, int flag)
     pending_inc.new_flags = osdmap.get_flags();
   pending_inc.new_flags &= ~flag;
   ss << "unset " << OSDMap::get_flag_string(flag);
-  wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, ss.str(), get_last_committed()));
+  wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, ss.str(),
+                                                   get_last_committed() + 1));
   return true;
 }
 
@@ -3257,7 +3259,8 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
     ss << action << " item id " << id << " name '" << name << "' weight "
       << weight << " at location " << loc << " to crush map";
     getline(ss, rs);
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                                     get_last_committed() + 1));
     return true;
 
   } else if (prefix == "osd crush create-or-move") {
@@ -3296,7 +3299,8 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
        ss << "create-or-move updating item name '" << name << "' weight " << weight
           << " at location " << loc << " to crush map";
        getline(ss, rs);
-       wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+       wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                                 get_last_committed() + 1));
        return true;
       }
     } while (false);
@@ -3330,7 +3334,8 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
          pending_inc.crush.clear();
          newcrush.encode(pending_inc.crush);
          getline(ss, rs);
-         wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+         wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                                  get_last_committed() + 1));
          return true;
        }
       } else {
@@ -3383,7 +3388,8 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
        err = 0;
       }
     }
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, err, ss.str(), get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, err, ss.str(),
+                                             get_last_committed() + 1));
     return true;
   } else if (prefix == "osd crush rm" ||
             prefix == "osd crush remove" ||
@@ -3405,7 +3411,8 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
        err = 0;
        ss << "device '" << name << "' does not appear in the crush map";
        getline(ss, rs);
-       wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+       wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                                 get_last_committed() + 1));
        return true;
       }
       int id = newcrush.get_item_id(name);
@@ -3434,7 +3441,8 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
        newcrush.encode(pending_inc.crush);
        ss << "removed item id " << id << " name '" << name << "' from crush map";
        getline(ss, rs);
-       wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+       wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                                 get_last_committed() + 1));
        return true;
       }
     } while (false);
@@ -3468,7 +3476,8 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
        ss << "reweighted item id " << id << " name '" << name << "' to " << w
           << " in crush map";
        getline(ss, rs);
-       wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+       wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                                 get_last_committed() + 1));
        return true;
       }
     } while (false);
@@ -3493,7 +3502,8 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
     newcrush.encode(pending_inc.crush);
     ss << "adjusted tunables profile to " << profile;
     getline(ss, rs);
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                             get_last_committed() + 1));
     return true;
 
   } else if (prefix == "osd crush rule create-simple") {
@@ -3529,7 +3539,8 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
       newcrush.encode(pending_inc.crush);
     }
     getline(ss, rs);
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                             get_last_committed() + 1));
     return true;
 
   } else if (prefix == "osd crush rule rm") {
@@ -3571,7 +3582,8 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
       newcrush.encode(pending_inc.crush);
     }
     getline(ss, rs);
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                             get_last_committed() + 1));
     return true;
 
   } else if (prefix == "osd setmaxosd") {
@@ -3588,7 +3600,8 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
     pending_inc.new_max_osd = newmax;
     ss << "set new max_osd = " << pending_inc.new_max_osd;
     getline(ss, rs);
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                             get_last_committed() + 1));
     return true;
 
   } else if (prefix == "osd pause") {
@@ -3710,7 +3723,8 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
     }
     if (any) {
       getline(ss, rs);
-      wait_for_finished_proposal(new Monitor::C_Command(mon, m, err, rs, get_last_committed()));
+      wait_for_finished_proposal(new Monitor::C_Command(mon, m, err, rs,
+                                               get_last_committed() + 1));
       return true;
     }
   } else if (prefix == "osd reweight") {
@@ -3728,7 +3742,8 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
       pending_inc.new_weight[id] = ww;
       ss << "reweighted osd." << id << " to " << w << " (" << ios::hex << ww << ios::dec << ")";
       getline(ss, rs);
-      wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+      wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                               get_last_committed() + 1));
       return true;
     }
 
@@ -3748,7 +3763,8 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
       pending_inc.new_lost[id] = e;
       ss << "marked osd lost in epoch " << e;
       getline(ss, rs);
-      wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+      wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                               get_last_committed() + 1));
       return true;
     }
 
@@ -3817,7 +3833,8 @@ done:
       ss << i;
       rdata.append(ss);
     }
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, rdata, get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, rdata,
+                                             get_last_committed() + 1));
     return true;
 
   } else if (prefix == "osd blacklist") {
@@ -3839,7 +3856,8 @@ done:
        pending_inc.new_blacklist[addr] = expires;
        ss << "blacklisting " << addr << " until " << expires << " (" << d << " sec)";
        getline(ss, rs);
-       wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+       wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                                 get_last_committed() + 1));
        return true;
       } else if (blacklistop == "rm") {
        if (osdmap.is_blacklisted(addr) ||
@@ -3850,7 +3868,8 @@ done:
            pending_inc.new_blacklist.erase(addr);
          ss << "un-blacklisting " << addr;
          getline(ss, rs);
-         wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+         wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                                   get_last_committed() + 1));
          return true;
        }
        ss << addr << " isn't blacklisted";
@@ -3894,7 +3913,8 @@ done:
       ss << "created pool " << poolstr << " snap " << snapname;
     }
     getline(ss, rs);
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                             get_last_committed() + 1));
     return true;
   } else if (prefix == "osd pool rmsnap") {
     string poolstr;
@@ -3933,7 +3953,8 @@ done:
       ss << "already removed pool " << poolstr << " snap " << snapname;
     }
     getline(ss, rs);
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                             get_last_committed() + 1));
     return true;
   } else if (prefix == "osd pool create") {
     int64_t  pg_num;
@@ -4028,7 +4049,8 @@ done:
       ss << "pool '" << poolstr << "' created";
     }
     getline(ss, rs);
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                             get_last_committed() + 1));
     return true;
 
   } else if (prefix == "osd pool delete") {
@@ -4055,7 +4077,8 @@ done:
     if (ret == 0)
       ss << "pool '" << poolstr << "' deleted";
     getline(ss, rs);
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, ret, rs, get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, ret, rs,
+                                             get_last_committed() + 1));
     return true;
   } else if (prefix == "osd pool rename") {
     string srcpoolstr, destpoolstr;
@@ -4095,7 +4118,8 @@ done:
         << cpp_strerror(ret);
     }
     getline(ss, rs);
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, ret, rs, get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, ret, rs,
+                                             get_last_committed() + 1));
     return true;
 
   } else if (prefix == "osd pool set") {
@@ -4104,7 +4128,8 @@ done:
       goto reply;
 
     getline(ss, rs);
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                                  get_last_committed() + 1));
     return true;
   } else if (prefix == "osd tier add") {
     string poolstr;
@@ -4143,7 +4168,8 @@ done:
     pending_inc.get_new_pool(pool_id, p)->tiers.insert(tierpool_id);
     pending_inc.get_new_pool(tierpool_id, p)->tier_of = pool_id;
     ss << "pool '" << tierpoolstr << "' is now (or already was) a tier of '" << poolstr << "'";
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, ss.str(), get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, ss.str(),
+                                             get_last_committed() + 1));
     return true;
   } else if (prefix == "osd tier remove") {
     string poolstr;
@@ -4185,7 +4211,8 @@ done:
     pending_inc.get_new_pool(pool_id, p)->tiers.erase(tierpool_id);
     pending_inc.get_new_pool(tierpool_id, tp)->clear_tier();
     ss << "pool '" << tierpoolstr << "' is now (or already was) not a tier of '" << poolstr << "'";
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, ss.str(), get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, ss.str(),
+                                             get_last_committed() + 1));
     return true;
   } else if (prefix == "osd tier set-overlay") {
     string poolstr;
@@ -4227,7 +4254,8 @@ done:
     pending_inc.get_new_pool(pool_id, p)->read_tier = overlaypool_id;
     pending_inc.get_new_pool(pool_id, p)->write_tier = overlaypool_id;
     ss << "overlay for '" << poolstr << "' is now (or already was) '" << overlaypoolstr << "'";
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, ss.str(), get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, ss.str(),
+                                             get_last_committed() + 1));
     return true;
   } else if (prefix == "osd tier remove-overlay") {
     string poolstr;
@@ -4249,7 +4277,8 @@ done:
     pending_inc.get_new_pool(pool_id, p)->clear_read_tier();
     pending_inc.get_new_pool(pool_id, p)->clear_write_tier();
     ss << "there is now (or already was) no overlay for '" << poolstr << "'";
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, ss.str(), get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, ss.str(),
+                                             get_last_committed() + 1));
     return true;
   } else if (prefix == "osd tier cache-mode") {
     string poolstr;
@@ -4279,7 +4308,8 @@ done:
     pending_inc.get_new_pool(pool_id, p)->cache_mode = mode;
     ss << "set cache-mode for pool '" << poolstr
        << "' to " << pg_pool_t::get_cache_mode_name(mode);
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, ss.str(), get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, ss.str(),
+                                             get_last_committed() + 1));
     return true;
   } else if (prefix == "osd pool set-quota") {
     string poolstr;
@@ -4320,7 +4350,8 @@ done:
     }
     ss << "set-quota " << field << " = " << value << " for pool " << poolstr;
     rs = ss.str();
-    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+    wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                             get_last_committed() + 1));
     return true;
 
   } else if (prefix == "osd reweight-by-utilization") {
@@ -4336,7 +4367,8 @@ done:
     } else {
       ss << "SUCCESSFUL reweight-by-utilization: " << out_str;
       getline(ss, rs);
-      wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+      wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                               get_last_committed() + 1));
       return true;
     }
   } else if (prefix == "osd thrash") {
@@ -4360,7 +4392,8 @@ reply:
 
  update:
   getline(ss, rs);
-  wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
+  wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs,
+                                           get_last_committed() + 1));
   return true;
 }
 
index 4310dd05a2b7210fafe89f92663b9e4635e733f5..8b077c18554f303756d2646f2e5407a1639a6244 100644 (file)
@@ -1667,7 +1667,8 @@ bool PGMonitor::prepare_command(MMonCommand *m)
 
  update:
   getline(ss, rs);
-  wait_for_finished_proposal(new Monitor::C_Command(mon, m, r, rs, get_last_committed()));
+  wait_for_finished_proposal(new Monitor::C_Command(mon, m, r, rs,
+                                                   get_last_committed() + 1));
   return true;
 }