Page MenuHomeFreeBSD

D30090.diff
No OneTemporary

D30090.diff

diff --git a/sys/fs/nfs/nfsport.h b/sys/fs/nfs/nfsport.h
--- a/sys/fs/nfs/nfsport.h
+++ b/sys/fs/nfs/nfsport.h
@@ -1001,6 +1001,7 @@
int, int);
int newnfs_realign(struct mbuf **, int);
bool ncl_pager_setsize(struct vnode *vp, u_quad_t *nsizep);
+void ncl_copy_vattr(struct vattr *dst, struct vattr *src);
/*
* If the port runs on an SMP box that can enforce Atomic ops with low
diff --git a/sys/fs/nfsclient/nfs_clcomsubs.c b/sys/fs/nfsclient/nfs_clcomsubs.c
--- a/sys/fs/nfsclient/nfs_clcomsubs.c
+++ b/sys/fs/nfsclient/nfs_clcomsubs.c
@@ -285,6 +285,7 @@
fxdr_nfsv3time(&fp->fa3_ctime, &nap->na_ctime);
fxdr_nfsv3time(&fp->fa3_mtime, &nap->na_mtime);
nap->na_flags = 0;
+ nap->na_gen = 0;
nap->na_filerev = 0;
} else {
NFSM_DISSECT(fp, struct nfs_fattr *, NFSX_V2FATTR);
diff --git a/sys/fs/nfsclient/nfs_clport.c b/sys/fs/nfsclient/nfs_clport.c
--- a/sys/fs/nfsclient/nfs_clport.c
+++ b/sys/fs/nfsclient/nfs_clport.c
@@ -400,6 +400,28 @@
ncl_fileid_maxwarnings);
}
+void
+ncl_copy_vattr(struct vattr *dst, struct vattr *src)
+{
+ dst->va_type = src->va_type;
+ dst->va_mode = src->va_mode;
+ dst->va_nlink = src->va_nlink;
+ dst->va_uid = src->va_uid;
+ dst->va_gid = src->va_gid;
+ dst->va_fsid = src->va_fsid;
+ dst->va_fileid = src->va_fileid;
+ dst->va_size = src->va_size;
+ dst->va_blocksize = src->va_blocksize;
+ dst->va_atime = src->va_atime;
+ dst->va_mtime = src->va_mtime;
+ dst->va_ctime = src->va_ctime;
+ dst->va_gen = src->va_gen;
+ dst->va_flags = src->va_flags;
+ dst->va_rdev = src->va_rdev;
+ dst->va_bytes = src->va_bytes;
+ dst->va_filerev = src->va_filerev;
+}
+
/*
* Load the attribute cache (that lives in the nfsnode entry) with
* the attributes of the second argument and
@@ -551,7 +573,7 @@
KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp);
}
if (vaper != NULL) {
- NFSBCOPY((caddr_t)vap, (caddr_t)vaper, sizeof(*vap));
+ ncl_copy_vattr(vaper, vap);
if (np->n_flag & NCHG) {
if (np->n_flag & NACC)
vaper->va_atime = np->n_atim;
diff --git a/sys/fs/nfsclient/nfs_clvnops.c b/sys/fs/nfsclient/nfs_clvnops.c
--- a/sys/fs/nfsclient/nfs_clvnops.c
+++ b/sys/fs/nfsclient/nfs_clvnops.c
@@ -962,23 +962,8 @@
* First look in the cache.
*/
if (ncl_getattrcache(vp, &vattr) == 0) {
- vap->va_type = vattr.va_type;
- vap->va_mode = vattr.va_mode;
- vap->va_nlink = vattr.va_nlink;
- vap->va_uid = vattr.va_uid;
- vap->va_gid = vattr.va_gid;
- vap->va_fsid = vattr.va_fsid;
- vap->va_fileid = vattr.va_fileid;
- vap->va_size = vattr.va_size;
- vap->va_blocksize = vattr.va_blocksize;
- vap->va_atime = vattr.va_atime;
- vap->va_mtime = vattr.va_mtime;
- vap->va_ctime = vattr.va_ctime;
- vap->va_gen = vattr.va_gen;
- vap->va_flags = vattr.va_flags;
- vap->va_rdev = vattr.va_rdev;
- vap->va_bytes = vattr.va_bytes;
- vap->va_filerev = vattr.va_filerev;
+ ncl_copy_vattr(vap, &vattr);
+
/*
* Get the local modify time for the case of a write
* delegation.

File Metadata

Mime Type
text/plain
Expires
Mon, Jan 13, 12:59 AM (20 h, 56 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15774412
Default Alt Text
D30090.diff (2 KB)

Event Timeline