]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: return -EINVAL if op is for existing cache tier
authormyoungwon oh <ohmyoungwon@gmail.com>
Wed, 24 Feb 2021 14:39:50 +0000 (23:39 +0900)
committermyoungwon oh <ohmyoungwon@gmail.com>
Thu, 25 Feb 2021 01:19:56 +0000 (10:19 +0900)
At the end of unit test, flush and evict are called.
But, those ops affect manifest object because
cache_mode is not set to NONE sometime.

Signed-off-by: Myoungwon Oh <myoungwon.oh@samsumg.com>
src/osd/PrimaryLogPG.cc

index 2fa3c40f91f18ce3fd98c17aa868aac106b728a6..d649eb99aa4d4cfab525f0a887d4404c4bb5b067 100644 (file)
@@ -6046,7 +6046,7 @@ int PrimaryLogPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
          result = -EINVAL;
          break;
        }
-       if (pool.info.cache_mode == pg_pool_t::CACHEMODE_NONE) {
+       if (pool.info.cache_mode == pg_pool_t::CACHEMODE_NONE || obs.oi.has_manifest()) {
          result = -EINVAL;
          break;
        }
@@ -6079,7 +6079,7 @@ int PrimaryLogPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
          result = -EINVAL;
          break;
        }
-       if (pool.info.cache_mode == pg_pool_t::CACHEMODE_NONE) {
+       if (pool.info.cache_mode == pg_pool_t::CACHEMODE_NONE || obs.oi.has_manifest()) {
          result = -EINVAL;
          break;
        }
@@ -6116,7 +6116,7 @@ int PrimaryLogPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
       result = 0;
       {
        tracepoint(osd, do_osd_op_pre_cache_evict, soid.oid.name.c_str(), soid.snap.val);
-       if (pool.info.cache_mode == pg_pool_t::CACHEMODE_NONE) {
+       if (pool.info.cache_mode == pg_pool_t::CACHEMODE_NONE || obs.oi.has_manifest()) {
          result = -EINVAL;
          break;
        }