svn commit: r228520 - head/sys/nfsserver
Xin LI
delphij at FreeBSD.org
Thu Dec 15 02:26:54 UTC 2011
Author: delphij
Date: Thu Dec 15 02:26:53 2011
New Revision: 228520
URL: http://svn.freebsd.org/changeset/base/228520
Log:
Honor NFSv3 commit call (RFC 1813, Section 3.3.21) where when count is 0,
the full length from offset is being flushed. Note that for now VOP_FSYNC
does not support offset and length parameters so we still do the same full
VOP_FSYNC. This issue was reported at FreeNAS support site as FreeNAS
ticket #1096.
Submitted by: "ceckerle" <ce.freenas eckerle net>
Prodded by: gcooper
Reviewed by: rmacklem
MFC after: 2 weeks
Modified:
head/sys/nfsserver/nfs_serv.c
Modified: head/sys/nfsserver/nfs_serv.c
==============================================================================
--- head/sys/nfsserver/nfs_serv.c Thu Dec 15 01:05:38 2011 (r228519)
+++ head/sys/nfsserver/nfs_serv.c Thu Dec 15 02:26:53 2011 (r228520)
@@ -3454,7 +3454,12 @@ nfsrv_commit(struct nfsrv_descript *nfsd
}
for_ret = VOP_GETATTR(vp, &bfor, cred);
- if (cnt > MAX_COMMIT_COUNT) {
+ /*
+ * RFC 1813 3.3.21: if count is 0, a flush from offset to the end of file
+ * is done. At this time VOP_FSYNC does not accept offset and byte count
+ * parameters so call VOP_FSYNC the whole file for now.
+ */
+ if (cnt == 0 || cnt > MAX_COMMIT_COUNT) {
/*
* Give up and do the whole thing
*/
More information about the svn-src-head
mailing list