@@ -141,7 +141,7 @@ static void run(void)
{
char *filename = "aiodio_append";
int status;
- int i;
+ int i, pid;
*run_child = 1;
@@ -152,9 +152,27 @@ static void run(void)
}
}
- tst_res(TINFO, "Parent append to file");
+ pid = SAFE_FORK();
+ if (!pid) {
+ aiodio_append(filename, appends, alignment, writesize, numaio);
+ return;
+ }
+
+ tst_res(TINFO, "Child %i appends to a file", pid);
+
+ for (;;) {
+ if (SAFE_WAITPID(pid, NULL, WNOHANG))
+ break;
- aiodio_append(filename, appends, alignment, writesize, numaio);
+ sleep(1);
+
+ if (!tst_remaining_runtime()) {
+ tst_res(TINFO, "Test out of runtime, exitting");
+ kill(pid, SIGKILL);
+ SAFE_WAITPID(pid, NULL, 0);
+ break;
+ }
+ }
if (SAFE_WAITPID(-1, &status, WNOHANG))
tst_res(TFAIL, "Non zero bytes read");
@@ -172,6 +190,7 @@ static struct tst_test test = {
.cleanup = cleanup,
.needs_tmpdir = 1,
.forks_child = 1,
+ .max_iteration_runtime = 1800,
.options = (struct tst_option[]) {
{"n:", &str_numchildren, "Number of threads (default 16)"},
{"s:", &str_writesize, "Size of the file to write (default 64K)"},
Cap the test runtime on 30 minutes by default. For this to work we have to run the process that issues the aio requests in a child process and kill it when runtime is over. CC: Andrea Cervesato <andrea.cervesato@suse.de> Signed-off-by: Cyril Hrubis <chrubis@suse.cz> --- .../kernel/io/ltp-aiodio/aiodio_append.c | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-)