diff options
author | Mohammed Rafi KC <rkavunga@redhat.com> | 2016-01-12 12:04:59 +0530 |
---|---|---|
committer | Dan Lambright <dlambrig@redhat.com> | 2016-02-22 06:49:05 -0800 |
commit | 4baa960b95a33af30de1ca90d9b37b04e10fd0ff (patch) | |
tree | e725a8aa83ae235f79146539c1df9613c7796cb4 /xlators/nfs/server/src/nfs-common.c | |
parent | ad715122329d06d73a215c97ceb6221c31c09f7c (diff) |
nfs: send lookup if inode_ctx is not set
During resolving of an entry or inode, if inode ctx
was not set, we will send a lookup.
This patch also make sure that inode_ctx will be created
after every inode_link.
Back port of>
>Change-Id: I137a7e2510635ff4ea6d007b671961341f89c949
>BUG: 1297311
>Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
>Reviewed-on: http://review.gluster.org/13224
>Reviewed-by: soumya k <skoduri@redhat.com>
>Tested-by: NetBSD Build System <jenkins@build.gluster.org>
>Reviewed-by: Dan Lambright <dlambrig@redhat.com>
>Tested-by: Dan Lambright <dlambrig@redhat.com>
Change-Id: I2034521e23ef24ac75f80aff736abf5811fc0de6
BUG: 1306131
Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
Reviewed-on: http://review.gluster.org/13413
Smoke: Gluster Build System <jenkins@build.gluster.com>
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
Reviewed-by: Dan Lambright <dlambrig@redhat.com>
Diffstat (limited to 'xlators/nfs/server/src/nfs-common.c')
-rw-r--r-- | xlators/nfs/server/src/nfs-common.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/xlators/nfs/server/src/nfs-common.c b/xlators/nfs/server/src/nfs-common.c index b6791566c2c..cfb0edd1294 100644 --- a/xlators/nfs/server/src/nfs-common.c +++ b/xlators/nfs/server/src/nfs-common.c @@ -331,8 +331,8 @@ err: * On other errors, return -3. 0 on success. */ int -nfs_entry_loc_fill (inode_table_t *itable, uuid_t pargfid, char *entry, - loc_t *loc, int how) +nfs_entry_loc_fill (xlator_t *this, inode_table_t *itable, uuid_t pargfid, + char *entry, loc_t *loc, int how) { inode_t *parent = NULL; inode_t *entryinode = NULL; @@ -347,21 +347,22 @@ nfs_entry_loc_fill (inode_table_t *itable, uuid_t pargfid, char *entry, ret = -1; /* Will need hard resolution now */ - if (!parent) + if (!parent || inode_ctx_get (parent, this, NULL)) goto err; gf_uuid_copy (loc->pargfid, pargfid); ret = -2; entryinode = inode_grep (itable, parent, entry); - if (!entryinode) { + if (!entryinode || inode_ctx_get (entryinode, this, NULL)) { if (how == NFS_RESOLVE_CREATE) { /* Even though we'll create the inode and the loc for * a missing inode, we still need to return -2 so * that the caller can use the filled loc to call * lookup. */ - entryinode = inode_new (itable); + if (!entryinode) + entryinode = inode_new (itable); /* Cannot change ret because that must * continue to have -2. */ |