Message ID | 20220525065124.2665801-1-liwang@redhat.com |
---|---|
State | Superseded |
Headers | show |
Series | preadv203: set max_runtime to 270s | expand |
Hi! > Before the runtime patchset preadv203 use 5min as default timeout > per fs, that's really long enough for prepare_device(). But after > that, its now only has 30s which might be short for a slower system > to do preparation work. > > Let's set max_runtime to 270s to make the timeout at least equal > to previously. Isn't the main reason why the test fails that the verify_preadv2() function spins for at most 60 seconds? I guess that the proper solution should be: diff --git a/testcases/kernel/syscalls/preadv2/preadv203.c b/testcases/kernel/syscalls/preadv2/preadv203.c index 01622ad15..e9377071e 100644 --- a/testcases/kernel/syscalls/preadv2/preadv203.c +++ b/testcases/kernel/syscalls/preadv2/preadv203.c @@ -199,7 +199,6 @@ static void *cache_dropper(void *unused) static void verify_preadv2(void) { pthread_t reader, dropper, writer; - unsigned int max_runtime = 600; void *eagains; stop = 0; @@ -210,7 +209,7 @@ static void verify_preadv2(void) SAFE_PTHREAD_CREATE(&reader, NULL, nowait_reader, NULL); SAFE_PTHREAD_CREATE(&writer, NULL, writer_thread, NULL); - while (!stop && max_runtime-- > 0) + while (!stop && tst_remaining_runtime()) usleep(100000); stop = 1; @@ -280,4 +279,5 @@ static struct tst_test test = { .mount_device = 1, .all_filesystems = 1, .needs_root = 1, + .max_runtime = 60, };
Cyril Hrubis <chrubis@suse.cz> wrote: Hi! > > Before the runtime patchset preadv203 use 5min as default timeout > > per fs, that's really long enough for prepare_device(). But after > > that, its now only has 30s which might be short for a slower system > > to do preparation work. > > > > Let's set max_runtime to 270s to make the timeout at least equal > > to previously. > > Isn't the main reason why the test fails that the verify_preadv2() > function spins for at most 60 seconds? > Ah, you're right! I overlooked that spins 60s but wrongly blame the default timeout in the library. > > I guess that the proper solution should be: > This patch works for me. I will send V2 as your suggestion.
diff --git a/testcases/kernel/syscalls/preadv2/preadv203.c b/testcases/kernel/syscalls/preadv2/preadv203.c index 01622ad15..46bb39ef1 100644 --- a/testcases/kernel/syscalls/preadv2/preadv203.c +++ b/testcases/kernel/syscalls/preadv2/preadv203.c @@ -279,5 +279,6 @@ static struct tst_test test = { .mntpoint = MNTPOINT, .mount_device = 1, .all_filesystems = 1, + .max_runtime = 270, .needs_root = 1, };
Before the runtime patchset preadv203 use 5min as default timeout per fs, that's really long enough for prepare_device(). But after that, its now only has 30s which might be short for a slower system to do preparation work. Let's set max_runtime to 270s to make the timeout at least equal to previously. ==== Before ===== # ./preadv203 ... tst_test.c:1459: TINFO: Timeout per run is 0h 05m 00s preadv203.c:143: TINFO: Number of full_reads 2567, short reads 10, zero len reads 0, EAGAIN(s) 2530185 preadv203.c:180: TINFO: Number of writes 682740 preadv203.c:194: TINFO: Cache dropped 114 times preadv203.c:223: TPASS: Got some EAGAIN tst_test.c:1531: TINFO: Testing on ext3 tst_test.c:999: TINFO: Formatting /dev/loop0 with ext3 opts='' extra opts='' mke2fs 1.46.5 (30-Dec-2021) tst_test.c:1459: TINFO: Timeout per run is 0h 05m 00s ... ==== After ===== # time ./preadv203 tst_device.c:89: TINFO: Found free device 0 '/dev/loop0' tst_test.c:1524: TINFO: Timeout per run is 0h 00m 30s tst_supported_fs_types.c:89: TINFO: Kernel supports ext2 ... tst_test.c:1597: TINFO: Testing on ext2 tst_test.c:1062: TINFO: Formatting /dev/loop0 with ext2 opts='' extra opts='' mke2fs 1.46.5 (30-Dec-2021) Test timeouted, sending SIGKILL! tst_test.c:1575: TINFO: If you are running on slow machine, try exporting LTP_TIMEOUT_MUL > 1 tst_test.c:1577: TBROK: Test killed! (timeout?) Summary: passed 0 failed 0 broken 1 skipped 0 warnings 0 real 0m36.246s user 0m0.706s sys 1m2.965s Signed-off-by: Li Wang <liwang@redhat.com> Cc: Cyril Hrubis <chrubis@suse.cz> --- Notes: Another fixe way is going with define DEFAULT_TIMEOUT to 60, that generally extends all timeout for each fs to perform prepare_device(). And this will impact all test cases with setting .all_filesystems. testcases/kernel/syscalls/preadv2/preadv203.c | 1 + 1 file changed, 1 insertion(+)