Blob Blame History Raw
From 795a095a6740a66744f10f864c99095205c97c1a Mon Sep 17 00:00:00 2001
From: Krutika Dhananjay <kdhananj@redhat.com>
Date: Tue, 28 Mar 2017 19:26:41 +0530
Subject: [PATCH 304/316] features/shard: Pass the correct iatt for cache
 invalidation

        Backport of: https://review.gluster.org/16961

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: I97b52224823d57f86eb92cc36a726049bdb5cb23
BUG: 1439731
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
Reviewed-on: https://code.engineering.redhat.com/gerrit/102819
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
---
 xlators/features/shard/src/shard.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xlators/features/shard/src/shard.c b/xlators/features/shard/src/shard.c
index 39d648b..9504f12 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);
-- 
1.8.3.1