From owner-svn-src-projects@freebsd.org Fri Oct 4 04:57:37 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1F9C5FB786 for ; Fri, 4 Oct 2019 04:57:37 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46kyKr75K7z3xvX; Fri, 4 Oct 2019 04:57:36 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D23981F3B5; Fri, 4 Oct 2019 04:57:36 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x944vaiu065879; Fri, 4 Oct 2019 04:57:36 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x944vaDh065878; Fri, 4 Oct 2019 04:57:36 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201910040457.x944vaDh065878@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Fri, 4 Oct 2019 04:57:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r353097 - projects/nfsv42/sys/fs/nfsclient X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/nfsv42/sys/fs/nfsclient X-SVN-Commit-Revision: 353097 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 Oct 2019 04:57:37 -0000 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);