From: Ilya Dryomov Date: Sun, 10 Apr 2022 16:13:48 +0000 (+0200) Subject: librbd/cache/pwl: remove RBD_FEATURE_DIRTY_CACHE check in DiscardRequest X-Git-Tag: v18.0.0~1071^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=aee78bbb9d7edd606a8a235c57b2b704d7b94e4c;p=ceph-ci.git librbd/cache/pwl: remove RBD_FEATURE_DIRTY_CACHE check in DiscardRequest "m_image_ctx.features &&RBD_FEATURE_DIRTY_CACHE" is obviously wrong because it would pretty much always be true. However, even if bitwise AND was used, this check would still be dead because DiscardRequest is only invoked if RBD_FEATURE_DIRTY_CACHE is enabled: int invalidate_cache(ImageCtx *ictx) { { ... // Delete writeback cache if it is not initialized if ((!ictx->exclusive_lock || !ictx->exclusive_lock->is_lock_owner()) && ictx->test_features(RBD_FEATURE_DIRTY_CACHE)) { C_SaferCond ctx3; ictx->plugin_registry->discard(&ctx3); r = ctx3.wait(); } Signed-off-by: Ilya Dryomov --- diff --git a/src/librbd/cache/pwl/DiscardRequest.cc b/src/librbd/cache/pwl/DiscardRequest.cc index 9d4bff26b2c..1b537f32d16 100644 --- a/src/librbd/cache/pwl/DiscardRequest.cc +++ b/src/librbd/cache/pwl/DiscardRequest.cc @@ -113,10 +113,6 @@ void DiscardRequest::remove_feature_bit() { CephContext *cct = m_image_ctx.cct; ldout(cct, 10) << dendl; - if (!(m_image_ctx.features &&RBD_FEATURE_DIRTY_CACHE)) { - finish(); - return; - } uint64_t new_features = m_image_ctx.features & ~RBD_FEATURE_DIRTY_CACHE; uint64_t features_mask = RBD_FEATURE_DIRTY_CACHE; ldout(cct, 10) << "old_features=" << m_image_ctx.features