From 998a63357cb186953d0eedf5a06bc4ac5594674d Mon Sep 17 00:00:00 2001 From: vmallika Date: Wed, 22 Jul 2015 09:02:39 +0530 Subject: quota: fix parents caching during build ancestry This is a backport of http://review.gluster.org/#/c/11574/ In build ancestry, we get the list of parents for a file, these parents are cached in inode ctx. This caching is not happening because posix is not setting d_stat information in the leaf node entry This patch fixes the issue Inode-ctx is not updated with new parent when rename performed on same directory. This patch fixes the issue There is a possibility of caching stale entries, consider below example: 1) build_ancestry invoked on a file 2) rename is invoked on the same file 3) buils_ancestry prepared entries of old parent 4) rename completed and in cbk old parent is replaced with new parent in inode ctx 5) now build_ancestry cbk adds old parent to inode ctx In this patch we also remove stale entries in writev and fallocate > Change-Id: Ib1854a41b47b14eb775326588352015c83d034de > BUG: 1240949 > Signed-off-by: vmallika > Reviewed-on: http://review.gluster.org/11574 > Tested-by: Gluster Build System > Reviewed-by: Raghavendra G Change-Id: I26a196e7eeed343593bea3a0b7b51d7be12500a3 BUG: 1248325 Signed-off-by: vmallika Reviewed-on: http://review.gluster.org/11799 Tested-by: NetBSD Build System Tested-by: Gluster Build System Reviewed-by: Raghavendra G --- xlators/features/quota/src/quota.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'xlators/features/quota/src/quota.h') diff --git a/xlators/features/quota/src/quota.h b/xlators/features/quota/src/quota.h index 0f8cecd8a59..db27e1e1773 100644 --- a/xlators/features/quota/src/quota.h +++ b/xlators/features/quota/src/quota.h @@ -263,12 +263,11 @@ void quota_get_limit_dir (call_frame_t *frame, inode_t *cur_inode, xlator_t *this); int32_t -quota_check_limit (call_frame_t *frame, inode_t *inode, xlator_t *this, - char *name, uuid_t par); +quota_check_limit (call_frame_t *frame, inode_t *inode, xlator_t *this); inode_t * do_quota_check_limit (call_frame_t *frame, inode_t *inode, xlator_t *this, - quota_dentry_t *dentry); + quota_dentry_t *dentry, gf_boolean_t force); int quota_fill_inodectx (xlator_t *this, inode_t *inode, dict_t *dict, loc_t *loc, struct iatt *buf, int32_t *op_errno); -- cgit