]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ReplicatedPG: fix sparse-read result code checking logic 7179/head
authorxiexingguo <258156334@qq.com>
Tue, 22 Dec 2015 09:05:06 +0000 (17:05 +0800)
committerLoic Dachary <ldachary@redhat.com>
Mon, 11 Jan 2016 10:15:41 +0000 (11:15 +0100)
Move ahead the result code checking logic before we continue to verify the trailing hole, otherwise
the real result of non-hole reading may be overwritten and thus confuse caller.

Fixes: #14151
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
(cherry picked from commit b3aa29e324cf0a96a1f2f5dcf1ba998219457bcd)

Conflicts:
src/osd/ReplicatedPG.cc: trivial resolution

src/osd/ReplicatedPG.cc

index b255b9fa6aaa0399755e5c859871d7dc67a565f3..835fc2fceb22ffc834a50230cd2f8d42a8769d5e 100644 (file)
@@ -3575,6 +3575,11 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
          data_bl.claim_append(tmpbl);
          last = miter->first + r;
         }
+        
+        if (r < 0) {
+          result = r;
+          break;
+        }
 
        // verify trailing hole?
        if (cct->_conf->osd_verify_sparse_read_holes) {
@@ -3590,11 +3595,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
          }
        }
 
-        if (r < 0) {
-          result = r;
-          break;
-        }
-
         op.extent.length = total_read;
 
         ::encode(m, osd_op.outdata);