089: fix error caused by weird stdout buffer handling
PATCH 1/1 089: fix error caused by weird stdout buffer handling
We have hit the error while running 089.
FSTYP -- ext3
PLATFORM -- Linux/x86_64 localhost 2.6.32-109.el6.x86_64
089 4s ... - output mismatch (see 089.out.bad)
089.out.bad 2011-02-01 15:46:50.998864578 -0500 renamed from 089.out 2011-02-01 13:32:13.350865206 -0500 +0 -1
@@ -43,7 +43,6 @@ 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.
--- 089 | 9 ++++++--- src/t_mtab.c | 8 +++++++- 2 files changed, 13 insertions(+), 4 deletions(-)
089 +6 -3
@@ -28,6 +28,7 @@ [email protected] 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
src/t_mtab.c +7 -1
@@ -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 ; }
Signature · 6 lines
1.7.2.3 _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs
PATCH v2 1/1 089: fix error caused by weird stdout buffer handling
(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.
--- 089 | 9 ++++++--- src/t_mtab.c | 8 +++++++- 2 files changed, 13 insertions(+), 4 deletions(-)
089 +6 -3
@@ -28,6 +28,7 @@ [email protected] 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
src/t_mtab.c +7 -1
@@ -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 ; }
Signature · 6 lines
1.7.2.3 _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs
Quoted 24 lines · Lukas Czerner
(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 testsThis 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.
Quoted 6 lines
This commit workaround the issue by adding an optional argument to the
t_mtabto specify output file. Thet_mtaboutput 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
Quoted 61 lines
Signed-off-by Lukas Czerner <[email protected]>--- 089 | 9 ++++++--- src/t_mtab.c | 8 +++++++- 2 files changed, 13 insertions(+), 4 deletions(-)089 +6
-3@@ -28,6 +28,7 @@ [email protected] 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 10000src/t_mtab.c +7
-1@@ -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 ; }
Signature · 4 lines
_______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs
Christoph Hellwig
AppliedThanks, applied.
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs