]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: skip out of order op checks on tiered pools
authorSage Weil <sage@inktank.com>
Mon, 19 May 2014 17:32:12 +0000 (10:32 -0700)
committerSage Weil <sage@inktank.com>
Mon, 19 May 2014 23:31:13 +0000 (16:31 -0700)
When we send redirected ops, we do not assign a new tid, which means that
a given client's ops for a pool may not have strictly ordered tids.  Skip
this check if the pool is tiered to avoid false positives.

Fixes: #8380
Signed-off-by: Sage Weil <sage@inktank.com>
(cherry picked from commit cf2b172c843da0599164901956b66c306a59e570)

src/osd/ReplicatedPG.cc
src/osd/osd_types.h

index 4d9d59e04fafa5718a5363a29283e82edc09bea1..b724d030425c83b58b25a88c99f31a91a867ed35 100644 (file)
@@ -1838,7 +1838,8 @@ void ReplicatedPG::execute_ctx(OpContext *ctx)
   calc_trim_to();
 
   // verify that we are doing this in order?
-  if (cct->_conf->osd_debug_op_order && m->get_source().is_client()) {
+  if (cct->_conf->osd_debug_op_order && m->get_source().is_client() &&
+      !pool.info.is_tier() && !pool.info.has_tiers()) {
     map<client_t,ceph_tid_t>& cm = debug_op_order[obc->obs.oi.soid];
     ceph_tid_t t = m->get_tid();
     client_t n = m->get_source().num();
index 6d9ce37f2f485484057291336b6d5a8a71faeaaf..b70951cf57a93cf5667e8739439092c8a4e00955 100644 (file)
@@ -915,6 +915,7 @@ public:
   cache_mode_t cache_mode;  ///< cache pool mode
 
   bool is_tier() const { return tier_of >= 0; }
+  bool has_tiers() const { return !tiers.empty(); }
   void clear_tier() { tier_of = -1; }
   bool has_read_tier() const { return read_tier >= 0; }
   void clear_read_tier() { read_tier = -1; }