All of lore.kernel.org
 help / color / mirror / Atom feed
* [LTP] [PATCH] mmap21: Check for free space before mapping the file
@ 2026-09-08  2:31 Victor Cheng-Yen Yang via ltp
  2026-09-08  5:41 ` [LTP] " linuxtestproject.agent
  2026-09-08 10:47 ` [LTP] [PATCH] " Cyril Hrubis
  0 siblings, 2 replies; 3+ messages in thread
From: Victor Cheng-Yen Yang via ltp @ 2026-09-08  2:31 UTC (permalink / raw)
  To: ltp

From: Victor Cheng-Yen Yang <cyyang772@andestech.com>

The test creates a sparse file with lseek() and a one byte write, so
mmap() allocates no blocks. The child then touches every byte and ext4
fills the holes inside ext4_page_mkwrite(). A store instruction has no
error return, so an ENOSPC there becomes VM_FAULT_SIGBUS and the test
reports only

  tst_test.c:536: TBROK: Child (13042) killed by signal SIGBUS

which says nothing about the full filesystem. The information is
available before the mapping and gone after it, so check it in setup
and report TCONF earlier as convention.

Signed-off-by: Victor Cheng-Yen Yang <cyyang772@andestech.com>
---
 testcases/kernel/syscalls/mmap/mmap21.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/testcases/kernel/syscalls/mmap/mmap21.c b/testcases/kernel/syscalls/mmap/mmap21.c
index ea3ae835a..3d6e8bd46 100644
--- a/testcases/kernel/syscalls/mmap/mmap21.c
+++ b/testcases/kernel/syscalls/mmap/mmap21.c
@@ -10,6 +10,7 @@
  * access, and read back the data from the file.
  */
 
+#include <sys/vfs.h>
 #include "tst_test.h"
 
 #define FILE_NAME "testfile"
@@ -71,11 +72,24 @@ exit:
 
 static void setup(void)
 {
+	struct statfs sf;
+	unsigned long long needed, avail;
+
 	if (tst_parse_filesize(str_pages, &pages, 1, LLONG_MAX))
 		tst_brk(TBROK, "Invalid number of pages: %s", str_pages);
 
 	memory_size = pages * getpagesize();
 
+	/* the byte written past the mapping costs a whole block */
+	SAFE_STATFS(".", &sf);
+	needed = memory_size + sf.f_bsize;
+	avail = (unsigned long long)sf.f_bavail * sf.f_bsize;
+
+	if (!tst_fs_has_free(".", needed, TST_BYTES)) {
+		tst_brk(TCONF, "Not enough free space, test needs %llu bytes, %llu available",
+			needed, avail);
+	}
+
 	buff = SAFE_MALLOC(memory_size);
 }
 
-- 
2.55.0


-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-09-08 10:48 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-08  2:31 [LTP] [PATCH] mmap21: Check for free space before mapping the file Victor Cheng-Yen Yang via ltp
2026-09-08  5:41 ` [LTP] " linuxtestproject.agent
2026-09-08 10:47 ` [LTP] [PATCH] " Cyril Hrubis

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.