<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small">Hi Richard,</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jul 12, 2022 at 8:46 PM Richard Palethorpe <<a href="mailto:rpalethorpe@suse.com" target="_blank">rpalethorpe@suse.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Kill and restart workers that take too long to read a file. The<br>
default being one second. A custom time can be set with the new -t<br>
option.<br>
<br>
This is to prevent a worker from blocking forever in a read. Currently<br>
when this happens the whole test times out and any remaining files in<br>
the worker's queue are not tested.<br>
<br>
As a side effect we can now also set the timeout very low to cause<br>
partial reads.<br></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small">To restart workers which are blocked from reading files is a practical way.</div><div class="gmail_default" style="font-size:small">My only concern is that restarted-worker is also slower reading on some</div><div class="gmail_default" style="font-size:small">specific files so it will still be timed out again. Then the rest will fall into </div><div class="gmail_default" style="font-size:small">restart cycles. Here I'd suggest loosening the worker_timeout to 3000 ms</div><div class="gmail_default" style="font-size:small">to accommodate systems of different IO speeds.</div><div class="gmail_default" style="font-size:small"><br></div></div><div><div class="gmail_default" style="font-size:small">Though each worker at most takes 3secs, the max time would not</div><div class="gmail_default" style="font-size:small">be overdue 45s (3 sec * max_works), unless tested sequentially</div><div class="gmail_default" style="font-size:small">in the worst case. So bumping up max_runtime maybe also helpful.</div><br></div><div><div class="gmail_default" style="font-size:small">Anyway, I'd be happy to apply your patch first to see how things going.</div><div class="gmail_default" style="font-size:small">Reviewed-by: Li Wang <<a href="mailto:liwang@redhat.com" target="_blank">liwang@redhat.com</a>></div><br></div><div><div class="gmail_default" style="font-size:small">--- a/testcases/kernel/fs/read_all/read_all.c<br>+++ b/testcases/kernel/fs/read_all/read_all.c<br>@@ -64,7 +64,7 @@ struct queue {<br> struct worker {<br>        pid_t pid;<br>        struct queue *q;<br>-       int last_seen;<br>+       unsigned long long last_seen;<br> };<br> <br> enum dent_action {<br>@@ -86,7 +86,7 @@ static long max_workers = 15;<br> static struct worker *workers;<br> static char *drop_privs;<br> static char *str_worker_timeout;<br>-static int worker_timeout = 1000;<br>+static int worker_timeout = 3000;<br> <br> static char *blacklist[] = {<br>        NULL, /* reserved for -e parameter */<br>@@ -552,5 +552,6 @@ static struct tst_test test = {<br>        .cleanup = cleanup,<br>        .test_all = run,<br>        .forks_child = 1,<br>+       .max_runtime = 60,<br> };<br></div><div class="gmail_default" style="font-size:small"></div></div><div><br></div></div><div><br></div>-- <br><div dir="ltr"><div dir="ltr"><div>Regards,<br></div><div>Li Wang<br></div></div></div></div>