svn commit: r354161 - in stable/12: sys/fs/fuse tests/sys/fs/fusefs

Alan Somers asomers at FreeBSD.org
Wed Oct 30 01:35:03 UTC 2019


Author: asomers
Date: Wed Oct 30 01:35:00 2019
New Revision: 354161
URL: https://svnweb.freebsd.org/changeset/base/354161

Log:
  MFC r352404, r352413-r352414
  
  r352404:
  fusefs: fix some minor issues with fuse_vnode_setparent
  
  * When unparenting a vnode, actually clear the flag. AFAIK this is basically
    a no-op because we only unparent a vnode when reclaiming it or when
    unlinking.
  
  * There's no need to call fuse_vnode_setparent during reclaim, because we're
    about to free the vnode data anyway.
  
  Reviewed by:	emaste
  Sponsored by:	The FreeBSD Foundation
  Differential Revision:	https://reviews.freebsd.org/D21630
  
  r352413:
  fusefs: fix some minor Coverity CIDs in the tests
  
  Where open(2) is expected to fail, the tests should assert or expect that
  its return value is -1.  These tests all accepted too much but happened to
  pass anyway.
  
  Reported by:	Coverity
  Coverity CID:	1404512, 1404378, 1404504, 1404483
  Sponsored by:	The FreeBSD Foundation
  
  r352414:
  fusefs: initialize C++ classes the Coverity way
  
  Coverity complained that I wasn't initializing some class members until the
  SetUp method.  Do it in the constructor instead.
  
  Reported by:	Coverity
  Coverity CIDs:	1404352, 1404378
  Sponsored by:	The FreeBSD Foundation

Modified:
  stable/12/sys/fs/fuse/fuse_node.h
  stable/12/sys/fs/fuse/fuse_vnops.c
  stable/12/tests/sys/fs/fusefs/create.cc
  stable/12/tests/sys/fs/fusefs/default_permissions.cc
  stable/12/tests/sys/fs/fusefs/io.cc
  stable/12/tests/sys/fs/fusefs/mknod.cc
  stable/12/tests/sys/fs/fusefs/opendir.cc
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/fs/fuse/fuse_node.h
==============================================================================
--- stable/12/sys/fs/fuse/fuse_node.h	Wed Oct 30 01:24:28 2019	(r354160)
+++ stable/12/sys/fs/fuse/fuse_node.h	Wed Oct 30 01:35:00 2019	(r354161)
@@ -174,6 +174,8 @@ fuse_vnode_setparent(struct vnode *vp, struct vnode *d
 		MPASS(dvp->v_type == VDIR);
 		VTOFUD(vp)->parent_nid = VTOI(dvp);
 		VTOFUD(vp)->flag |= FN_PARENT_NID;
+	} else {
+		VTOFUD(vp)->flag &= ~FN_PARENT_NID;
 	}
 }
 

Modified: stable/12/sys/fs/fuse/fuse_vnops.c
==============================================================================
--- stable/12/sys/fs/fuse/fuse_vnops.c	Wed Oct 30 01:24:28 2019	(r354160)
+++ stable/12/sys/fs/fuse/fuse_vnops.c	Wed Oct 30 01:35:00 2019	(r354161)
@@ -1526,11 +1526,10 @@ fuse_vnop_reclaim(struct vop_reclaim_args *ap)
 		fuse_filehandle_close(vp, fufh, td, NULL);
 	}
 
-	if ((!fuse_isdeadfs(vp)) && (fvdat->nlookup)) {
+	if (!fuse_isdeadfs(vp) && fvdat->nlookup > 0) {
 		fuse_internal_forget_send(vnode_mount(vp), td, NULL, VTOI(vp),
 		    fvdat->nlookup);
 	}
-	fuse_vnode_setparent(vp, NULL);
 	cache_purge(vp);
 	vfs_hash_remove(vp);
 	vnode_destroy_vobject(vp);

Modified: stable/12/tests/sys/fs/fusefs/create.cc
==============================================================================
--- stable/12/tests/sys/fs/fusefs/create.cc	Wed Oct 30 01:24:28 2019	(r354160)
+++ stable/12/tests/sys/fs/fusefs/create.cc	Wed Oct 30 01:35:00 2019	(r354161)
@@ -204,7 +204,7 @@ TEST_F(Create, eexist)
 	EXPECT_LOOKUP(FUSE_ROOT_ID, RELPATH)
 		.WillOnce(Invoke(ReturnErrno(ENOENT)));
 	expect_create(RELPATH, mode, ReturnErrno(EEXIST));
-	EXPECT_NE(0, open(FULLPATH, O_CREAT | O_EXCL, mode));
+	EXPECT_EQ(-1, open(FULLPATH, O_CREAT | O_EXCL, mode));
 	EXPECT_EQ(EEXIST, errno);
 }
 
