[LTP] [PATCH 1/2] ltp-aiodio: sleep less time when waiting for target file creation

Eryu Guan eguan@redhat.com
Wed May 4 05:26:54 CEST 2016


On Tue, May 03, 2016 at 03:09:09PM +0200, Cyril Hrubis wrote:
> Hi!
> > dio_sparse calls read_sparse() to check the content of sparse file,
> > which is direct written by another process. It waits for the file to be
> > existent in a loop and sleeps 0.1s in each loop if the file isn't there
> > yet.
> > 
> > But the sleep time is too long, if the target file doesn't exist in the
> > first loop, the reading process might never read the file before it gets
> > killed. e.g. Running ADSP045 on extN I got:
> > 
> > dio_sparse    0  TINFO  :  Dirtying free blocks
> > dio_sparse    0  TINFO  :  Starting I/O tests
> > Child 4554 waits for 'dio_sparse' to appear
> > dio_sparse    0  TINFO  :  Killing childrens(s)
> > dio_sparse    1  TPASS  :  Test passed)
> > 
> > The child for reading got killed before it read anything.
> > 
> > So shorten the sleep time, give the child a chance to read the file and
> > really do the test.
> > 
> > dio_sparse    0  TINFO  :  Dirtying free blocks
> > dio_sparse    0  TINFO  :  Starting I/O tests
> > Child 4767 waits for 'dio_sparse' to appear
> > Child 4767 has opened 'dio_sparse' for reading
> > Child 4767 loop 0
> > Child 4767 loop 1
> > dio_sparse    0  TINFO  :  Killing childrens(s)
> > dio_sparse    1  TPASS  :  Test passed)
> > 
> > Signed-off-by: Eryu Guan <eguan@redhat.com>
> > ---
> >  testcases/kernel/io/ltp-aiodio/common_sparse.h | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/testcases/kernel/io/ltp-aiodio/common_sparse.h b/testcases/kernel/io/ltp-aiodio/common_sparse.h
> > index f7f4ef4..a7f5035 100644
> > --- a/testcases/kernel/io/ltp-aiodio/common_sparse.h
> > +++ b/testcases/kernel/io/ltp-aiodio/common_sparse.h
> > @@ -123,7 +123,7 @@ static void read_sparse(char *filename, int filesize)
> >  			fprintf(stderr, "Child %i waits for '%s' to appear\n",
> >  			        getpid(), filename);
> >  
> > -		usleep(100000);
> > +		usleep(10);
> 
> This is just another band aid instead of fixing the real problem. Why
> don't we use real synchronization instead?

You're right, fixing the synchronization is the right way to go, I'll
think more and test more about it, thanks!

Eryu
> 
> What about we do:
> 
> * Remove the loops that kills children from the parent
> * Limit the number of iterations in read_sparse to something
>   more reasonable, i.e. 10 or so
> 
> That way the parent would actually wait for the children to read the
> file in the loop that does wait().
> 
> -- 
> Cyril Hrubis
> chrubis@suse.cz


More information about the ltp mailing list