From owner-svn-src-projects@freebsd.org Thu Mar 21 21:53:56 2019 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id BD5211550DD5 for ; Thu, 21 Mar 2019 21:53:56 +0000 (UTC) (envelope-from asomers@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 636768289F; Thu, 21 Mar 2019 21:53:56 +0000 (UTC) (envelope-from asomers@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 4018DF129; Thu, 21 Mar 2019 21:53:56 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2LLruDP032194; Thu, 21 Mar 2019 21:53:56 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2LLrtXu032191; Thu, 21 Mar 2019 21:53:55 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201903212153.x2LLrtXu032191@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers Date: Thu, 21 Mar 2019 21:53:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345390 - in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Commit-Revision: 345390 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 636768289F X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; NEURAL_HAM_SHORT(-0.97)[-0.974,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0] 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: Thu, 21 Mar 2019 21:53:57 -0000 Author: asomers Date: Thu Mar 21 21:53:55 2019 New Revision: 345390 URL: https://svnweb.freebsd.org/changeset/base/345390 Log: fusefs: VOP_FSYNC should be synchronous returning asynchronously pretty much defeats the point of fsync PR: 236474 Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c projects/fuse2/sys/fs/fuse/fuse_vnops.c projects/fuse2/tests/sys/fs/fusefs/fsync.cc Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_internal.c Thu Mar 21 21:45:18 2019 (r345389) +++ projects/fuse2/sys/fs/fuse/fuse_internal.c Thu Mar 21 21:53:55 2019 (r345390) @@ -287,6 +287,7 @@ fuse_internal_fsync(struct vnode *vp, int op = FUSE_FSYNC; struct fuse_fsync_in *ffsi; struct fuse_dispatcher fdi; + int err; if (vnode_isdir(vp)) { op = FUSE_FSYNCDIR; @@ -298,13 +299,10 @@ fuse_internal_fsync(struct vnode *vp, ffsi->fsync_flags = 1; /* datasync */ - fuse_insert_callback(fdi.tick, fuse_internal_fsync_callback); - fuse_insert_message(fdi.tick); - + err = fdisp_wait_answ(&fdi); fdisp_destroy(&fdi); - return 0; - + return err; } /* readdir */ Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_vnops.c Thu Mar 21 21:45:18 2019 (r345389) +++ projects/fuse2/sys/fs/fuse/fuse_vnops.c Thu Mar 21 21:53:55 2019 (r345390) @@ -454,12 +454,12 @@ fuse_vnop_fsync(struct vop_fsync_args *ap) for (type = 0; type < FUFH_MAXTYPE; type++) { fufh = &(fvdat->fufh[type]); if (FUFH_IS_VALID(fufh)) { - fuse_internal_fsync(vp, td, NULL, fufh); + err = fuse_internal_fsync(vp, td, NULL, fufh); } } out: - return 0; + return err; } /* Modified: projects/fuse2/tests/sys/fs/fusefs/fsync.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/fsync.cc Thu Mar 21 21:45:18 2019 (r345389) +++ projects/fuse2/tests/sys/fs/fusefs/fsync.cc Thu Mar 21 21:53:55 2019 (r345390) @@ -77,7 +77,6 @@ void expect_write(uint64_t ino, uint64_t size, const v /* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236379 */ /* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236473 */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236474 */ TEST_F(Fsync, DISABLED_aio_fsync) { const char FULLPATH[] = "mountpoint/some_file.txt"; @@ -149,8 +148,7 @@ TEST_F(Fsync, close) close(fd); } -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236474 */ -TEST_F(Fsync, DISABLED_eio) +TEST_F(Fsync, eio) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; @@ -179,7 +177,6 @@ TEST_F(Fsync, DISABLED_eio) * subsequent calls to VOP_FSYNC will succeed automatically without being sent * to the filesystem daemon */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236474 */ /* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236557 */ TEST_F(Fsync, DISABLED_enosys) { @@ -207,8 +204,7 @@ TEST_F(Fsync, DISABLED_enosys) } -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236474 */ -TEST_F(Fsync, DISABLED_fdatasync) +TEST_F(Fsync, fdatasync) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; @@ -232,7 +228,6 @@ TEST_F(Fsync, DISABLED_fdatasync) } /* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236473 */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236474 */ TEST_F(Fsync, DISABLED_fsync) { const char FULLPATH[] = "mountpoint/some_file.txt"; @@ -258,7 +253,6 @@ TEST_F(Fsync, DISABLED_fsync) /* Fsync should sync a file with dirty metadata but clean data */ /* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236473 */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236474 */ TEST_F(Fsync, DISABLED_fsync_metadata_only) { const char FULLPATH[] = "mountpoint/some_file.txt"; @@ -289,25 +283,3 @@ TEST_F(Fsync, DISABLED_fsync_metadata_only) ASSERT_EQ(0, fsync(fd)) << strerror(errno); /* Deliberately leak fd. close(2) will be tested in release.cc */ } - -// fsync()ing a file that isn't dirty should be a no-op -TEST_F(Fsync, nop) -{ - const char FULLPATH[] = "mountpoint/some_file.txt"; - const char RELPATH[] = "some_file.txt"; - uint64_t ino = 42; - int fd; - - expect_lookup(RELPATH, ino); - expect_open(ino, 0, 1); - expect_getattr(ino, 0); - - fd = open(FULLPATH, O_WRONLY); - ASSERT_LE(0, fd) << strerror(errno); - - ASSERT_EQ(0, fsync(fd)) << strerror(errno); - - /* Deliberately leak fd. close(2) will be tested in release.cc */ -} - -// TODO: ENOSYS test