Re: [PATCH v2] 089: fix error caused by weird stdout buffer handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2 Feb 2011, Lukas Czerner wrote:

> (v2: Get rid of the diff mambo-jambo in the commit description)
> 
> We have hit the error while running 089.
> 
> FSTYP         -- ext3
> PLATFORM      -- Linux/x86_64 localhost 2.6.32-109.el6.x86_64
> 
> ...
> ...
>  completed 50 iterations
>  completed 50 iterations
>  completed 50 iterations
> -completed 50 iterations
>  completed 10000 iterations
>  directory entries:
>  t_mtab
> Ran: 089
> Failures: 089
> Failed 1 of 1 tests
> 
> This is not very easily reproducible, however one can hit it
> eventually when running 089 in the loop. The problem is apparently, that
> the output might get lost, probably due to some stdio buffer weirdness.
> 
> This commit workaround the issue by adding an optional argument to the
> t_mtab to specify output file. The t_mtab output is then appended to a
> file which content is then printed to the stdout as it would if no
> output file is used.
> 
> With this commit applied the problem is no longer reproducible.

ping

> 
> Signed-off-by: Lukas Czerner <lczerner@xxxxxxxxxx>
> ---
>  089          |    9 ++++++---
>  src/t_mtab.c |    8 +++++++-
>  2 files changed, 13 insertions(+), 4 deletions(-)
> 
> diff --git a/089 b/089
> index e28e099..1714bec 100755
> --- a/089
> +++ b/089
> @@ -28,6 +28,7 @@ owner=nathans@xxxxxxx
>  seq=`basename $0`
>  echo "QA output created by $seq"
>  
> +mtab_output=$TEST_DIR/mtab_output
>  here=`pwd`
>  tmp=/tmp/$$
>  status=1	# failure is the default!
> @@ -62,10 +63,12 @@ mount > t_mtab
>  
>  mtab()
>  {
> -	$here/src/t_mtab 50 &
> -	$here/src/t_mtab 50 &
> -	$here/src/t_mtab 50 &
> +	rm -f $mtab_output
> +	$here/src/t_mtab 50 $mtab_output &
> +	$here/src/t_mtab 50 $mtab_output &
> +	$here/src/t_mtab 50 $mtab_output &
>  	wait
> +	cat $mtab_output
>  
>  	$here/src/t_mtab 10000
>  
> diff --git a/src/t_mtab.c b/src/t_mtab.c
> index 2931887..9bca954 100644
> --- a/src/t_mtab.c
> +++ b/src/t_mtab.c
> @@ -263,6 +263,7 @@ update_mtab (void)
>  int main(int argc, char **argv)
>  {
>  	int i, stop = 100000;
> +	FILE *fout = NULL;
>  
>  	if (argc > 1)
>  		stop = atoi(argv[1]);
> @@ -270,6 +271,11 @@ int main(int argc, char **argv)
>  	for (i = 0; i < stop; i++) {
>  		update_mtab();
>  	}
> -	printf("completed %d iterations\n", stop);
> +
> +	if (argc > 2)
> +		fout = fopen(argv[2],"a");
> +	if (!fout)
> +		fout = stdout;
> +	fprintf(fout, "completed %d iterations\n", stop);
>  	return 0;
>  }
> 

-- 

_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs


[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux