Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 May 2019 17:08:16 +0000 (UTC)
From:      Alan Somers <asomers@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r348307 - projects/fuse2/tests/sys/fs/fusefs
Message-ID:  <201905271708.x4RH8G2m089942@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: asomers
Date: Mon May 27 17:08:16 2019
New Revision: 348307
URL: https://svnweb.freebsd.org/changeset/base/348307

Log:
  fusefs: make the tests more cplusplusy
  
  * Prefer std::unique_ptr to raw pointers
  * Prefer pass-by-reference to pass-by-pointer
  * Prefer static_cast to C-style cast, unless it's too much typing
  
  Reported by:	ngie
  Sponsored by:	The FreeBSD Foundation

Modified:
  projects/fuse2/tests/sys/fs/fusefs/allow_other.cc
  projects/fuse2/tests/sys/fs/fusefs/create.cc
  projects/fuse2/tests/sys/fs/fusefs/default_permissions.cc
  projects/fuse2/tests/sys/fs/fusefs/default_permissions_privileged.cc
  projects/fuse2/tests/sys/fs/fusefs/dev_fuse_poll.cc
  projects/fuse2/tests/sys/fs/fusefs/fifo.cc
  projects/fuse2/tests/sys/fs/fusefs/flush.cc
  projects/fuse2/tests/sys/fs/fusefs/fsync.cc
  projects/fuse2/tests/sys/fs/fusefs/fsyncdir.cc
  projects/fuse2/tests/sys/fs/fusefs/getattr.cc
  projects/fuse2/tests/sys/fs/fusefs/interrupt.cc
  projects/fuse2/tests/sys/fs/fusefs/link.cc
  projects/fuse2/tests/sys/fs/fusefs/locks.cc
  projects/fuse2/tests/sys/fs/fusefs/lookup.cc
  projects/fuse2/tests/sys/fs/fusefs/mkdir.cc
  projects/fuse2/tests/sys/fs/fusefs/mknod.cc
  projects/fuse2/tests/sys/fs/fusefs/mockfs.cc
  projects/fuse2/tests/sys/fs/fusefs/mockfs.hh
  projects/fuse2/tests/sys/fs/fusefs/mount.cc
  projects/fuse2/tests/sys/fs/fusefs/nfs.cc
  projects/fuse2/tests/sys/fs/fusefs/open.cc
  projects/fuse2/tests/sys/fs/fusefs/opendir.cc
  projects/fuse2/tests/sys/fs/fusefs/read.cc
  projects/fuse2/tests/sys/fs/fusefs/readdir.cc
  projects/fuse2/tests/sys/fs/fusefs/readlink.cc
  projects/fuse2/tests/sys/fs/fusefs/release.cc
  projects/fuse2/tests/sys/fs/fusefs/releasedir.cc
  projects/fuse2/tests/sys/fs/fusefs/rename.cc
  projects/fuse2/tests/sys/fs/fusefs/rmdir.cc
  projects/fuse2/tests/sys/fs/fusefs/setattr.cc
  projects/fuse2/tests/sys/fs/fusefs/statfs.cc
  projects/fuse2/tests/sys/fs/fusefs/symlink.cc
  projects/fuse2/tests/sys/fs/fusefs/unlink.cc
  projects/fuse2/tests/sys/fs/fusefs/utils.cc
  projects/fuse2/tests/sys/fs/fusefs/write.cc
  projects/fuse2/tests/sys/fs/fusefs/xattr.cc

Modified: projects/fuse2/tests/sys/fs/fusefs/allow_other.cc
==============================================================================
--- projects/fuse2/tests/sys/fs/fusefs/allow_other.cc	Mon May 27 15:21:26 2019	(r348306)
+++ projects/fuse2/tests/sys/fs/fusefs/allow_other.cc	Mon May 27 17:08:16 2019	(r348307)
@@ -108,9 +108,9 @@ TEST_F(AllowOther, creds)
 	get_unprivileged_id(&uid, &gid);
 	fork(true, &status, [=] {
 			EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) {
-				return (in->header.opcode == FUSE_LOOKUP &&
-					in->header.uid == uid &&
-					in->header.gid == gid);
+				return (in.header.opcode == FUSE_LOOKUP &&
+					in.header.uid == uid &&
+					in.header.gid == gid);
 				}, Eq(true)),
 				_)
 			).Times(1)
