From dd5ada1f11d76b4c55c7c55d23718617f11a6c12 Mon Sep 17 00:00:00 2001 From: Krutika Dhananjay Date: Tue, 28 Mar 2017 19:26:41 +0530 Subject: features/shard: Pass the correct iatt for cache invalidation 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: 1436739 Signed-off-by: Krutika Dhananjay Reviewed-on: https://review.gluster.org/16961 NetBSD-regression: NetBSD Build System CentOS-regression: Gluster Build System Smoke: Gluster Build System Reviewed-by: Pranith Kumar Karampuri --- xlators/features/shard/src/shard.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'xlators') 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); -- cgit