diff mbox series

preadv203: set max_runtime to 270s

Message ID 20220525065124.2665801-1-liwang@redhat.com
State Superseded
Headers show
Series preadv203: set max_runtime to 270s | expand

Commit Message

Li Wang May 25, 2022, 6:51 a.m. UTC
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(+)

Comments

Cyril Hrubis May 25, 2022, 8:21 a.m. UTC | #1
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,
 };
Li Wang May 25, 2022, 10:16 a.m. UTC | #2
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 mbox series

Patch

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,
 };