@@ -342,7 +342,7 @@ TEST_F(Create, eperm)
 		.WillOnce(Invoke(ReturnErrno(ENOENT)));
 	expect_create(RELPATH, mode, ReturnErrno(EPERM));
 
-	EXPECT_NE(0, open(FULLPATH, O_CREAT | O_EXCL, mode));
+	EXPECT_EQ(-1, open(FULLPATH, O_CREAT | O_EXCL, mode));
 	EXPECT_EQ(EPERM, errno);
 }
 

Modified: stable/12/tests/sys/fs/fusefs/default_permissions.cc
==============================================================================
--- stable/12/tests/sys/fs/fusefs/default_permissions.cc	Wed Oct 30 01:24:28 2019	(r354160)
+++ stable/12/tests/sys/fs/fusefs/default_permissions.cc	Wed Oct 30 01:35:00 2019	(r354161)
@@ -749,7 +749,7 @@ TEST_F(Open, eacces)
 	expect_getattr(FUSE_ROOT_ID, S_IFDIR | 0755, UINT64_MAX, 1);
 	expect_lookup(RELPATH, ino, S_IFREG | 0644, UINT64_MAX);
 
-	EXPECT_NE(0, open(FULLPATH, O_RDWR));
+	EXPECT_EQ(-1, open(FULLPATH, O_RDWR));
 	EXPECT_EQ(EACCES, errno);
 }
 

Modified: stable/12/tests/sys/fs/fusefs/io.cc
==============================================================================
--- stable/12/tests/sys/fs/fusefs/io.cc	Wed Oct 30 01:24:28 2019	(r354160)
+++ stable/12/tests/sys/fs/fusefs/io.cc	Wed Oct 30 01:35:00 2019	(r354161)
@@ -108,11 +108,11 @@ int m_backing_fd, m_control_fd, m_test_fd;
 off_t m_filesize;
 bool m_direct_io;
 
-Io(): m_backing_fd(-1), m_control_fd(-1), m_test_fd(-1), m_direct_io(false) {};
+Io(): m_backing_fd(-1), m_control_fd(-1), m_test_fd(-1), m_filesize(0),
+	m_direct_io(false) {};
 
 void SetUp()
 {
-	m_filesize = 0;
 	m_backing_fd = open("backing_file", O_RDWR | O_CREAT | O_TRUNC, 0644);
 	if (m_backing_fd < 0)
 		FAIL() << strerror(errno);

Modified: stable/12/tests/sys/fs/fusefs/mknod.cc
==============================================================================
--- stable/12/tests/sys/fs/fusefs/mknod.cc	Wed Oct 30 01:24:28 2019	(r354160)
+++ stable/12/tests/sys/fs/fusefs/mknod.cc	Wed Oct 30 01:35:00 2019	(r354161)
@@ -55,8 +55,11 @@ const static mode_t c_umask = 022;
 
 public:
 
-virtual void SetUp() {
+Mknod() {
 	m_oldmask = umask(c_umask);
+}
+
+virtual void SetUp() {
 	if (geteuid() != 0) {
 		GTEST_SKIP() << "Only root may use most mknod(2) variations";
 	}

Modified: stable/12/tests/sys/fs/fusefs/opendir.cc
==============================================================================
--- stable/12/tests/sys/fs/fusefs/opendir.cc	Wed Oct 30 01:24:28 2019	(r354160)
+++ stable/12/tests/sys/fs/fusefs/opendir.cc	Wed Oct 30 01:35:00 2019	(r354161)
@@ -103,7 +103,7 @@ TEST_F(Opendir, eperm)
 	expect_lookup(RELPATH, ino);
 	expect_opendir(ino, O_RDONLY, ReturnErrno(EPERM));
 
-	EXPECT_NE(0, open(FULLPATH, O_DIRECTORY));
+	EXPECT_EQ(-1, open(FULLPATH, O_DIRECTORY));
 	EXPECT_EQ(EPERM, errno);
 }
 


More information about the svn-src-all mailing list