summaryrefslogtreecommitdiffstats
path: root/sys/fs/nfs/nfsproto.h
diff options
context:
space:
mode:
authorrmacklem <rmacklem@FreeBSD.org>2011-06-28 22:52:38 +0000
committerrmacklem <rmacklem@FreeBSD.org>2011-06-28 22:52:38 +0000
commit0393f389af4d3d0b054c79ffd0af82e081218262 (patch)
tree979886e8e89b86282d64a53c2b4ed0f99b3ddc6f /sys/fs/nfs/nfsproto.h
parent82faa3e64109fa8b1a1833758bd1404e494548b2 (diff)
downloadFreeBSD-src-0393f389af4d3d0b054c79ffd0af82e081218262.zip
FreeBSD-src-0393f389af4d3d0b054c79ffd0af82e081218262.tar.gz
Fix the new NFSv4 client so that it doesn't fill the cached
mode attribute in as 0 when doing writes. The change adds the Mode attribute plus the others except Owner and Owner_group to the list requested by the NFSv4 Write Operation. This fixed a problem where an executable file built by "cc" would get mode 0111 instead of 0755 for some NFSv4 servers. Found at the recent NFSv4 interoperability Bakeathon. Tested by: tdh at excfb.com MFC after: 2 weeks
Diffstat (limited to 'sys/fs/nfs/nfsproto.h')
-rw-r--r--sys/fs/nfs/nfsproto.h15
1 files changed, 12 insertions, 3 deletions
diff --git a/sys/fs/nfs/nfsproto.h b/sys/fs/nfs/nfsproto.h
index a15f93b..5ae2e3d 100644
--- a/sys/fs/nfs/nfsproto.h
+++ b/sys/fs/nfs/nfsproto.h
@@ -868,15 +868,24 @@ struct nfsv3_sattr {
* NFSATTRBIT_WRITEGETATTR0 - bits 0<->31
*/
#define NFSATTRBIT_WRITEGETATTR0 \
- (NFSATTRBM_CHANGE | \
+ (NFSATTRBM_SUPPORTEDATTRS | \
+ NFSATTRBM_TYPE | \
+ NFSATTRBM_CHANGE | \
NFSATTRBM_SIZE | \
- NFSATTRBM_FSID)
+ NFSATTRBM_FSID | \
+ NFSATTRBM_FILEID | \
+ NFSATTRBM_MAXREAD)
/*
* NFSATTRBIT_WRITEGETATTR1 - bits 32<->63
*/
#define NFSATTRBIT_WRITEGETATTR1 \
- (NFSATTRBM_TIMEMETADATA | \
+ (NFSATTRBM_MODE | \
+ NFSATTRBM_NUMLINKS | \
+ NFSATTRBM_RAWDEV | \
+ NFSATTRBM_SPACEUSED | \
+ NFSATTRBM_TIMEACCESS | \
+ NFSATTRBM_TIMEMETADATA | \
NFSATTRBM_TIMEMODIFY)
/*
OpenPOWER on IntegriCloud