summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSoumya Koduri <skoduri@redhat.com>2015-06-25 00:47:19 +0530
committerKaleb KEITHLEY <kkeithle@redhat.com>2015-06-26 18:12:47 -0700
commit35d24f0c967130ef8424660b5f6dfd182bb305c1 (patch)
treee23f81098a78c47fcbfd58501e8c79da2195771d
parent875aa01ec80e56d85d0bc6028c6f1417f6ab140f (diff)
Upcall: Fix an issue with invalidating parent entries
Any directory or file creation should result in cache-invalidation requests sent to parent directory. However that is not the case currently due to a bug while processing these requests in the upcall xlator. We need to do invalidation checks on parent inode. Fixed the same. Also fixed an issue with null client entries while sending upcall notifications. Change-Id: I3da7c79091291ba36fd8f8ebcfebcd77a192f250 BUG: 1235542 Signed-off-by: Soumya Koduri <skoduri@redhat.com> Reviewed-on: http://review.gluster.org/11387 Reviewed-by: Niels de Vos <ndevos@redhat.com> Reviewed-by: Meghana M <mmadhusu@redhat.com> Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
-rw-r--r--xlators/features/upcall/src/upcall.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/xlators/features/upcall/src/upcall.c b/xlators/features/upcall/src/upcall.c
index 0e2a75473dc..4954d43db07 100644
--- a/xlators/features/upcall/src/upcall.c
+++ b/xlators/features/upcall/src/upcall.c
@@ -635,7 +635,7 @@ up_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
}
/* invalidate parent's entry too */
- flags = UP_PARENT_DENTRY_FLAGS;
+ flags = UP_TIMES;
upcall_cache_invalidate (frame, this, client, local->inode, flags,
stbuf, postparent, NULL);
@@ -655,7 +655,7 @@ up_mkdir (call_frame_t *frame, xlator_t *this,
EXIT_IF_UPCALL_OFF (this, out);
- local = upcall_local_init (frame, this, loc->inode);
+ local = upcall_local_init (frame, this, loc->parent);
if (!local) {
op_errno = ENOMEM;
goto err;
@@ -697,7 +697,7 @@ up_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
/* As its a new file create, no need of sending notification */
/* However invalidate parent's entry */
- flags = UP_PARENT_DENTRY_FLAGS;
+ flags = UP_TIMES;
upcall_cache_invalidate (frame, this, client, local->inode, flags,
stbuf, postparent, NULL);
@@ -718,7 +718,7 @@ up_create (call_frame_t *frame, xlator_t *this,
EXIT_IF_UPCALL_OFF (this, out);
- local = upcall_local_init (frame, this, loc->inode);
+ local = upcall_local_init (frame, this, loc->parent);
if (!local) {
op_errno = ENOMEM;
@@ -1047,7 +1047,7 @@ up_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
}
/* invalidate parent's entry too */
- flags = UP_PARENT_DENTRY_FLAGS;
+ flags = UP_TIMES;
upcall_cache_invalidate (frame, this, client, local->inode, flags,
buf, postparent, NULL);
@@ -1067,7 +1067,7 @@ up_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc,
EXIT_IF_UPCALL_OFF (this, out);
- local = upcall_local_init (frame, this, loc->inode);
+ local = upcall_local_init (frame, this, loc->parent);
if (!local) {
op_errno = ENOMEM;
goto err;
@@ -1108,7 +1108,7 @@ up_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
}
/* invalidate parent's entry too */
- flags = UP_PARENT_DENTRY_FLAGS;
+ flags = UP_TIMES;
upcall_cache_invalidate (frame, this, client, local->inode, flags,
buf, postparent, NULL);
@@ -1129,7 +1129,7 @@ up_symlink (call_frame_t *frame, xlator_t *this,
EXIT_IF_UPCALL_OFF (this, out);
- local = upcall_local_init (frame, this, loc->inode);
+ local = upcall_local_init (frame, this, loc->parent);
if (!local) {
op_errno = ENOMEM;
goto err;