public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
* [LTP] lib: tst_device.c - /dev/loop0 in use
@ 2018-12-19 16:33 Rafael David Tinoco
  2019-01-02 13:19 ` Cyril Hrubis
  0 siblings, 1 reply; 8+ messages in thread
From: Rafael David Tinoco @ 2018-12-19 16:33 UTC (permalink / raw)
  To: ltp

Hello Cyril,

Apparently, when having "all_filesystems" flag set for one test, there
is a room of opportunity for the subsequent filesystems tests to find
the device, acquired by "tst_acquire_device()", busy.

I suppose, in the case bellow, fsync() caused async work in some kernel
thread to cause the "/dev/loop0 is apparently in use by the system"
error when trying a new mkfs.XXXX call - for the subsequent filesystem -
using the same acquired device.

With the "all_filesystems" logic, the acquired device is not detached,
nor find_free_loopdev() is called again, which *could* mitigate this.

The error:

tst_test.c:1015: INFO: Timeout per run is 0h 15m 00s
fsync01.c:58: PASS: fsync() returned 0
fsync01.c:58: PASS: fsync() returned 0
fsync01.c:58: PASS: fsync() returned 0
fsync01.c:58: PASS: fsync() returned 0
fsync01.c:58: PASS: fsync() returned 0
fsync01.c:58: PASS: fsync() returned 0
fsync01.c:58: PASS: fsync() returned 0
fsync01.c:58: PASS: fsync() returned 0
fsync01.c:58: PASS: fsync() returned 0
fsync01.c:58: PASS: fsync() returned 0
tst_test.c:1076: INFO: Testing on ext3
tst_mkfs.c:83: INFO: Formatting /dev/loop0 with ext3 opts='' extra opts=''
mke2fs 1.43.5 (04-Aug-2017)
[   48.457646] EXT4-fs (loop0): mounting ext3 file system using the ext4
subsystem
[   48.502872] EXT4-fs (loop0): mounted filesystem with ordered data
mode. Opts: (null)
tst_test.c:1015: INFO: Timeout per run is 0h 15m 00s
fsync01.c:58: PASS: fsync() returned 0
fsync01.c:58: PASS: fsync() returned 0
fsync01.c:58: PASS: fsync() returned 0
fsync01.c:58: PASS: fsync() returned 0
fsync01.c:58: PASS: fsync() returned 0
fsync01.c:58: PASS: fsync() returned 0
fsync01.c:58: PASS: fsync() returned 0
fsync01.c:58: PASS: fsync() returned 0
fsync01.c:58: PASS: fsync() returned 0
fsync01.c:58: PASS: fsync() returned 0
tst_test.c:1076: INFO: Testing on ext4
tst_mkfs.c:83: INFO: Formatting /dev/loop0 with ext4 opts='' extra opts=''
mke2fs 1.43.5 (04-Aug-2017)
/dev/loop0 is apparently in use by the system; will not make a
filesystem here!
tst_mkfs.c:94: BROK: mkfs.ext4:1: tst_test.c failed with 729

Thoughts ?

Cheers o/
-- 
Rafael D. Tinoco
Linaro - Kernel Validation

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

* [LTP] lib: tst_device.c - /dev/loop0 in use
  2018-12-19 16:33 [LTP] lib: tst_device.c - /dev/loop0 in use Rafael David Tinoco
@ 2019-01-02 13:19 ` Cyril Hrubis
  2025-08-06  7:44   ` [LTP] [PATCH] tst_umount: Retry open() after umount to handle delayed device release Li Wang via ltp
  0 siblings, 1 reply; 8+ messages in thread
From: Cyril Hrubis @ 2019-01-02 13:19 UTC (permalink / raw)
  To: ltp

Hi!
> Apparently, when having "all_filesystems" flag set for one test, there
> is a room of opportunity for the subsequent filesystems tests to find
> the device, acquired by "tst_acquire_device()", busy.
> 
> I suppose, in the case bellow, fsync() caused async work in some kernel
> thread to cause the "/dev/loop0 is apparently in use by the system"
> error when trying a new mkfs.XXXX call - for the subsequent filesystem -
> using the same acquired device.
> 
> With the "all_filesystems" logic, the acquired device is not detached,
> nor find_free_loopdev() is called again, which *could* mitigate this.

Right, we expect that the device is free to be reused once the umount()
returns to the userspace, which apparently is not true in your case.

Looking into the mkfs code it tries to open() the device RDONLY and we
get this error if the attempt has failed with EBUSY, which likely means
that the umount() is still running in background in kernel.

I guess that we may as well patch the tst_umount() function in
lib/tst_device.c to loop until open() fails with EBUSY in the similar
manner we attempt to retry umount() there.

-- 
Cyril Hrubis
chrubis@suse.cz

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

* [LTP] [PATCH] tst_umount: Retry open() after umount to handle delayed device release
  2019-01-02 13:19 ` Cyril Hrubis
