summaryrefslogtreecommitdiffstats
path: root/xlators/cluster/afr
diff options
context:
space:
mode:
authorShehjar Tikoo <shehjart@gluster.com>2010-02-25 15:37:59 +0000
committerAnand V. Avati <avati@dev.gluster.com>2010-03-04 03:12:58 -0800
commit5493db0d0664b9ed2515758122837c0d93d0f388 (patch)
tree6edf870463e2e7ad6c105a4f0c20346d0757e4d8 /xlators/cluster/afr
parent8a7b7b09c96ab3f3f3426b0176cd0115f350e50f (diff)
replicate: Restore parent ino from saved inode number
Not doing this was resulting in a 0 inode number being returned in postparent on lookup, which in turn results in a ESTALE at the NFS client since an inode number change was observed. Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 597 (miscellaneous fixes for xlators to work well with NFS xlator) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=597
Diffstat (limited to 'xlators/cluster/afr')
-rw-r--r--xlators/cluster/afr/src/afr.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/xlators/cluster/afr/src/afr.c b/xlators/cluster/afr/src/afr.c
index c041adc99..f4917929c 100644
--- a/xlators/cluster/afr/src/afr.c
+++ b/xlators/cluster/afr/src/afr.c
@@ -1003,6 +1003,9 @@ afr_lookup (call_frame_t *frame, xlator_t *this,
UNLOCK (&priv->read_child_lock);
}
+ if (loc->parent)
+ local->cont.lookup.parent_ino = loc->parent->ino;
+
local->child_up = memdup (priv->child_up, priv->child_count);
local->cont.lookup.xattrs = CALLOC (priv->child_count,