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

* Re: [LTP] mmap21: Check for free space before mapping the file
  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 ` linuxtestproject.agent
  2026-09-08 10:47 ` [LTP] [PATCH] " Cyril Hrubis
  1 sibling, 0 replies; 3+ messages in thread
From: linuxtestproject.agent @ 2026-09-08  5:41 UTC (permalink / raw)
  To: Victor Cheng-Yen Yang; +Cc: ltp

Hi Victor,

On Tue, 8 Sep 2026, Victor Cheng-Yen Yang wrote:
> mmap21: Check for free space before mapping the file

Verdict - Reviewed

---
Note:

The agent can sometimes produce false positives although often its
findings are genuine. If you find issues with the review, please
comment this email or ignore the suggestions.

Regards,
LTP AI Reviewer

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

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

* Re: [LTP] [PATCH] mmap21: Check for free space before mapping the file
  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 ` Cyril Hrubis
  1 sibling, 0 replies; 3+ messages in thread
From: Cyril Hrubis @ 2026-09-08 10:47 UTC (permalink / raw)
  To: Victor Cheng-Yen Yang; +Cc: ltp

Hi!
> 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.

Depending on the page size this is either 4MB or 64MB, I would say that
if you run LTP on a machine with less than 4MB of free space many tests
would fail.

Maybe it would make sense to print a warning from the test library for
any tests that has needs_tmpdir == 1 and the free space at the test
temporary directory is less than a few megabytes.

-- 
Cyril Hrubis
chrubis@suse.cz

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

^ permalink raw reply	[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.