From ef74cf71aa0dd7fca23d53e947d7f08496a4cee1 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 9 Feb 2017 23:01:14 -0500 Subject: [PATCH] osdc/Objecter: force pg_read ops to ignore cache overlay pg_read is only used for PG listing and hit_set_{list,get}; these operations can't and shouldn't consider the tiering overlay. This makes the _calc_target behavior with the explicit pgid make sense; otherwise, what would it mean to try to read pg x.1 from pool x and get redirected to pg y.1 in pool y? Signed-off-by: Sage Weil --- src/osdc/Objecter.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h index 5829509492194..8756482127ec8 100644 --- a/src/osdc/Objecter.h +++ b/src/osdc/Objecter.h @@ -2277,7 +2277,9 @@ public: Context *onack, epoch_t *reply_epoch, int *ctx_budget) { Op *o = new Op(object_t(), oloc, - op.ops, flags | global_op_flags.read() | CEPH_OSD_FLAG_READ, + op.ops, + flags | global_op_flags.read() | CEPH_OSD_FLAG_READ | + CEPH_OSD_FLAG_IGNORE_OVERLAY, onack, NULL); o->target.precalc_pgid = true; o->target.base_pgid = pg_t(hash, oloc.pool); -- 2.39.5