@@ -143,25 +143,25 @@ TEST_F(AllowOther, privilege_escalation)
 		expect_lookup(RELPATH, ino, S_IFREG | 0600, 0, 2);
 		EXPECT_CALL(*m_mock, process(
 			ResultOf([=](auto in) {
-				return (in->header.opcode == FUSE_OPEN &&
-					in->header.pid == (uint32_t)getpid() &&
-					in->header.uid == (uint32_t)geteuid() &&
-					in->header.nodeid == ino);
+				return (in.header.opcode == FUSE_OPEN &&
+					in.header.pid == (uint32_t)getpid() &&
+					in.header.uid == (uint32_t)geteuid() &&
+					in.header.nodeid == ino);
 			}, Eq(true)),
 			_)
 		).WillOnce(Invoke(
-			ReturnImmediate([](auto in __unused, auto out) {
-			out->body.open.fh = fh;
-			out->header.len = sizeof(out->header);
+			ReturnImmediate([](auto in __unused, auto& out) {
+			out.body.open.fh = fh;
+			out.header.len = sizeof(out.header);
 			SET_OUT_HEADER_LEN(out, open);
 		})));
 
 		EXPECT_CALL(*m_mock, process(
 			ResultOf([=](auto in) {
-				return (in->header.opcode == FUSE_OPEN &&
-					in->header.pid != (uint32_t)getpid() &&
-					in->header.uid != (uint32_t)geteuid() &&
-					in->header.nodeid == ino);
+				return (in.header.opcode == FUSE_OPEN &&
+					in.header.pid != (uint32_t)getpid() &&
+					in.header.uid != (uint32_t)geteuid() &&
+					in.header.nodeid == ino);
 			}, Eq(true)),
 			_)
 		).Times(AnyNumber())
@@ -228,12 +228,12 @@ TEST_F(NoAllowOther, disallowed_beneath_root)
 
 	expect_lookup(RELPATH, ino, S_IFDIR | 0755, 0, 1);
 	EXPECT_LOOKUP(ino, RELPATH2)
-	.WillRepeatedly(Invoke(ReturnImmediate([=](auto in __unused, auto out) {
+	.WillRepeatedly(Invoke(ReturnImmediate([=](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, entry);
-		out->body.entry.attr.mode = S_IFREG | 0644;
-		out->body.entry.nodeid = ino2;
-		out->body.entry.attr.nlink = 1;
-		out->body.entry.attr_valid = UINT64_MAX;
+		out.body.entry.attr.mode = S_IFREG | 0644;
+		out.body.entry.nodeid = ino2;
+		out.body.entry.attr.nlink = 1;
+		out.body.entry.attr_valid = UINT64_MAX;
 	})));
 	expect_opendir(ino);
 	dfd = open(FULLPATH, O_DIRECTORY);
@@ -269,12 +269,12 @@ TEST_F(NoAllowOther, setextattr)
 	fork(true, &status, [&] {
 			EXPECT_LOOKUP(1, RELPATH)
 			.WillOnce(Invoke(
-			ReturnImmediate([=](auto in __unused, auto out) {
+			ReturnImmediate([=](auto in __unused, auto& out) {
 				SET_OUT_HEADER_LEN(out, entry);
-				out->body.entry.attr_valid = UINT64_MAX;
-				out->body.entry.entry_valid = UINT64_MAX;
-				out->body.entry.attr.mode = S_IFREG | 0644;
-				out->body.entry.nodeid = ino;
+				out.body.entry.attr_valid = UINT64_MAX;
+				out.body.entry.entry_valid = UINT64_MAX;
+				out.body.entry.attr.mode = S_IFREG | 0644;
+				out.body.entry.nodeid = ino;
 			})));
 
 			/*

Modified: projects/fuse2/tests/sys/fs/fusefs/create.cc
==============================================================================
--- projects/fuse2/tests/sys/fs/fusefs/create.cc	Mon May 27 15:21:26 2019	(r348306)
+++ projects/fuse2/tests/sys/fs/fusefs/create.cc	Mon May 27 17:08:16 2019	(r348307)
@@ -44,10 +44,10 @@ void expect_create(const char *relpath, mode_t mode, P
 {
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			const char *name = (const char*)in->body.bytes +
+			const char *name = (const char*)in.body.bytes +
 				sizeof(fuse_open_in);
-			return (in->header.opcode == FUSE_CREATE &&
-				in->body.open.mode == mode &&
+			return (in.header.opcode == FUSE_CREATE &&
+				in.body.open.mode == mode &&
 				(0 == strcmp(relpath, name)));
 		}, Eq(true)),
 		_)
@@ -80,18 +80,18 @@ TEST_F(Create, attr_cache)
 
 	EXPECT_LOOKUP(1, RELPATH).WillOnce(Invoke(ReturnErrno(ENOENT)));
 	expect_create(RELPATH, mode,
-		ReturnImmediate([=](auto in __unused, auto out) {
+		ReturnImmediate([=](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, create);
-		out->body.create.entry.attr.mode = mode;
-		out->body.create.entry.nodeid = ino;
-		out->body.create.entry.entry_valid = UINT64_MAX;
-		out->body.create.entry.attr_valid = UINT64_MAX;
+		out.body.create.entry.attr.mode = mode;
+		out.body.create.entry.nodeid = ino;
+		out.body.create.entry.entry_valid = UINT64_MAX;
+		out.body.create.entry.attr_valid = UINT64_MAX;
 	}));
 
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_GETATTR &&
-				in->header.nodeid == ino);
+			return (in.header.opcode == FUSE_GETATTR &&
+				in.header.nodeid == ino);
 		}, Eq(true)),
 		_)
 	).Times(0);
@@ -114,25 +114,25 @@ TEST_F(Create, clear_attr_cache)
 	EXPECT_LOOKUP(1, RELPATH).WillOnce(Invoke(ReturnErrno(ENOENT)));
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_GETATTR &&
-				in->header.nodeid == 1);
+			return (in.header.opcode == FUSE_GETATTR &&
+				in.header.nodeid == 1);
 		}, Eq(true)),
 		_)
 	).Times(2)
-	.WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto out) {
+	.WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, attr);
-		out->body.attr.attr.ino = 1;
-		out->body.attr.attr.mode = S_IFDIR | 0755;
-		out->body.attr.attr_valid = UINT64_MAX;
+		out.body.attr.attr.ino = 1;
+		out.body.attr.attr.mode = S_IFDIR | 0755;
+		out.body.attr.attr_valid = UINT64_MAX;
 	})));
 
 	expect_create(RELPATH, mode,
-		ReturnImmediate([=](auto in __unused, auto out) {
+		ReturnImmediate([=](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, create);
-		out->body.create.entry.attr.mode = mode;
-		out->body.create.entry.nodeid = ino;
-		out->body.create.entry.entry_valid = UINT64_MAX;
-		out->body.create.entry.attr_valid = UINT64_MAX;
+		out.body.create.entry.attr.mode = mode;
+		out.body.create.entry.nodeid = ino;
+		out.body.create.entry.entry_valid = UINT64_MAX;
+		out.body.create.entry.attr_valid = UINT64_MAX;
 	}));
 
 	EXPECT_EQ(0, stat("mountpoint", &sb)) << strerror(errno);
@@ -177,30 +177,30 @@ TEST_F(Create, Enosys)
 
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			const char *name = (const char*)in->body.bytes +
+			const char *name = (const char*)in.body.bytes +
 				sizeof(fuse_mknod_in);
-			return (in->header.opcode == FUSE_MKNOD &&
-				in->body.mknod.mode == (S_IFREG | mode) &&
-				in->body.mknod.rdev == 0 &&
+			return (in.header.opcode == FUSE_MKNOD &&
+				in.body.mknod.mode == (S_IFREG | mode) &&
+				in.body.mknod.rdev == 0 &&
 				(0 == strcmp(RELPATH, name)));
 		}, Eq(true)),
 		_)
-	).WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto out) {
+	).WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, entry);
-		out->body.entry.attr.mode = mode;
-		out->body.entry.nodeid = ino;
-		out->body.entry.entry_valid = UINT64_MAX;
-		out->body.entry.attr_valid = UINT64_MAX;
+		out.body.entry.attr.mode = mode;
+		out.body.entry.nodeid = ino;
+		out.body.entry.entry_valid = UINT64_MAX;
+		out.body.entry.attr_valid = UINT64_MAX;
 	})));
 
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_OPEN &&
-				in->header.nodeid == ino);
+			return (in.header.opcode == FUSE_OPEN &&
+				in.header.nodeid == ino);
 		}, Eq(true)),
 		_)
-	).WillOnce(Invoke(ReturnImmediate([](auto in __unused, auto out) {
-		out->header.len = sizeof(out->header);
+	).WillOnce(Invoke(ReturnImmediate([](auto in __unused, auto& out) {
+		out.header.len = sizeof(out.header);
 		SET_OUT_HEADER_LEN(out, open);
 	})));
 
@@ -229,12 +229,12 @@ TEST_F(Create, entry_cache_negative)
 	/* create will first do a LOOKUP, adding a negative cache entry */
 	EXPECT_LOOKUP(1, RELPATH).WillOnce(ReturnNegativeCache(&entry_valid));
 	expect_create(RELPATH, mode,
-		ReturnImmediate([=](auto in __unused, auto out) {
+		ReturnImmediate([=](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, create);
-		out->body.create.entry.attr.mode = mode;
-		out->body.create.entry.nodeid = ino;
-		out->body.create.entry.entry_valid = UINT64_MAX;
-		out->body.create.entry.attr_valid = UINT64_MAX;
+		out.body.create.entry.attr.mode = mode;
+		out.body.create.entry.nodeid = ino;
+		out.body.create.entry.entry_valid = UINT64_MAX;
+		out.body.create.entry.attr_valid = UINT64_MAX;
 	}));
 
 	fd = open(FULLPATH, O_CREAT | O_EXCL, mode);
@@ -261,11 +261,11 @@ TEST_F(Create, entry_cache_negative_purge)
 
 	/* Then the CREATE should purge the negative cache entry */
 	expect_create(RELPATH, mode,
-		ReturnImmediate([=](auto in __unused, auto out) {
+		ReturnImmediate([=](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, create);
-		out->body.create.entry.attr.mode = mode;
-		out->body.create.entry.nodeid = ino;
-		out->body.create.entry.attr_valid = UINT64_MAX;
+		out.body.create.entry.attr.mode = mode;
+		out.body.create.entry.nodeid = ino;
+		out.body.create.entry.attr_valid = UINT64_MAX;
 	}));
 
 	fd = open(FULLPATH, O_CREAT | O_EXCL, mode);
@@ -305,12 +305,12 @@ TEST_F(Create, ok)
 
 	EXPECT_LOOKUP(1, RELPATH).WillOnce(Invoke(ReturnErrno(ENOENT)));
 	expect_create(RELPATH, mode,
-		ReturnImmediate([=](auto in __unused, auto out) {
+		ReturnImmediate([=](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, create);
-		out->body.create.entry.attr.mode = mode;
-		out->body.create.entry.nodeid = ino;
-		out->body.create.entry.entry_valid = UINT64_MAX;
-		out->body.create.entry.attr_valid = UINT64_MAX;
+		out.body.create.entry.attr.mode = mode;
+		out.body.create.entry.nodeid = ino;
+		out.body.create.entry.entry_valid = UINT64_MAX;
+		out.body.create.entry.attr_valid = UINT64_MAX;
 	}));
 
 	fd = open(FULLPATH, O_CREAT | O_EXCL, mode);
@@ -336,12 +336,12 @@ TEST_F(Create, wronly_0444)
 
 	EXPECT_LOOKUP(1, RELPATH).WillOnce(Invoke(ReturnErrno(ENOENT)));
 	expect_create(RELPATH, mode,
-		ReturnImmediate([=](auto in __unused, auto out) {
+		ReturnImmediate([=](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, create);
-		out->body.create.entry.attr.mode = mode;
-		out->body.create.entry.nodeid = ino;
-		out->body.create.entry.entry_valid = UINT64_MAX;
-		out->body.create.entry.attr_valid = UINT64_MAX;
+		out.body.create.entry.attr.mode = mode;
+		out.body.create.entry.nodeid = ino;
+		out.body.create.entry.entry_valid = UINT64_MAX;
+		out.body.create.entry.attr_valid = UINT64_MAX;
 	}));
 
 	fd = open(FULLPATH, O_CREAT | O_WRONLY, mode);
@@ -359,12 +359,12 @@ TEST_F(Create_7_8, ok)
 
 	EXPECT_LOOKUP(1, RELPATH).WillOnce(Invoke(ReturnErrno(ENOENT)));
 	expect_create(RELPATH, mode,
-		ReturnImmediate([=](auto in __unused, auto out) {
+		ReturnImmediate([=](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, create_7_8);
-		out->body.create.entry.attr.mode = mode;
-		out->body.create.entry.nodeid = ino;
-		out->body.create.entry.entry_valid = UINT64_MAX;
-		out->body.create.entry.attr_valid = UINT64_MAX;
+		out.body.create.entry.attr.mode = mode;
+		out.body.create.entry.nodeid = ino;
+		out.body.create.entry.entry_valid = UINT64_MAX;
+		out.body.create.entry.attr_valid = UINT64_MAX;
 	}));
 
 	fd = open(FULLPATH, O_CREAT | O_EXCL, mode);

Modified: projects/fuse2/tests/sys/fs/fusefs/default_permissions.cc
==============================================================================
--- projects/fuse2/tests/sys/fs/fusefs/default_permissions.cc	Mon May 27 15:21:26 2019	(r348306)
+++ projects/fuse2/tests/sys/fs/fusefs/default_permissions.cc	Mon May 27 17:08:16 2019	(r348307)
@@ -61,7 +61,7 @@ virtual void SetUp() {
 	/* With -o default_permissions, FUSE_ACCESS should never be called */
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_ACCESS);
+			return (in.header.opcode == FUSE_ACCESS);
 		}, Eq(true)),
 		_)
 	).Times(0);
@@ -72,18 +72,18 @@ void expect_chmod(uint64_t ino, mode_t mode, uint64_t 
 {
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_SETATTR &&
-				in->header.nodeid == ino &&
-				in->body.setattr.valid == FATTR_MODE &&
-				in->body.setattr.mode == mode);
+			return (in.header.opcode == FUSE_SETATTR &&
+				in.header.nodeid == ino &&
+				in.body.setattr.valid == FATTR_MODE &&
+				in.body.setattr.mode == mode);
 		}, Eq(true)),
 		_)
-	).WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto out) {
+	).WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, attr);
-		out->body.attr.attr.ino = ino;	// Must match nodeid
-		out->body.attr.attr.mode = S_IFREG | mode;
-		out->body.attr.attr.size = size;
-		out->body.attr.attr_valid = UINT64_MAX;
+		out.body.attr.attr.ino = ino;	// Must match nodeid
+		out.body.attr.attr.mode = S_IFREG | mode;
+		out.body.attr.attr.size = size;
+		out.body.attr.attr_valid = UINT64_MAX;
 	})));
 }
 
