svn commit: r362490 - head/sys/fs/nfs
Doug Rabson
dfr at FreeBSD.org
Mon Jun 22 08:23:17 UTC 2020
Author: dfr
Date: Mon Jun 22 08:23:16 2020
New Revision: 362490
URL: https://svnweb.freebsd.org/changeset/base/362490
Log:
Add some missing parts for supporting va_birthtime.
Reviewed by: rmacklem
Modified:
head/sys/fs/nfs/nfs_commonsubs.c
head/sys/fs/nfs/nfsport.h
head/sys/fs/nfs/nfsproto.h
Modified: head/sys/fs/nfs/nfs_commonsubs.c
==============================================================================
--- head/sys/fs/nfs/nfs_commonsubs.c Mon Jun 22 08:12:21 2020 (r362489)
+++ head/sys/fs/nfs/nfs_commonsubs.c Mon Jun 22 08:23:16 2020 (r362490)
@@ -594,6 +594,8 @@ nfscl_fillsattr(struct nfsrv_descript *nd, struct vatt
NFSSETBIT_ATTRBIT(&attrbits, NFSATTRBIT_TIMEACCESSSET);
if (vap->va_mtime.tv_sec != VNOVAL)
NFSSETBIT_ATTRBIT(&attrbits, NFSATTRBIT_TIMEMODIFYSET);
+ if (vap->va_birthtime.tv_sec != VNOVAL)
+ NFSSETBIT_ATTRBIT(&attrbits, NFSATTRBIT_TIMECREATE);
(void) nfsv4_fillattr(nd, vp->v_mount, vp, NULL, vap, NULL, 0,
&attrbits, NULL, NULL, 0, 0, 0, 0, (uint64_t)0, NULL);
break;
@@ -2043,8 +2045,15 @@ nfsv4_loadattr(struct nfsrv_descript *nd, vnode_t vp,
break;
case NFSATTRBIT_TIMECREATE:
NFSM_DISSECT(tl, u_int32_t *, NFSX_V4TIME);
- if (compare && !(*retcmpp))
- *retcmpp = NFSERR_ATTRNOTSUPP;
+ fxdr_nfsv4time(tl, &temptime);
+ if (compare) {
+ if (!(*retcmpp)) {
+ if (!NFS_CMPTIME(temptime, nap->na_btime))
+ *retcmpp = NFSERR_NOTSAME;
+ }
+ } else if (nap != NULL) {
+ nap->na_btime = temptime;
+ }
attrsum += NFSX_V4TIME;
break;
case NFSATTRBIT_TIMEDELTA:
Modified: head/sys/fs/nfs/nfsport.h
==============================================================================
--- head/sys/fs/nfs/nfsport.h Mon Jun 22 08:12:21 2020 (r362489)
+++ head/sys/fs/nfs/nfsport.h Mon Jun 22 08:23:16 2020 (r362490)
@@ -649,6 +649,7 @@ struct nfsvattr {
#define na_atime na_vattr.va_atime
#define na_mtime na_vattr.va_mtime
#define na_ctime na_vattr.va_ctime
+#define na_btime na_vattr.va_birthtime
#define na_gen na_vattr.va_gen
#define na_flags na_vattr.va_flags
#define na_rdev na_vattr.va_rdev
Modified: head/sys/fs/nfs/nfsproto.h
==============================================================================
--- head/sys/fs/nfs/nfsproto.h Mon Jun 22 08:12:21 2020 (r362489)
+++ head/sys/fs/nfs/nfsproto.h Mon Jun 22 08:23:16 2020 (r362490)
@@ -1127,6 +1127,7 @@ struct nfsv3_sattr {
NFSATTRBM_SPACETOTAL | \
NFSATTRBM_SPACEUSED | \
NFSATTRBM_TIMEACCESS | \
+ NFSATTRBM_TIMECREATE | \
NFSATTRBM_TIMEDELTA | \
NFSATTRBM_TIMEMETADATA | \
NFSATTRBM_TIMEMODIFY | \
@@ -1176,6 +1177,7 @@ struct nfsv3_sattr {
(NFSATTRBM_MODE | \
NFSATTRBM_OWNER | \
NFSATTRBM_OWNERGROUP | \
+ NFSATTRBM_TIMECREATE | \
NFSATTRBM_TIMEACCESSSET | \
NFSATTRBM_TIMEMODIFYSET)
#define NFSATTRBIT_SETABLE2 \
More information about the svn-src-all
mailing list