]> git.apps.os.sepia.ceph.com Git - xfstests-dev.git/commitdiff
089: fix error caused by weird stdout buffer handling
authorLukas Czerner <lczerner@redhat.com>
Wed, 2 Feb 2011 15:52:59 +0000 (16:52 +0100)
committerChristoph Hellwig <hch@lst.de>
Wed, 16 Feb 2011 10:39:53 +0000 (11:39 +0100)
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.

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
089
src/t_mtab.c

diff --git a/089 b/089
index e28e0999cec8eb6a98ac5c1c6940d33051c428c1..1714becb568236ad9cc05cb2c7212b7833020eac 100755 (executable)
--- a/089
+++ b/089
@@ -28,6 +28,7 @@ owner=nathans@sgi.com
 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
 
index 2931887a271ca0af25330f97aab57d629e7b01de..9bca954318f1a48d887ac44b89e47d8ffb03c19d 100644 (file)
@@ -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;
 }