@@ -91,18 +91,18 @@ void expect_create(const char *relpath, uint64_t ino)
 {
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			const char *name = (const char*)in->body.bytes +
+			const char *name = (const char*)in.body.bytes +
 				sizeof(fuse_open_in);
-			return (in->header.opcode == FUSE_CREATE &&
+			return (in.header.opcode == FUSE_CREATE &&
 				(0 == strcmp(relpath, name)));
 		}, Eq(true)),
 		_)
-	).WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto out) {
+	).WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, create);
-		out->body.create.entry.attr.mode = S_IFREG | 0644;
-		out->body.create.entry.nodeid = ino;
-		out->body.create.entry.entry_valid = UINT64_MAX;
-		out->body.create.entry.attr_valid = UINT64_MAX;
+		out.body.create.entry.attr.mode = S_IFREG | 0644;
+		out.body.create.entry.nodeid = ino;
+		out.body.create.entry.entry_valid = UINT64_MAX;
+		out.body.create.entry.attr_valid = UINT64_MAX;
 	})));
 }
 
@@ -111,19 +111,19 @@ void expect_getattr(uint64_t ino, mode_t mode, uint64_
 {
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_GETATTR &&
-				in->header.nodeid == ino);
+			return (in.header.opcode == FUSE_GETATTR &&
+				in.header.nodeid == ino);
 		}, Eq(true)),
 		_)
 	).Times(times)
