git: b2792a300ddb - main - fusefs: make the tests more robust to changes to maxphys

From: Alan Somers <asomers_at_FreeBSD.org>
Date: Thu, 09 May 2024 17:09:45 UTC
The branch main has been updated by asomers:

URL: https://cgit.FreeBSD.org/src/commit/?id=b2792a300ddb8d8334b234fe7744f5141cc96103

commit b2792a300ddb8d8334b234fe7744f5141cc96103
Author:     Alan Somers <asomers@FreeBSD.org>
AuthorDate: 2024-05-09 14:40:21 +0000
Commit:     Alan Somers <asomers@FreeBSD.org>
CommitDate: 2024-05-09 17:09:23 +0000

    fusefs: make the tests more robust to changes to maxphys
    
    Remove assumptions in two test cases that maxphys won't be huge.
    
    Reported by:    kib
    MFC after:      2 weeks
    Sponsored by:   Axcient
---
 tests/sys/fs/fusefs/bmap.cc  | 17 +++++++++++++----
 tests/sys/fs/fusefs/write.cc |  2 +-
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/tests/sys/fs/fusefs/bmap.cc b/tests/sys/fs/fusefs/bmap.cc
index 48c9c7d038ed..30612079657d 100644
--- a/tests/sys/fs/fusefs/bmap.cc
+++ b/tests/sys/fs/fusefs/bmap.cc
@@ -77,8 +77,6 @@ class BmapEof: public Bmap, public WithParamInterface<int> {};
 
 /*
  * Test FUSE_BMAP
- * XXX The FUSE protocol does not include the runp and runb variables, so those
- * must be guessed in-kernel.
  */
 TEST_F(Bmap, bmap)
 {
@@ -105,8 +103,19 @@ TEST_F(Bmap, bmap)
 	arg.runb = -1;
 	ASSERT_EQ(0, ioctl(fd, FIOBMAP2, &arg)) << strerror(errno);
 	EXPECT_EQ(arg.bn, pbn);
-	EXPECT_EQ((unsigned long)arg.runp, m_maxphys / m_maxbcachebuf - 1);
-	EXPECT_EQ((unsigned long)arg.runb, m_maxphys / m_maxbcachebuf - 1);
+       /*
+	* XXX The FUSE protocol does not include the runp and runb variables,
+	* so those must be guessed in-kernel.  There's no "right" answer, so
+	* just check that they're within reasonable limits.
+	*/
+	EXPECT_LE(arg.runb, lbn);
+	EXPECT_LE((unsigned long)arg.runb, m_maxreadahead / m_maxbcachebuf);
+	EXPECT_LE((unsigned long)arg.runb, m_maxphys / m_maxbcachebuf);
+	EXPECT_GT(arg.runb, 0);
+	EXPECT_LE(arg.runp, filesize / m_maxbcachebuf - lbn);
+	EXPECT_LE((unsigned long)arg.runp, m_maxreadahead / m_maxbcachebuf);
+	EXPECT_LE((unsigned long)arg.runp, m_maxphys / m_maxbcachebuf);
+	EXPECT_GT(arg.runp, 0);
 
 	leak(fd);
 }
diff --git a/tests/sys/fs/fusefs/write.cc b/tests/sys/fs/fusefs/write.cc
index 336ec79c8fec..1fe2e3cc522d 100644
--- a/tests/sys/fs/fusefs/write.cc
+++ b/tests/sys/fs/fusefs/write.cc
@@ -179,7 +179,7 @@ class WriteCluster: public WriteBack {
 public:
 virtual void SetUp() {
 	m_async = true;
-	m_maxwrite = 1 << 25;	// Anything larger than MAXPHYS will suffice
+	m_maxwrite = UINT32_MAX; // Anything larger than MAXPHYS will suffice
 	WriteBack::SetUp();
 	if (m_maxphys < 2 * DFLTPHYS)
 		GTEST_SKIP() << "MAXPHYS must be at least twice DFLTPHYS"