From aee78bbb9d7edd606a8a235c57b2b704d7b94e4c Mon Sep 17 00:00:00 2001 From: Ilya Dryomov Date: Sun, 10 Apr 2022 18:13:48 +0200 Subject: [PATCH] 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 --- src/librbd/cache/pwl/DiscardRequest.cc | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/librbd/cache/pwl/DiscardRequest.cc b/src/librbd/cache/pwl/DiscardRequest.cc index 9d4bff26b2cec..1b537f32d16d9 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 -- 2.39.5