-	.WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto out) {
+	.WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, attr);
-		out->body.attr.attr.ino = ino;	// Must match nodeid
-		out->body.attr.attr.mode = mode;
-		out->body.attr.attr.size = 0;
-		out->body.attr.attr.uid = uid;
-		out->body.attr.attr.uid = gid;
-		out->body.attr.attr_valid = attr_valid;
+		out.body.attr.attr.ino = ino;	// Must match nodeid
+		out.body.attr.attr.mode = mode;
+		out.body.attr.attr.size = 0;
+		out.body.attr.attr.uid = uid;
+		out.body.attr.attr.uid = gid;
+		out.body.attr.attr_valid = attr_valid;
 	})));
 }
 
@@ -158,7 +158,7 @@ void expect_removexattr()
 {
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_REMOVEXATTR);
+			return (in.header.opcode == FUSE_REMOVEXATTR);
 		}, Eq(true)),
 		_)
 	).WillOnce(Invoke(ReturnErrno(0)));
@@ -171,7 +171,7 @@ void expect_getxattr(ProcessMockerT r)
 {
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_GETXATTR);
+			return (in.header.opcode == FUSE_GETXATTR);
 		}, Eq(true)),
 		_)
 	).WillOnce(Invoke(r));
@@ -184,11 +184,11 @@ void expect_listxattr()
 {
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_LISTXATTR);
+			return (in.header.opcode == FUSE_LISTXATTR);
 		}, Eq(true)),
 		_)
-	).WillOnce(Invoke(ReturnImmediate([](auto i __unused, auto out) {
-		out->body.listxattr.size = 0;
+	).WillOnce(Invoke(ReturnImmediate([](auto i __unused, auto& out) {
+		out.body.listxattr.size = 0;
 		SET_OUT_HEADER_LEN(out, listxattr);
 	})));
 }
@@ -204,7 +204,7 @@ class Rename: public DefaultPermissions { (public)
 	{
 		EXPECT_CALL(*m_mock, process(
 			ResultOf([=](auto in) {
-				return (in->header.opcode == FUSE_RENAME);
+				return (in.header.opcode == FUSE_RENAME);
 			}, Eq(true)),
 			_)
 		).WillOnce(Invoke(ReturnErrno(error)));
@@ -217,7 +217,7 @@ void expect_setxattr(int error)
 {
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_SETXATTR);
+			return (in.header.opcode == FUSE_SETXATTR);
 		}, Eq(true)),
 		_)
 	).WillOnce(Invoke(ReturnErrno(error)));
@@ -312,13 +312,13 @@ TEST_F(Chown, chown_to_self)
 	/* The OS may optimize chown by omitting the redundant setattr */
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([](auto in) {
-			return (in->header.opcode == FUSE_SETATTR);
+			return (in.header.opcode == FUSE_SETATTR);
 		}, Eq(true)),
 		_)
-	).WillRepeatedly(Invoke(ReturnImmediate([=](auto in __unused, auto out){
+	).WillRepeatedly(Invoke(ReturnImmediate([=](auto in __unused, auto& out){
 		SET_OUT_HEADER_LEN(out, attr);
-		out->body.attr.attr.mode = S_IFREG | mode;
-		out->body.attr.attr.uid = uid;
+		out.body.attr.attr.mode = S_IFREG | mode;
+		out.body.attr.attr.uid = uid;
 	})));
 
 	EXPECT_EQ(0, chown(FULLPATH, uid, -1)) << strerror(errno);
@@ -342,17 +342,17 @@ TEST_F(Chown, clear_suid)
 	expect_lookup(RELPATH, ino, S_IFREG | oldmode, UINT64_MAX, uid);
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_SETATTR &&
-				in->header.nodeid == ino &&
-				in->body.setattr.valid == valid &&
-				in->body.setattr.mode == newmode);
+			return (in.header.opcode == FUSE_SETATTR &&
+				in.header.nodeid == ino &&
+				in.body.setattr.valid == valid &&
+				in.body.setattr.mode == newmode);
 		}, Eq(true)),
 		_)
