diff options
Diffstat (limited to 'xlators/nfs/server/src')
-rw-r--r-- | xlators/nfs/server/src/mount3.c | 4 | ||||
-rw-r--r-- | xlators/nfs/server/src/nfs-common.c | 7 | ||||
-rw-r--r-- | xlators/nfs/server/src/nfs-fops.c | 44 | ||||
-rw-r--r-- | xlators/nfs/server/src/nfs3.c | 2 |
4 files changed, 27 insertions, 30 deletions
diff --git a/xlators/nfs/server/src/mount3.c b/xlators/nfs/server/src/mount3.c index 89634af94c8..1b9fcfd103e 100644 --- a/xlators/nfs/server/src/mount3.c +++ b/xlators/nfs/server/src/mount3.c @@ -353,8 +353,8 @@ mnt3svc_mount_inode (rpcsvc_request_t *req, struct mount3_state *ms, ret = nfs_inode_loc_fill (exportinode, &exportloc); if (ret < 0) { gf_log (GF_MNT, GF_LOG_ERROR, "Loc fill failed for export inode" - ": ino %"PRIu64", volume: %s", - exportinode->ino, xl->name); + ": gfid %s, volume: %s", + uuid_utoa (exportinode->gfid), xl->name); goto err; } diff --git a/xlators/nfs/server/src/nfs-common.c b/xlators/nfs/server/src/nfs-common.c index 1c0fb175591..61dfeacf122 100644 --- a/xlators/nfs/server/src/nfs-common.c +++ b/xlators/nfs/server/src/nfs-common.c @@ -158,8 +158,6 @@ nfs_loc_wipe (loc_t *loc) inode_unref (loc->inode); loc->inode = NULL; } - - loc->ino = 0; } @@ -168,8 +166,6 @@ nfs_loc_copy (loc_t *dst, loc_t *src) { int ret = -1; - dst->ino = src->ino; - if (src->inode) dst->inode = inode_ref (src->inode); @@ -211,7 +207,6 @@ nfs_loc_fill (loc_t *loc, inode_t *inode, inode_t *parent, char *path) if (inode) { loc->inode = inode_ref (inode); - loc->ino = inode->ino; } if (parent) @@ -250,7 +245,7 @@ nfs_inode_loc_fill (inode_t *inode, loc_t *loc) if ((!inode) || (!loc)) return ret; - if ((inode) && (inode->ino == 1)) + if ((inode) && __is_root_gfid (inode->gfid)) goto ignore_parent; parent = inode_parent (inode, 0, NULL); diff --git a/xlators/nfs/server/src/nfs-fops.c b/xlators/nfs/server/src/nfs-fops.c index 95a657a1280..d9b419c4e16 100644 --- a/xlators/nfs/server/src/nfs-fops.c +++ b/xlators/nfs/server/src/nfs-fops.c @@ -152,21 +152,22 @@ err: * for us to determine in the callback whether to funge the ino in the stat buf * with 1 for the parent. */ -#define nfs_fop_save_root_ino(locl, loc) \ - do { \ - if ((loc)->ino == 1) \ - (locl)->rootinode = 1; \ - else if (((loc)->parent) && ((loc)->parent->ino == 1)) \ - (locl)->rootparentinode = 1; \ - } while (0) \ +#define nfs_fop_save_root_ino(locl, loc) \ + do { \ + if (((loc)->inode) && \ + __is_root_gfid ((loc)->inode->gfid)) \ + (locl)->rootinode = 1; \ + else if (((loc)->parent) && \ + __is_root_gfid ((loc)->parent->gfid)) \ + (locl)->rootparentinode = 1; \ + } while (0) /* Do the same for an fd */ -#define nfs_fop_save_root_fd_ino(locl, fdesc) \ - do { \ - if ((fdesc)->inode->ino == 1) \ - (locl)->rootinode = 1; \ - } while (0) \ - +#define nfs_fop_save_root_fd_ino(locl, fdesc) \ + do { \ + if (__is_root_gfid ((fdesc)->inode->gfid)) \ + (locl)->rootinode = 1; \ + } while (0) /* Use the state saved by the previous macro to funge the ino in the appropriate @@ -200,14 +201,15 @@ err: /* If the newly created, inode's parent is root, we'll need to funge the ino * in the parent attr when we receive them in the callback. */ -#define nfs_fop_newloc_save_root_ino(locl, newloc) \ - do { \ - if ((newloc)->ino == 1) \ - (locl)->newrootinode = 1; \ - else if (((newloc)->parent) && ((newloc)->parent->ino == 1)) \ - (locl)->newrootparentinode = 1; \ - } while (0) \ - +#define nfs_fop_newloc_save_root_ino(locl, newloc) \ + do { \ + if (((newloc)->inode) && \ + __is_root_gfid ((newloc)->inode->gfid)) \ + (locl)->newrootinode = 1; \ + else if (((newloc)->parent) && \ + __is_root_gfid ((newloc)->parent->gfid)) \ + (locl)->newrootparentinode = 1; \ + } while (0) #define nfs_fop_newloc_restore_root_ino(locl, fopret, preattr, postattr, prepar, postpar) \ do { \ diff --git a/xlators/nfs/server/src/nfs3.c b/xlators/nfs/server/src/nfs3.c index 751f00670a5..900321000b2 100644 --- a/xlators/nfs/server/src/nfs3.c +++ b/xlators/nfs/server/src/nfs3.c @@ -740,7 +740,7 @@ nfs3_getattr_resume (void *carg) * sent. AND, this causes a problem for stat-prefetch in that it * expects even the root inode to have been looked up. */ - if (cs->resolvedloc.inode->ino == 1) + if (__is_root_gfid (cs->resolvedloc.inode->gfid)) ret = nfs_lookup (cs->nfsx, cs->vol, &nfu, &cs->resolvedloc, nfs3svc_getattr_lookup_cbk, cs); else |