Blob Blame History Raw
From c62faa301922c10d96634c4a09a9a5406b4c24a6 Mon Sep 17 00:00:00 2001
From: Raghavendra Talur <rtalur@redhat.com>
Date: Mon, 9 May 2016 21:06:07 +0530
Subject: [PATCH 147/158] gfapi: clear loc.gfid when retrying after ESTALE

If an ESTALE is returned as result of a revalidate lookup, it means the
previous gfid and inode are to be discarded and lookup has to be tried
as a fresh one. A fresh lookup should not have loc.gfid set. We were
creating a new inode and passing it down but not clearing loc.gfid.
This patch fixes that.

>Change-Id: Ib192ada0528b5fb5e49b4e2555f2bcab62710e2d
>BUG: 1334444
>Signed-off-by: Raghavendra Talur <rtalur@redhat.com>
>Reviewed-on: http://review.gluster.org/14274
>Smoke: Gluster Build System <jenkins@build.gluster.com>
>NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
>Reviewed-by: Niels de Vos <ndevos@redhat.com>
>CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
>Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
>Signed-off-by: Raghavendra Talur <rtalur@redhat.com>

Change-Id: Ib192ada0528b5fb5e49b4e2555f2bcab62710e2d
BUG: 1333668
Signed-off-by: Raghavendra Talur <rtalur@redhat.com>
Reviewed-on: https://code.engineering.redhat.com/gerrit/74096
Reviewed-by: Rajesh Joseph <rjoseph@redhat.com>
---
 api/src/glfs-resolve.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/api/src/glfs-resolve.c b/api/src/glfs-resolve.c
index f893332..fa63a1e 100644
--- a/api/src/glfs-resolve.c
+++ b/api/src/glfs-resolve.c
@@ -318,6 +318,7 @@ glfs_resolve_component (struct glfs *fs, xlator_t *subvol, inode_t *parent,
                         inode_unlink(loc.inode, loc.parent,
                                      loc.name);
 		inode_unref (loc.inode);
+	        gf_uuid_clear (loc.gfid);
 		loc.inode = inode_new (parent->table);
 		if (!loc.inode) {
 			errno = ENOMEM;
-- 
1.7.1