-	).WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto out) {
+	).WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, attr);
-		out->body.attr.attr.ino = ino;	// Must match nodeid
-		out->body.attr.attr.mode = S_IFREG | newmode;
-		out->body.attr.attr_valid = UINT64_MAX;
+		out.body.attr.attr.ino = ino;	// Must match nodeid
+		out.body.attr.attr.mode = S_IFREG | newmode;
+		out.body.attr.attr_valid = UINT64_MAX;
 	})));
 
 	EXPECT_EQ(0, chown(FULLPATH, uid, -1)) << strerror(errno);
@@ -371,7 +371,7 @@ TEST_F(Chown, eperm)
 	expect_lookup(RELPATH, ino, S_IFREG | mode, UINT64_MAX, geteuid());
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([](auto in) {
-			return (in->header.opcode == FUSE_SETATTR);
+			return (in.header.opcode == FUSE_SETATTR);
 		}, Eq(true)),
 		_)
 	).Times(0);
@@ -399,17 +399,17 @@ TEST_F(Chgrp, clear_suid)
 	expect_lookup(RELPATH, ino, S_IFREG | oldmode, UINT64_MAX, uid, gid);
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_SETATTR &&
-				in->header.nodeid == ino &&
-				in->body.setattr.valid == valid &&
-				in->body.setattr.mode == newmode);
+			return (in.header.opcode == FUSE_SETATTR &&
+				in.header.nodeid == ino &&
+				in.body.setattr.valid == valid &&
+				in.body.setattr.mode == newmode);
 		}, Eq(true)),
 		_)
-	).WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto out) {
+	).WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, attr);
-		out->body.attr.attr.ino = ino;	// Must match nodeid
-		out->body.attr.attr.mode = S_IFREG | newmode;
-		out->body.attr.attr_valid = UINT64_MAX;
+		out.body.attr.attr.ino = ino;	// Must match nodeid
+		out.body.attr.attr.mode = S_IFREG | newmode;
+		out.body.attr.attr_valid = UINT64_MAX;
 	})));
 
 	EXPECT_EQ(0, chown(FULLPATH, -1, gid)) << strerror(errno);
@@ -433,7 +433,7 @@ TEST_F(Chgrp, eperm)
 	expect_lookup(RELPATH, ino, S_IFREG | mode, UINT64_MAX, uid, gid);
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([](auto in) {
-			return (in->header.opcode == FUSE_SETATTR);
+			return (in.header.opcode == FUSE_SETATTR);
 		}, Eq(true)),
 		_)
 	).Times(0);
@@ -460,15 +460,15 @@ TEST_F(Chgrp, ok)
 	/* The OS may optimize chgrp by omitting the redundant setattr */
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([](auto in) {
-			return (in->header.opcode == FUSE_SETATTR &&
-				in->header.nodeid == ino);
+			return (in.header.opcode == FUSE_SETATTR &&
+				in.header.nodeid == ino);
 		}, Eq(true)),
 		_)
-	).WillRepeatedly(Invoke(ReturnImmediate([=](auto in __unused, auto out){
+	).WillRepeatedly(Invoke(ReturnImmediate([=](auto in __unused, auto& out){
 		SET_OUT_HEADER_LEN(out, attr);
-		out->body.attr.attr.mode = S_IFREG | mode;
-		out->body.attr.attr.uid = uid;
-		out->body.attr.attr.gid = newgid;
+		out.body.attr.attr.mode = S_IFREG | mode;
+		out.body.attr.attr.uid = uid;
+		out.body.attr.attr.gid = newgid;
 	})));
 
 	EXPECT_EQ(0, chown(FULLPATH, -1, newgid)) << strerror(errno);
@@ -564,15 +564,15 @@ TEST_F(Utimensat, utime_now)
 	expect_lookup(RELPATH, ino, S_IFREG | mode, UINT64_MAX, owner);
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([](auto in) {
-			return (in->header.opcode == FUSE_SETATTR &&
-				in->header.nodeid == ino &&
-				in->body.setattr.valid & FATTR_ATIME &&
-				in->body.setattr.valid & FATTR_MTIME);
+			return (in.header.opcode == FUSE_SETATTR &&
+				in.header.nodeid == ino &&
+				in.body.setattr.valid & FATTR_ATIME &&
+				in.body.setattr.valid & FATTR_MTIME);
 		}, Eq(true)),
 		_)
-	).WillOnce(Invoke(ReturnImmediate([](auto in __unused, auto out) {
+	).WillOnce(Invoke(ReturnImmediate([](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, attr);
-		out->body.attr.attr.mode = S_IFREG | mode;
+		out.body.attr.attr.mode = S_IFREG | mode;
 	})));
 
 	ASSERT_EQ(0, utimensat(AT_FDCWD, FULLPATH, &times[0], 0))
@@ -647,9 +647,9 @@ TEST_F(Getextattr, ok)
 	/* Getting user attributes only requires read access */
 	expect_lookup(RELPATH, ino, S_IFREG | 0444, UINT64_MAX, 0);
 	expect_getxattr(
-		ReturnImmediate([&](auto in __unused, auto out) {
-			memcpy((void*)out->body.bytes, value, value_len);
-			out->header.len = sizeof(out->header) + value_len;
+		ReturnImmediate([&](auto in __unused, auto& out) {
+			memcpy((void*)out.body.bytes, value, value_len);
+			out.header.len = sizeof(out.header) + value_len;
 		})
 	);
 
@@ -892,13 +892,13 @@ TEST_F(Rename, eperm_on_sticky_dstdir)
 	expect_lookup(RELSRC, src_ino, S_IFREG | 0644, UINT64_MAX);
 	expect_lookup(RELDSTDIR, dstdir_ino, S_IFDIR | 01777, UINT64_MAX);
 	EXPECT_LOOKUP(dstdir_ino, RELDST)
-	.WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto out) {
+	.WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, entry);
-		out->body.entry.attr.mode = S_IFREG | 0644;
-		out->body.entry.nodeid = dst_ino;
-		out->body.entry.attr_valid = UINT64_MAX;
-		out->body.entry.entry_valid = UINT64_MAX;
-		out->body.entry.attr.uid = 0;
+		out.body.entry.attr.mode = S_IFREG | 0644;
+		out.body.entry.nodeid = dst_ino;
+		out.body.entry.attr_valid = UINT64_MAX;
+		out.body.entry.entry_valid = UINT64_MAX;
+		out.body.entry.attr.uid = 0;
 	})));
 
 	ASSERT_EQ(-1, rename(FULLSRC, FULLDST));
