svn commit: r353097 - projects/nfsv42/sys/fs/nfsclient

Rick Macklem rmacklem at FreeBSD.org
Fri Oct 4 04:57:37 UTC 2019


Author: rmacklem
Date: Fri Oct  4 04:57:36 2019
New Revision: 353097
URL: https://svnweb.freebsd.org/changeset/base/353097

Log:
  Flush writes for both in and out files before NFSv4.2 Copy in client.
  
  The input file needs to be up to date on the server and the writes
  need to be flushed on the output file so that they don't overwrite
  copied data on the server.

Modified:
  projects/nfsv42/sys/fs/nfsclient/nfs_clvnops.c

Modified: projects/nfsv42/sys/fs/nfsclient/nfs_clvnops.c
==============================================================================
--- projects/nfsv42/sys/fs/nfsclient/nfs_clvnops.c	Fri Oct  4 03:55:53 2019	(r353096)
+++ projects/nfsv42/sys/fs/nfsclient/nfs_clvnops.c	Fri Oct  4 04:57:36 2019	(r353097)
@@ -3584,6 +3584,15 @@ nfs_copy_file_range(struct vop_copy_file_range_args *a
 	io.uio_resid = *ap->a_lenp;
 	error = vn_rlimit_fsize(outvp, &io, ap->a_fsizetd);
 
+	/*
+	 * Flush all writes for both files, so they will be up to date
+	 * on the server before doing the copy.
+	 */
+	if (error == 0)
+		error = ncl_flush(invp, MNT_WAIT, curthread, 1, 0);
+	if (error == 0)
+		error = ncl_flush(outvp, MNT_WAIT, curthread, 1, 0);
+
 	/* Do the actual NFSv4.2 RPC. */
 	len = *ap->a_lenp;
 	mtx_lock(&nmp->nm_mtx);


More information about the svn-src-projects mailing list