summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKrutika Dhananjay <kdhananj@redhat.com>2017-03-28 19:26:41 +0530
committerShyamsundar Ranganathan <srangana@redhat.com>2017-03-30 09:56:05 -0400
commit061b83ec4101e3ecc188038141212cde75656977 (patch)
tree9783a09c9656facd57599f5e29e76112322ee6dc
parente43e818c902a27a9760311b4b8ba6303b34ec2b0 (diff)
features/shard: Pass the correct iatt for cache invalidation
Backport of: > Change-Id: Ib0349291d2d01f3782d6d0bdd90c6db5e0609210 > BUG: 1436739 > Reviewed on: https://review.gluster.org/16961 > (cherry picked from commit 5369fe2d545e0a0d31ab9c9d2797744c130af259) This fixes a performance issue with shard which was causing the translator to trigger unusually high number of lookups for cache invalidation even when there was no modification to the file. In shard_common_stat_cbk(), it is local->prebuf that contains the aggregated size and block count as opposed to buf which only holds the attributes for the physical copy of base shard. Passing buf for inode_ctx invalidation would always set refresh to true since the file size in inode ctx contains the aggregated size and would never be same as @buf->ia_size. This was leading to every write/read being preceded by a lookup on the base shard even when the file underwent no modification. Change-Id: Ib0349291d2d01f3782d6d0bdd90c6db5e0609210 BUG: 1437326 Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com> Reviewed-on: https://review.gluster.org/16966 Smoke: Gluster Build System <jenkins@build.gluster.org> Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
-rw-r--r--xlators/features/shard/src/shard.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/xlators/features/shard/src/shard.c b/xlators/features/shard/src/shard.c
index 25b6497756d..0fcbbaff3e3 100644
--- a/xlators/features/shard/src/shard.c
+++ b/xlators/features/shard/src/shard.c
@@ -1269,7 +1269,7 @@ shard_common_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
else
inode = local->fd->inode;
- shard_inode_ctx_invalidate (inode, this, buf);
+ shard_inode_ctx_invalidate (inode, this, &local->prebuf);
unwind:
local->handler (frame, this);