@@ -952,14 +952,14 @@ TEST_F(Setattr, ok)
 	expect_lookup(RELPATH, ino, S_IFREG | oldmode, UINT64_MAX, geteuid());
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([](auto in) {
-			return (in->header.opcode == FUSE_SETATTR &&
-				in->header.nodeid == ino &&
-				in->body.setattr.mode == newmode);
+			return (in.header.opcode == FUSE_SETATTR &&
+				in.header.nodeid == ino &&
+				in.body.setattr.mode == newmode);
 		}, Eq(true)),
 		_)
-	).WillOnce(Invoke(ReturnImmediate([](auto in __unused, auto out) {
+	).WillOnce(Invoke(ReturnImmediate([](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, attr);
-		out->body.attr.attr.mode = S_IFREG | newmode;
+		out.body.attr.attr.mode = S_IFREG | newmode;
 	})));
 
 	EXPECT_EQ(0, chmod(FULLPATH, newmode)) << strerror(errno);
@@ -977,7 +977,7 @@ TEST_F(Setattr, eacces)
 	expect_lookup(RELPATH, ino, S_IFREG | oldmode, UINT64_MAX, 0);
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([](auto in) {
-			return (in->header.opcode == FUSE_SETATTR);
+			return (in.header.opcode == FUSE_SETATTR);
 		}, Eq(true)),
 		_)
 	).Times(0);
@@ -1004,16 +1004,16 @@ TEST_F(Setattr, ftruncate_of_newly_created_file)
 	expect_create(RELPATH, ino);
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([](auto in) {
-			return (in->header.opcode == FUSE_SETATTR &&
-				in->header.nodeid == ino &&
-				(in->body.setattr.valid & FATTR_SIZE));
+			return (in.header.opcode == FUSE_SETATTR &&
+				in.header.nodeid == ino &&
+				(in.body.setattr.valid & FATTR_SIZE));
 		}, Eq(true)),
 		_)
-	).WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto out) {
+	).WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, attr);
-		out->body.attr.attr.ino = ino;
-		out->body.attr.attr.mode = S_IFREG | mode;
-		out->body.attr.attr_valid = UINT64_MAX;
+		out.body.attr.attr.ino = ino;
+		out.body.attr.attr.mode = S_IFREG | mode;
+		out.body.attr.attr_valid = UINT64_MAX;
 	})));
 
 	fd = open(FULLPATH, O_CREAT | O_RDWR, 0);
@@ -1040,7 +1040,7 @@ TEST_F(Setattr, sgid_by_non_group_member)
 	expect_lookup(RELPATH, ino, S_IFREG | oldmode, UINT64_MAX, uid, gid);
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([](auto in) {
-			return (in->header.opcode == FUSE_SETATTR);
+			return (in.header.opcode == FUSE_SETATTR);
 		}, Eq(true)),
 		_)
 	).Times(0);
@@ -1062,7 +1062,7 @@ TEST_F(Setattr, sticky_regular_file)
 	expect_lookup(RELPATH, ino, S_IFREG | oldmode, UINT64_MAX, geteuid());
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([](auto in) {
-			return (in->header.opcode == FUSE_SETATTR);
+			return (in.header.opcode == FUSE_SETATTR);
 		}, Eq(true)),
 		_)
 	).Times(0);
@@ -1173,11 +1173,11 @@ TEST_F(Unlink, cached_unwritable_directory)
 	EXPECT_LOOKUP(1, RELPATH)
 	.Times(AnyNumber())
 	.WillRepeatedly(Invoke(
-		ReturnImmediate([=](auto i __unused, auto out) {
+		ReturnImmediate([=](auto i __unused, auto& out) {
 			SET_OUT_HEADER_LEN(out, entry);
-			out->body.entry.attr.mode = S_IFREG | 0644;
-			out->body.entry.nodeid = ino;
-			out->body.entry.entry_valid = UINT64_MAX;
+			out.body.entry.attr.mode = S_IFREG | 0644;
+			out.body.entry.nodeid = ino;
+			out.body.entry.entry_valid = UINT64_MAX;
 		}))
 	);
 

Modified: projects/fuse2/tests/sys/fs/fusefs/default_permissions_privileged.cc
==============================================================================
--- projects/fuse2/tests/sys/fs/fusefs/default_permissions_privileged.cc	Mon May 27 15:21:26 2019	(r348306)
+++ projects/fuse2/tests/sys/fs/fusefs/default_permissions_privileged.cc	Mon May 27 17:08:16 2019	(r348307)
@@ -60,7 +60,7 @@ virtual void SetUp() {
 	/* With -o default_permissions, FUSE_ACCESS should never be called */
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_ACCESS);
+			return (in.header.opcode == FUSE_ACCESS);
 		}, Eq(true)),
 		_)
 	).Times(0);
@@ -72,19 +72,19 @@ void expect_getattr(uint64_t ino, mode_t mode, uint64_
 {
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_GETATTR &&
-				in->header.nodeid == ino);
+			return (in.header.opcode == FUSE_GETATTR &&
+				in.header.nodeid == ino);
 		}, Eq(true)),
 		_)
 	).Times(times)
