From: myoungwon oh Date: Wed, 3 Mar 2021 13:55:17 +0000 (+0900) Subject: src/test: add concrete condition regarding ENOENT in TierFlush/TierEvict X-Git-Tag: v17.1.0~2307^2~15 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=cc7cfcb82bd07ff98f5524e12873d60839911128;p=ceph.git src/test: add concrete condition regarding ENOENT in TierFlush/TierEvict Signed-off-by: Myoungwon Oh --- diff --git a/src/test/osd/RadosModel.h b/src/test/osd/RadosModel.h index 6b026c7abed3..64e8d82b54a1 100644 --- a/src/test/osd/RadosModel.h +++ b/src/test/osd/RadosModel.h @@ -2886,6 +2886,8 @@ public: context->io_ctx.snap_set_read(context->snaps[snap]); } + context->find_object(oid, &src_value, snap); + pair *cb_arg = new pair(this, new TestOp::CallbackInfo(0)); @@ -2916,8 +2918,8 @@ public: // sucess } else if (r == -EBUSY) { // could fail if snap is not oldest - } else if (r == -ENOENT) { - // could fail if obj is removed + } else if (r == -ENOENT && src_value.deleted()) { + // could fail if object is removed } else { ceph_abort_msg("shouldn't happen"); } @@ -2947,6 +2949,7 @@ public: string oid; std::shared_ptr in_use; int snap; + ObjectDesc src_value; TierEvictOp(int n, RadosTestContext *context, @@ -2962,6 +2965,9 @@ public: { context->state_lock.lock(); + context->oid_in_use.insert(oid); + context->oid_not_in_use.erase(oid); + if (0 && !(rand() % 4) && !context->snaps.empty()) { snap = rand_choose(context->snaps)->first; in_use = context->snaps_in_use.lookup_or_create(snap, snap); @@ -2975,6 +2981,8 @@ public: context->io_ctx.snap_set_read(context->snaps[snap]); } + context->find_object(oid, &src_value, snap); + pair *cb_arg = new pair(this, new TestOp::CallbackInfo(0)); @@ -3007,11 +3015,13 @@ public: // modifying manifeset object makes existing chunk_map clear // as a result, the modified object is no longer manifest object // this casues to return -EINVAL - } else if (r == -ENOENT) { - // may have raced with a remove? + } else if (r == -ENOENT && src_value.deleted()) { + // could fail if object is removed } else { ceph_abort_msg("shouldn't happen"); } + context->oid_in_use.erase(oid); + context->oid_not_in_use.insert(oid); context->kick(); done = true; }