@ 2025-08-06  7:44   ` Li Wang via ltp
  2025-08-06  9:27     ` Cyril Hrubis
  0 siblings, 1 reply; 8+ messages in thread
From: Li Wang via ltp @ 2025-08-06  7:44 UTC (permalink / raw)
  To: ltp, rafael.tinoco, chrubis

Currently, tst_umount() in lib/tst_device.c tries to repeatedly umount()
a mount point, with a retry loop if it gets EBUSY. However, after umount()
reports success, devices (especially loop devices) can still be held open
by another process or kernel, delaying their actual release. This can lead
to race conditions when the next operation tries to reuse the device like
mkfs.ext3 error:

  ==== setxattr01 ====
  command: setxattr01
  tst_test.c:1953: TINFO: LTP version: 20250530
  ...
  tst_supported_fs_types.c:48: TINFO: mkfs is not needed for tmpfs
  tst_test.c:1888: TINFO: === Testing on ext2 ===
  tst_test.c:1217: TINFO: Formatting /dev/loop0 with ext2 opts='' extra opts=''
  mke2fs 1.47.1 (20-May-2024)
  tst_test.c:1229: TINFO: Mounting /dev/loop0 to /tmp/LTP_setd24dAf/mntpoint fstyp=ext2 flags=0
  ...
  setxattr01.c:174: TPASS: setxattr(2) failed: ERANGE (34)
  setxattr01.c:174: TPASS: setxattr(2) failed: EFAULT (14)
  tst_test.c:1888: TINFO: === Testing on ext3 ===
  tst_test.c:1217: TINFO: Formatting /dev/loop0 with ext3 opts='' extra opts='' mke2fs 1.47.1 (20-May-2024)

  /dev/loop0 is apparently in use by the system; will not make a filesystem here!
  tst_test.c:1217: TBROK: mkfs.ext3 failed with exit code 1

  ==== close_range01 ====
  command: close_range01
  tst_test.c:1953: TINFO: LTP version: 20250530
  ...
  tst_test.c:1888: TINFO: === Testing on ext2 ===
  tst_test.c:1217: TINFO: Formatting /dev/loop0 with ext2 opts='' extra opts=''
  mke2fs 1.47.1 (20-May-2024)
  tst_test.c:1229: TINFO: Mounting /dev/loop0 to /tmp/LTP_cloXeXI39/mnt fstyp=ext2 flags=0
  ...
  close_range01.c:188: TPASS: No kernel taints
  tst_test.c:1888: TINFO: === Testing on ext3 ===
  tst_test.c:1217: TINFO: Formatting /dev/loop0 with ext3 opts='' extra opts='' mke2fs 1.47.1 (20-May-2024)

  /dev/loop0 is apparently in use by the system; will not make a filesystem here!
  tst_test.c:1217: TBROK: mkfs.ext3 failed with exit code 1

This patch improves robustness by, after a successful umount(), attempting to
open() the device in O_RDWR mode and retrying if open() fails with EBUSY,
similar to how umount() is retried. This ensures that tst_umount() only returns
success after the device is truly available for reuse, reducing race conditions
in rapid test cycles.

Signed-off-by: Li Wang <liwang@redhat.com>
---
 lib/tst_device.c | 27 +++++++++++++++++++++++++--
 1 file changed, 25 insertions(+), 2 deletions(-)