-	.WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto out) {
+	.WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, attr);
-		out->body.attr.attr.ino = ino;	// Must match nodeid
-		out->body.attr.attr.mode = mode;
-		out->body.attr.attr.size = 0;
-		out->body.attr.attr.uid = uid;
-		out->body.attr.attr.uid = gid;
-		out->body.attr.attr_valid = attr_valid;
+		out.body.attr.attr.ino = ino;	// Must match nodeid
+		out.body.attr.attr.mode = mode;
+		out.body.attr.attr.size = 0;
+		out.body.attr.attr.uid = uid;
+		out.body.attr.attr.uid = gid;
+		out.body.attr.attr_valid = attr_valid;
 	})));
 }
 
@@ -110,12 +110,12 @@ TEST_F(Setattr, sticky_regular_file)
 	expect_lookup(RELPATH, ino, S_IFREG | oldmode, UINT64_MAX, geteuid());
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([](auto in) {
-			return (in->header.opcode == FUSE_SETATTR);
+			return (in.header.opcode == FUSE_SETATTR);
 		}, Eq(true)),
 		_)
-	).WillOnce(Invoke(ReturnImmediate([](auto in __unused, auto out) {
+	).WillOnce(Invoke(ReturnImmediate([](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, attr);
-		out->body.attr.attr.mode = S_IFREG | newmode;
+		out.body.attr.attr.mode = S_IFREG | newmode;
 	})));
 
 	EXPECT_EQ(0, chmod(FULLPATH, newmode)) << strerror(errno);

Modified: projects/fuse2/tests/sys/fs/fusefs/dev_fuse_poll.cc
==============================================================================
--- projects/fuse2/tests/sys/fs/fusefs/dev_fuse_poll.cc	Mon May 27 15:21:26 2019	(r348306)
+++ projects/fuse2/tests/sys/fs/fusefs/dev_fuse_poll.cc	Mon May 27 17:08:16 2019	(r348307)
@@ -127,73 +127,73 @@ TEST_F(Kqueue, data)
 	ASSERT_EQ(0, sem_init(&sem1, 0, 0)) << strerror(errno);
 
 	EXPECT_LOOKUP(1, "foo")
-	.WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto out) {
+	.WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, entry);
-		out->body.entry.entry_valid = UINT64_MAX;
-		out->body.entry.attr.mode = S_IFREG | 0644;
-		out->body.entry.nodeid = foo_ino;
+		out.body.entry.entry_valid = UINT64_MAX;
+		out.body.entry.attr.mode = S_IFREG | 0644;
+		out.body.entry.nodeid = foo_ino;
 	})));
 	EXPECT_LOOKUP(1, "bar")
-	.WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto out) {
+	.WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, entry);
-		out->body.entry.entry_valid = UINT64_MAX;
-		out->body.entry.attr.mode = S_IFREG | 0644;
-		out->body.entry.nodeid = bar_ino;
+		out.body.entry.entry_valid = UINT64_MAX;
+		out.body.entry.attr.mode = S_IFREG | 0644;
+		out.body.entry.nodeid = bar_ino;
 	})));
 	EXPECT_LOOKUP(1, "baz")
-	.WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto out) {
+	.WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, entry);
-		out->body.entry.entry_valid = UINT64_MAX;
-		out->body.entry.attr.mode = S_IFREG | 0644;
-		out->body.entry.nodeid = baz_ino;
+		out.body.entry.entry_valid = UINT64_MAX;
+		out.body.entry.attr.mode = S_IFREG | 0644;
+		out.body.entry.nodeid = baz_ino;
 	})));
 
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_GETATTR &&
-				in->header.nodeid == foo_ino);
+			return (in.header.opcode == FUSE_GETATTR &&
+				in.header.nodeid == foo_ino);
 		}, Eq(true)),
 		_)
 	)
-	.WillOnce(Invoke(ReturnImmediate([&](auto in, auto out) {
+	.WillOnce(Invoke(ReturnImmediate([&](auto in, auto& out) {
 		nready0 = m_mock->m_nready;
 
 		sem_post(&sem0);
 		// Block the daemon so we can accumulate a few more ops
 		sem_wait(&sem1);
 
-		out->header.unique = in->header.unique;
-		out->header.error = -EIO;
-		out->header.len = sizeof(out->header);
+		out.header.unique = in.header.unique;
+		out.header.error = -EIO;
+		out.header.len = sizeof(out.header);
 	})));
 
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_GETATTR &&
-				(in->header.nodeid == bar_ino ||
-				 in->header.nodeid == baz_ino));
+			return (in.header.opcode == FUSE_GETATTR &&
+				(in.header.nodeid == bar_ino ||
+				 in.header.nodeid == baz_ino));
 		}, Eq(true)),
 		_)
 	).InSequence(seq)
-	.WillOnce(Invoke(ReturnImmediate([&](auto in, auto out) {
+	.WillOnce(Invoke(ReturnImmediate([&](auto in, auto& out) {
 		nready1 = m_mock->m_nready;
-		out->header.unique = in->header.unique;
-		out->header.error = -EIO;
-		out->header.len = sizeof(out->header);
+		out.header.unique = in.header.unique;
+		out.header.error = -EIO;
+		out.header.len = sizeof(out.header);
 	})));
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_GETATTR &&
-				(in->header.nodeid == bar_ino ||
-				 in->header.nodeid == baz_ino));
+			return (in.header.opcode == FUSE_GETATTR &&
+				(in.header.nodeid == bar_ino ||
+				 in.header.nodeid == baz_ino));
 		}, Eq(true)),
 		_)
 	).InSequence(seq)
