]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
osdc: Split ops should forward the RC from the primary OSD on success.
authorAlex Ainscow <aainscow@uk.ibm.com>
Tue, 21 Oct 2025 13:27:07 +0000 (14:27 +0100)
committerAlex Ainscow <aainscow@uk.ibm.com>
Tue, 21 Oct 2025 13:34:55 +0000 (14:34 +0100)
Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
src/osdc/SplitOp.cc

index 88e2fab10860365b1ca6da567d35ebc2e41768f9..3ffcb6ee41d21b10594a5e612e4a645feeac54cb 100644 (file)
@@ -229,14 +229,20 @@ void ReplicaSplitOp::init_read(OSDOp &op, bool sparse, int ops_index) {
 #define dout_prefix *_dout << " SplitOp::"
 
 int SplitOp::assemble_rc() {
+  int rc = 0;
   // Pick the first bad RC, otherwise return 0.
-  for (auto & [_, sub_read] : sub_reads) {
+  for (auto & [shard, sub_read] : sub_reads) {
     if (sub_read.rc < 0) {
       return sub_read.rc;
     }
+
+    // The non-primary shards only get reads, which only ever have zero RCs.
+    if (shard == primary_shard) {
+      rc = sub_read.rc;
+    }
   }
 
-  return 0;
+  return rc;
 }
 
 void SplitOp::complete() {