diff --git a/lib/tst_device.c b/lib/tst_device.c
index 6d1abf065..7f0a4f8a4 100644
--- a/lib/tst_device.c
+++ b/lib/tst_device.c
@@ -397,14 +397,37 @@ int tst_clear_device(const char *dev)
 
 int tst_umount(const char *path)
 {
-	int err, ret, i;
+	int err, ret, i, j;
 
 	for (i = 0; i < 50; i++) {
 		ret = umount(path);
 		err = errno;
 
-		if (!ret)
+		if (!ret) {
+			/* After successful umount, check device open busy */
+			for (j = 0; j < 50; j++) {
+				int fd = open(path, O_RDWR);
+				if (fd >= 0) {
+					close(fd);
+					break;
+				}
+				if (errno == EBUSY) {
+					tst_resm(TINFO, "open('%s') got EBUSY after umount, retry %d...",
+						path, j+1);
+					usleep(100000);
+					continue;
+				}
+				break;
+			}
+			if (j == 50) {
+				tst_resm(TWARN, "Device '%s' is still busy after %d open retries",
+					path, 10);
+				errno = EBUSY;
+				return -1;
+			}
+
 			return 0;
+		}
 
 		if (err != EBUSY) {
 			tst_resm(TWARN, "umount('%s') failed with %s",
-- 
2.50.1


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

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

* Re: [LTP] [PATCH] tst_umount: Retry open() after umount to handle delayed device release
  2025-08-06  7:44   ` [LTP] [PATCH] tst_umount: Retry open() after umount to handle delayed device release Li Wang via ltp
@ 2025-08-06  9:27     ` Cyril Hrubis
  2025-08-11 12:42       ` Li Wang via ltp
  0 siblings, 1 reply; 8+ messages in thread
From: Cyril Hrubis @ 2025-08-06  9:27 UTC (permalink / raw)
  To: Li Wang; +Cc: rafael.tinoco, ltp

Hi!
> Currently, tst_umount() in lib/tst_device.c tries to repeatedly umount()
> a mount point, with a retry loop if it gets EBUSY. However, after umount()
> reports success, devices (especially loop devices) can still be held open
> by another process or kernel, delaying their actual release. This can lead
> to race conditions when the next operation tries to reuse the device like
> mkfs.ext3 error:

This looks like working around a kernel bug to me. The umount() without
MNT_DETACH should make the device reusable once the syscall returns back
to the userspace. At least I wouldn't add this code to LTP unless kernel
devs tells us that this broken behavior is to be expected.

-- 
Cyril Hrubis
chrubis@suse.cz

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

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

* Re: [LTP] [PATCH] tst_umount: Retry open() after umount to handle delayed device release
  2025-08-06  9:27     ` Cyril Hrubis
@ 2025-08-11 12:42       ` Li Wang via ltp
  2025-08-11 14:20         ` Cyril Hrubis
  0 siblings, 1 reply; 8+ messages in thread
From: Li Wang via ltp @ 2025-08-11 12:42 UTC (permalink / raw)
  To: Cyril Hrubis; +Cc: rafael.tinoco, ltp

Hi Cyril,

On Wed, Aug 6, 2025 at 5:26 PM Cyril Hrubis <chrubis@suse.cz> wrote:

> Hi!
> > Currently, tst_umount() in lib/tst_device.c tries to repeatedly umount()
> > a mount point, with a retry loop if it gets EBUSY. However, after
> umount()
> > reports success, devices (especially loop devices) can still be held open
> > by another process or kernel, delaying their actual release. This can
> lead
> > to race conditions when the next operation tries to reuse the device like
> > mkfs.ext3 error:
>
> This looks like working around a kernel bug to me. The umount() without
> MNT_DETACH should make the device reusable once the syscall returns back
> to the userspace. At least I wouldn't add this code to LTP unless kernel
> devs tells us that this broken behavior is to be expected.


Perhaps not yet fall into the kernel issue.

Looking into the details for many days, there seems to be something in
userspace briefly reopens the block device right after unmounting it,
I suspect that “something” is likely systemd-udevd running its blkid
builtin.

To prove this, I did some debugging work:

1. Confirm the tested system enables rule:
# cat /usr/lib/udev/rules.d/60-persistent-storage.rules | grep blkid
  KERNEL!="sr*|mmcblk[0-9]boot[0-9]", IMPORT{builtin}="blkid"

2. Check the core functions of udev-builtin-blkid:

https://github.com/systemd/systemd/blob/main/src/udev/udev-builtin-blkid.c#L353

3. Run udev monitor in a separate terminal, and get output with running
./close_range01 test simultaneously:

# udevadm monitor --kernel --udev
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[283886.216245] change   /devices/virtual/block/loop0 (block)
KERNEL[283886.271087] change   /devices/virtual/block/loop0 (block)
UDEV  [283886.277479] change   /devices/virtual/block/loop0 (block)
UDEV  [283886.280656] change   /devices/virtual/block/loop0 (block)
KERNEL[283886.299308] change   /devices/virtual/block/loop0 (block)
UDEV  [283886.303885] change   /devices/virtual/block/loop0 (block)
KERNEL[283886.307296] change   /devices/virtual/block/loop0 (block)
UDEV  [283886.313293] change   /devices/virtual/block/loop0 (block)
KERNEL[283886.317716] change   /devices/virtual/block/loop0 (block)
UDEV  [283886.321284] change   /devices/virtual/block/loop0 (block)
KERNEL[283886.358952] change   /devices/virtual/block/loop0 (block)
UDEV  [283886.364841] change   /devices/virtual/block/loop0 (block)
KERNEL[283886.369347] change   /devices/virtual/block/loop0 (block)
UDEV  [283886.376379] change   /devices/virtual/block/loop0 (block)
KERNEL[283886.378823] change   /devices/virtual/block/loop0 (block)
UDEV  [283886.382704] change   /devices/virtual/block/loop0 (block)
KERNEL[283886.463900] change   /devices/virtual/block/loop0 (block)
UDEV  [283886.467966] change   /devices/virtual/block/loop0 (block)
KERNEL[283886.471508] change   /devices/virtual/block/loop0 (block)
UDEV  [283886.475901] change   /devices/virtual/block/loop0 (block)
KERNEL[283886.491129] change   /devices/virtual/block/loop0 (block)
UDEV  [283886.495081] change   /devices/virtual/block/loop0 (block)
KERNEL[283886.498525] change   /devices/virtual/block/loop0 (block)
UDEV  [283886.502380] change   /devices/virtual/block/loop0 (block)
KERNEL[283886.504077] change   /devices/virtual/block/loop0 (block)
UDEV  [283886.507968] change   /devices/virtual/block/loop0 (block)
KERNEL[283886.558605] change   /devices/virtual/block/loop0 (block)
KERNEL[283886.559145] change   /devices/virtual/block/loop0 (block)
UDEV  [283886.560932] change   /devices/virtual/block/loop0 (block)
UDEV  [283886.562050] change   /devices/virtual/block/loop0 (block)

Looks like udev-builtin-blkid indeed probes via libblkid to populate
ID_FS_* properties.

Then, I use strace tool to trace the openat on systemd-udevd, but weirdly
I got all opens with 'O_PATH',  which opens do not conflict with mkfs.ext*’s
O_EXCL and should not cause “apparently in use by the system”.

4. #sudo strace -f -e trace=openat,close -p $(pidof systemd-udevd) -o log
# cat log | grep '/dev/loop0'
275485 openat(AT_FDCWD, "/dev/loop0", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH)
= 17
702   openat(AT_FDCWD, "/dev/loop0", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH
<unfinished ...>
275485 openat(AT_FDCWD, "/dev/loop0", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH)
= 17
275485 openat(AT_FDCWD, "/dev/loop0", O_RDONLY|O_CLOEXEC|O_PATH) = 17
275485 openat(AT_FDCWD, "/dev/loop0", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH)
= 17
275485 openat(AT_FDCWD, "/dev/loop0", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH)
= 17
275485 openat(AT_FDCWD, "/dev/loop0", O_RDONLY|O_CLOEXEC|O_PATH) = 17
702   openat(AT_FDCWD, "/dev/loop0", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH)
= 13
275485 openat(AT_FDCWD, "/dev/loop0", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH)
= 17
...

However, switch to another bpftrace tool gives more suggestive clues,
it catches not only the udev-worker but also udeskd operations on the
/dev/loop0, after checking the flags I doubt that race probably comes
from udiskd operation.

5. Run bpftrace in a separate terminal and get output with running
./close_range01 test simultaneously:

# sudo bpftrace -e 'tracepoint:syscalls:sys_enter_openat
/str(args->filename)=="/dev/loop0"/ { printf("%s pid=%d flags=0x%x %s\n",
comm, pid, args->flags, str(args->filename)); }'
Attaching 1 probe...
close_range01 pid=298948 flags=0x2 /dev/loop0
(udev-worker) pid=298949 flags=0x288000 /dev/loop0
close_range01 pid=298948 flags=0x0 /dev/loop0
systemd-udevd pid=702 flags=0x288000 /dev/loop0
(udev-worker) pid=298949 flags=0x288000 /dev/loop0
(udev-worker) pid=298949 flags=0x280000 /dev/loop0
udisksd pid=87323 flags=0x0 /dev/loop0
(udev-worker) pid=298949 flags=0x288000 /dev/loop0
(udev-worker) pid=298949 flags=0x288000 /dev/loop0
(udev-worker) pid=298949 flags=0x280000 /dev/loop0
udisksd pid=87323 flags=0x0 /dev/loop0
close_range01 pid=298948 flags=0x241 /dev/loop0
systemd-udevd pid=702 flags=0x288000 /dev/loop0
(udev-worker) pid=298949 flags=0x288000 /dev/loop0
(udev-worker) pid=298949 flags=0x288000 /dev/loop0
mkfs.ext2 pid=298969 flags=0x80 /dev/loop0
mkfs.ext2 pid=298969 flags=0x0 /dev/loop0
mkfs.ext2 pid=298969 flags=0x0 /dev/loop0
mkfs.ext2 pid=298969 flags=0x0 /dev/loop0
mkfs.ext2 pid=298969 flags=0x80800 /dev/loop0
mkfs.ext2 pid=298969 flags=0x0 /dev/loop0
mkfs.ext2 pid=298969 flags=0x82 /dev/loop0
(udev-worker) pid=298949 flags=0x280000 /dev/loop0
udisksd pid=87323 flags=0x0 /dev/loop0
systemd-udevd pid=702 flags=0x288000 /dev/loop0
(udev-worker) pid=298949 flags=0x288000 /dev/loop0
(udev-worker) pid=298949 flags=0x288000 /dev/loop0
udisksd pid=87323 flags=0x0 /dev/loop0
(udev-worker) pid=298949 flags=0x280000 /dev/loop0
udisksd pid=87323 flags=0x0 /dev/loop0
udisksd pid=87323 flags=0x0 /dev/loop0        <--------------
close_range01 pid=298948 flags=0x241 /dev/loop0
systemd-udevd pid=702 flags=0x288000 /dev/loop0
(udev-worker) pid=298949 flags=0x288000 /dev/loop0
(udev-worker) pid=298949 flags=0x288000 /dev/loop0
mkfs.ext3 pid=298977 flags=0x80 /dev/loop0
mkfs.ext3 pid=298977 flags=0x0 /dev/loop0
mkfs.ext3 pid=298977 flags=0x0 /dev/loop0
mkfs.ext3 pid=298977 flags=0x0 /dev/loop0
mkfs.ext3 pid=298977 flags=0x80800 /dev/loop0
mkfs.ext3 pid=298977 flags=0x0 /dev/loop0
mkfs.ext3 pid=298977 flags=0x82 /dev/loop0
...

From the bpfstrace logs, there seems udisksd listening to the same
udevevents and probes the device via libblockdev/blkid, performing
real O_RDONLY opens (flags=0x0). These O_RDONLY opens from
udisksd race with mkfs.ext3’s O_EXCL open, intermittently causing
“apparently in use by the system” (EBUSY).

Does this analysis sound reasonable to you?

-- 
Regards,
Li Wang

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

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

* Re: [LTP] [PATCH] tst_umount: Retry open() after umount to handle delayed device release
  2025-08-11 12:42       ` Li Wang via ltp
@ 2025-08-11 14:20         ` Cyril Hrubis
  2025-08-12  3:43           ` Li Wang via ltp
  0 siblings, 1 reply; 8+ messages in thread
From: Cyril Hrubis @ 2025-08-11 14:20 UTC (permalink / raw)
  To: Li Wang; +Cc: rafael.tinoco, ltp

Hi!
> From the bpfstrace logs, there seems udisksd listening to the same
> udevevents and probes the device via libblockdev/blkid, performing
> real O_RDONLY opens (flags=0x0). These O_RDONLY opens from
> udisksd race with mkfs.ext3’s O_EXCL open, intermittently causing
> “apparently in use by the system” (EBUSY).
> 
> Does this analysis sound reasonable to you?

Yes. So we have another daemon that probes block devices on each change.

I suppose that turning off udisksd fixes the problem right? If that is
so I would be inclined just to print a message to turn off udisksd if
mkfs on a loop device fails...

-- 
Cyril Hrubis
chrubis@suse.cz

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

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

* Re: [LTP] [PATCH] tst_umount: Retry open() after umount to handle delayed device release
  2025-08-11 14:20         ` Cyril Hrubis
@ 2025-08-12  3:43           ` Li Wang via ltp
  2025-08-12 11:17             ` Cyril Hrubis
  0 siblings, 1 reply; 8+ messages in thread
From: Li Wang via ltp @ 2025-08-12  3:43 UTC (permalink / raw)
  To: Cyril Hrubis; +Cc: rafael.tinoco, ltp

On Mon, Aug 11, 2025 at 10:19 PM Cyril Hrubis <chrubis@suse.cz> wrote:

> Hi!
> > From the bpfstrace logs, there seems udisksd listening to the same
> > udevevents and probes the device via libblockdev/blkid, performing
> > real O_RDONLY opens (flags=0x0). These O_RDONLY opens from
> > udisksd race with mkfs.ext3’s O_EXCL open, intermittently causing
> > “apparently in use by the system” (EBUSY).
> >
> > Does this analysis sound reasonable to you?
>
> Yes. So we have another daemon that probes block devices on each change.
>
> I suppose that turning off udisksd fixes the problem right? If that is
> so I would be inclined just to print a message to turn off udisksd if
> mkfs on a loop device fails...
>

That's right, this intermittent EBUSY is not related to LTP (and not
be a big deal), a hint print should be useful enough, we can leave
stopping udisks2 operation to the tester env setup.

What about this amendment:

--- a/lib/tst_mkfs.c
+++ b/lib/tst_mkfs.c
@@ -107,6 +107,13 @@ void tst_mkfs_(const char *file, const int lineno,
void (cleanup_fn)(void),
                        "%s not found in $PATH", mkfs);
        break;
        default:
+               tst_resm_(file, lineno, TINFO,
+                       "Check if mkfs failed with the (loop) device busy. "
+                       "Background probing (e.g., udisks2) can cause this.
\n"
+                       "Consider temporarily stopping udisks2 during the
test:\n"
+                       "  systemctl stop udisks2.service\n"
+                       "and restart afterward:\n"
+                       "  systemctl start udisks2.service");
                tst_brkm_(file, lineno, TBROK, cleanup_fn,
                        "%s failed with exit code %i", mkfs, ret);
        }


-- 
Regards,
Li Wang

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

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

* Re: [LTP] [PATCH] tst_umount: Retry open() after umount to handle delayed device release
  2025-08-12  3:43           ` Li Wang via ltp
@ 2025-08-12 11:17             ` Cyril Hrubis
  0 siblings, 0 replies; 8+ messages in thread
From: Cyril Hrubis @ 2025-08-12 11:17 UTC (permalink / raw)
  To: Li Wang; +Cc: rafael.tinoco, ltp

Hi!
> --- a/lib/tst_mkfs.c
> +++ b/lib/tst_mkfs.c
> @@ -107,6 +107,13 @@ void tst_mkfs_(const char *file, const int lineno,
> void (cleanup_fn)(void),
>                         "%s not found in $PATH", mkfs);
>         break;
>         default:
> +               tst_resm_(file, lineno, TINFO,
> +                       "Check if mkfs failed with the (loop) device busy. "
> +                       "Background probing (e.g., udisks2) can cause this.
> \n"
> +                       "Consider temporarily stopping udisks2 during the
> test:\n"
> +                       "  systemctl stop udisks2.service\n"
> +                       "and restart afterward:\n"
> +                       "  systemctl start udisks2.service");

I wouldn't include the systemctl commands in the message, anybody who is
using LTP to test the system should know how to start and stop system
daemons. Let's keep the message short and to the point.

-- 
Cyril Hrubis
chrubis@suse.cz

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

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

end of thread, other threads:[~2025-08-12 11:17 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-12-19 16:33 [LTP] lib: tst_device.c - /dev/loop0 in use Rafael David Tinoco
2019-01-02 13:19 ` Cyril Hrubis
2025-08-06  7:44   ` [LTP] [PATCH] tst_umount: Retry open() after umount to handle delayed device release Li Wang via ltp
2025-08-06  9:27     ` Cyril Hrubis
2025-08-11 12:42       ` Li Wang via ltp
2025-08-11 14:20         ` Cyril Hrubis
2025-08-12  3:43           ` Li Wang via ltp
2025-08-12 11:17             ` Cyril Hrubis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox