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
This commit is contained in:
parent
3f9bdcef12
commit
f8dee27442
@ -3454,7 +3454,12 @@ nfsrv_commit(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
||||
}
|
||||
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
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user