-	.WillOnce(Invoke(ReturnImmediate([&](auto in, auto out) {
+	.WillOnce(Invoke(ReturnImmediate([&](auto in, auto& out) {
 		nready2 = m_mock->m_nready;
-		out->header.unique = in->header.unique;
-		out->header.error = -EIO;
-		out->header.len = sizeof(out->header);
+		out.header.unique = in.header.unique;
+		out.header.error = -EIO;
+		out.header.len = sizeof(out.header);
 	})));
 
 	/* 

Modified: projects/fuse2/tests/sys/fs/fusefs/fifo.cc
==============================================================================
--- projects/fuse2/tests/sys/fs/fusefs/fifo.cc	Mon May 27 15:21:26 2019	(r348306)
+++ projects/fuse2/tests/sys/fs/fusefs/fifo.cc	Mon May 27 17:08:16 2019	(r348307)
@@ -159,27 +159,27 @@ TEST_F(Socket, read_write)
 	EXPECT_LOOKUP(1, RELPATH).WillOnce(Invoke(ReturnErrno(ENOENT)));
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_MKNOD);
+			return (in.header.opcode == FUSE_MKNOD);
 		}, Eq(true)),
 		_)
 	).InSequence(seq)
-	.WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto out) {
+	.WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, entry);
-		out->body.entry.attr.mode = mode;
-		out->body.entry.nodeid = ino;
-		out->body.entry.entry_valid = UINT64_MAX;
-		out->body.entry.attr_valid = UINT64_MAX;
+		out.body.entry.attr.mode = mode;
+		out.body.entry.nodeid = ino;
+		out.body.entry.entry_valid = UINT64_MAX;
+		out.body.entry.attr_valid = UINT64_MAX;
 	})));
 
 	EXPECT_LOOKUP(1, RELPATH)
 	.InSequence(seq)
-	.WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto out) {
+	.WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, entry);
-		out->body.entry.attr.mode = mode;
-		out->body.entry.nodeid = ino;
-		out->body.entry.attr.nlink = 1;
-		out->body.entry.attr_valid = UINT64_MAX;
-		out->body.entry.entry_valid = UINT64_MAX;
+		out.body.entry.attr.mode = mode;
+		out.body.entry.nodeid = ino;
+		out.body.entry.attr.nlink = 1;
+		out.body.entry.attr_valid = UINT64_MAX;
+		out.body.entry.entry_valid = UINT64_MAX;
 	})));
 
 	fd = socket(AF_UNIX, SOCK_STREAM, 0);

Modified: projects/fuse2/tests/sys/fs/fusefs/flush.cc
==============================================================================
--- projects/fuse2/tests/sys/fs/fusefs/flush.cc	Mon May 27 15:21:26 2019	(r348306)
+++ projects/fuse2/tests/sys/fs/fusefs/flush.cc	Mon May 27 17:08:16 2019	(r348307)
@@ -46,10 +46,10 @@ expect_flush(uint64_t ino, int times, pid_t lo, Proces
 {
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_FLUSH &&
-				in->header.nodeid == ino &&
-				in->body.flush.lock_owner == (uint64_t)lo &&
-				in->body.flush.fh == FH);
+			return (in.header.opcode == FUSE_FLUSH &&
+				in.header.nodeid == ino &&
+				in.body.flush.lock_owner == (uint64_t)lo &&
+				in.body.flush.fh == FH);
 		}, Eq(true)),
 		_)
 	).Times(times)
@@ -69,7 +69,7 @@ void expect_release()
 {
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_RELEASE);
+			return (in.header.opcode == FUSE_RELEASE);
 		}, Eq(true)),
 		_)
 	).WillRepeatedly(Invoke(ReturnErrno(0)));
@@ -206,9 +206,9 @@ TEST_F(FlushWithLocks, unlock_on_close)
 	expect_open(ino, 0, 1);
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_SETLK &&
-				in->header.nodeid == ino &&
-				in->body.setlk.fh == FH);
+			return (in.header.opcode == FUSE_SETLK &&
+				in.header.nodeid == ino &&
+				in.body.setlk.fh == FH);
 		}, Eq(true)),
 		_)
 	).WillOnce(Invoke(ReturnErrno(0)));

Modified: projects/fuse2/tests/sys/fs/fusefs/fsync.cc
==============================================================================
--- projects/fuse2/tests/sys/fs/fusefs/fsync.cc	Mon May 27 15:21:26 2019	(r348306)
+++ projects/fuse2/tests/sys/fs/fusefs/fsync.cc	Mon May 27 17:08:16 2019	(r348307)
@@ -54,15 +54,15 @@ void expect_fsync(uint64_t ino, uint32_t flags, int er
 {
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_FSYNC &&
-				in->header.nodeid == ino &&
+			return (in.header.opcode == FUSE_FSYNC &&
+				in.header.nodeid == ino &&
 				/* 
 				 * TODO: reenable pid check after fixing
 				 * bug 236379
 				 */
-				//(pid_t)in->header.pid == getpid() &&
-				in->body.fsync.fh == FH &&
-				in->body.fsync.fsync_flags == flags);
+				//(pid_t)in.header.pid == getpid() &&
+				in.body.fsync.fh == FH &&
+				in.body.fsync.fsync_flags == flags);
 		}, Eq(true)),
 		_)
 	).WillOnce(Invoke(ReturnErrno(error)));
@@ -129,16 +129,16 @@ TEST_F(Fsync, close)
 	expect_write(ino, bufsize, CONTENTS);
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_SETATTR);
+			return (in.header.opcode == FUSE_SETATTR);
 		}, Eq(true)),
 		_)
-	).WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto out) {
+	).WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto& out) {
 		SET_OUT_HEADER_LEN(out, attr);
-		out->body.attr.attr.ino = ino;	// Must match nodeid
+		out.body.attr.attr.ino = ino;	// Must match nodeid
 	})));
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_FSYNC);
+			return (in.header.opcode == FUSE_FSYNC);
 		}, Eq(true)),
 		_)
 	).Times(0);

Modified: projects/fuse2/tests/sys/fs/fusefs/fsyncdir.cc
==============================================================================
--- projects/fuse2/tests/sys/fs/fusefs/fsyncdir.cc	Mon May 27 15:21:26 2019	(r348306)
+++ projects/fuse2/tests/sys/fs/fusefs/fsyncdir.cc	Mon May 27 17:08:16 2019	(r348307)
@@ -54,15 +54,15 @@ void expect_fsyncdir(uint64_t ino, uint32_t flags, int
 {
 	EXPECT_CALL(*m_mock, process(
 		ResultOf([=](auto in) {
-			return (in->header.opcode == FUSE_FSYNCDIR &&
-				in->header.nodeid == ino &&
+			return (in.header.opcode == FUSE_FSYNCDIR &&
+				in.header.nodeid == ino &&
 				/* 
 				 * TODO: reenable pid check after fixing
 				 * bug 236379
 				 */
-				//(pid_t)in->header.pid == getpid() &&

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201905271708.x4RH8G2m089942>