diff options
Diffstat (limited to 'xlators/nfs/server/src/nfs3-helpers.c')
| -rw-r--r-- | xlators/nfs/server/src/nfs3-helpers.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/xlators/nfs/server/src/nfs3-helpers.c b/xlators/nfs/server/src/nfs3-helpers.c index 7fa278fdc24..897fb42b071 100644 --- a/xlators/nfs/server/src/nfs3-helpers.c +++ b/xlators/nfs/server/src/nfs3-helpers.c @@ -10,18 +10,18 @@ #include <inttypes.h> -#include "xlator.h" +#include <glusterfs/xlator.h> #include "nfs3.h" #include "nfs3-fh.h" #include "msg-nfs3.h" -#include "rbthash.h" +#include <glusterfs/rbthash.h> #include "nfs-fops.h" #include "nfs-inodes.h" #include "nfs-generics.h" #include "nfs3-helpers.h" #include "nfs-mem-types.h" -#include "iatt.h" -#include "common-utils.h" +#include <glusterfs/iatt.h> +#include <glusterfs/common-utils.h> #include "nfs-messages.h" #include "mount3.h" #include <string.h> @@ -1072,7 +1072,7 @@ nfs3_sattr3_to_setattr_valid(sattr3 *sattr, struct iatt *buf, mode_t *omode) if (sattr->atime.set_it == SET_TO_SERVER_TIME) { valid |= GF_SET_ATTR_ATIME; if (buf) - buf->ia_atime = time(NULL); + buf->ia_atime = gf_time(); } if (sattr->mtime.set_it == SET_TO_CLIENT_TIME) { @@ -1084,7 +1084,7 @@ nfs3_sattr3_to_setattr_valid(sattr3 *sattr, struct iatt *buf, mode_t *omode) if (sattr->mtime.set_it == SET_TO_SERVER_TIME) { valid |= GF_SET_ATTR_MTIME; if (buf) - buf->ia_mtime = time(NULL); + buf->ia_mtime = gf_time(); } return valid; @@ -3556,6 +3556,12 @@ nfs3_fh_resolve_entry_lookup_cbk(call_frame_t *frame, void *cookie, inode_lookup(linked_inode); inode_unref(cs->resolvedloc.inode); cs->resolvedloc.inode = linked_inode; + } else { + /* nfs3_fh_resolve_entry_hard() use to resolve entire path if needed. + * So the ctx for inode obtained from here need to set properly, + * otherwise it may result in a crash. + */ + nfs_fix_generation(this, inode); } err: nfs3_call_resume(cs); |
