From 1bb60b45a859dd1b24b9a501b3d3fe1d11deec31 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 24 Sep 2010 11:43:37 -0700 Subject: [PATCH] osd: make sparse data/clone push behave with partial object push We can't error out if we don't get everything we want in one go now that we support pushing objects in pieces. Remove this check entirely, since we don't have a good error handling case anyway. --- src/osd/ReplicatedPG.cc | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index f9b4da63570d9..264fed24a3114 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -3503,12 +3503,15 @@ void ReplicatedPG::sub_op_push(MOSDSubOp *op) interval_set data_needed; calc_clone_subsets(ssc->snapset, soid, missing, data_needed, clone_subsets); put_snapset_context(ssc); + + interval_set overlap; + overlap.intersection_of(data_subset, data_needed); - dout(10) << "sub_op_push need " << data_needed << ", got " << data_subset << dendl; - if (!data_needed.subset_of(data_subset)) { - dout(0) << "sub_op_push we did not get enough of " << soid << " object data" << dendl; - op->put(); - return; + dout(10) << "sub_op_push need " << data_needed << ", got " << data_subset + << ", overlap " << overlap << dendl; + + if (op->complete) { + // FIXME: we should verify that we got the whole thing. } // did we get more data than we need? -- 2.39.5