<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.file-systems.ext4">
    <title>gmane.comp.file-systems.ext4</title>
    <link>http://blog.gmane.org/gmane.comp.file-systems.ext4</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32470"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32469"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32468"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32467"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32466"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32465"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32464"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32463"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32462"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32461"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32460"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32459"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32457"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32456"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32455"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32454"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32453"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32452"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32451"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32450"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32470">
    <title>[Bug 16019] Resume from hibernate corrupts ext4</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.ext4/32470</link>
    <description>&lt;pre&gt;https://bugzilla.kernel.org/show_bug.cgi?id=16019


Zhang Rui &amp;lt;rui.zhang&amp;lt; at &amp;gt;intel.com&amp;gt; changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEEDINFO                    |CLOSED
         Resolution|                            |INSUFFICIENT_DATA




--- Comment #49 from Zhang Rui &amp;lt;rui.zhang&amp;lt; at &amp;gt;intel.com&amp;gt;  2012-05-24 07:34:11 ---
bug closed as there is no response from the bug reporter.
please feel free to reopen it if the problem still exists in the latest
upstream kernel.

&lt;/pre&gt;</description>
    <dc:creator>bugzilla-daemon&lt; at &gt;bugzilla.kernel.org</dc:creator>
    <dc:date>2012-05-24T07:34:11</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32469">
    <title>Re: [PATCH] e2fsck: fix 64-bit journal support</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.ext4/32469</link>
    <description>&lt;pre&gt;Ted, were you going to push this patch?  I didn't see it in the maint branch where the other post-1.42.3 patches were. 

Cheers, Andreas

On 2012-05-21, at 19:42, "Theodore Ts'o" &amp;lt;tytso&amp;lt; at &amp;gt;mit.edu&amp;gt; wrote:

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo&amp;lt; at &amp;gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

&lt;/pre&gt;</description>
    <dc:creator>Andreas Dilger</dc:creator>
    <dc:date>2012-05-24T01:00:40</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32468">
    <title>[PATCH] debugfs: fix strtoblk for 64bit block numbers</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.ext4/32468</link>
    <description>&lt;pre&gt;# debugfs -R "icheck 4295032832" testimage
debugfs 1.42.3 (14-May-2012)
got block 4295032832 for 4295032832
got block 65536 for 4295032832
BlockInode number
65536&amp;lt;block not found&amp;gt;

Um, that's no good.

Affects icheck, freeb, setb, testb...

Signed-off-by: Eric Sandeen &amp;lt;sandeen&amp;lt; at &amp;gt;redhat.com&amp;gt;
---

diff --git a/debugfs/util.c b/debugfs/util.c
index f43b470..b07a8cc 100644
--- a/debugfs/util.c
+++ b/debugfs/util.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -298,7 +298,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; unsigned long long parse_ulonglong(const char *str, const char *cmd,
  */
 int strtoblk(const char *cmd, const char *str, blk64_t *ret)
 {
-blk_tblk;
+blk64_tblk;
 interr;
 
 blk = parse_ulonglong(str, cmd, "block number", &amp;amp;err);

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo&amp;lt; at &amp;gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

&lt;/pre&gt;</description>
    <dc:creator>Eric Sandeen</dc:creator>
    <dc:date>2012-05-23T23:01:14</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32467">
    <title>[PATCH] tests: use make rules to run tests in parallel (v2)</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.ext4/32467</link>
    <description>&lt;pre&gt;Change the e2fsck/mke2fs/tune2fs/e2image/debugfs regression tests
to be driven by Makefile rules instead of by a script loop.  This
allows the tests to be run in parallel like a build and reduces
testing time significantly.

One major change to the tests themselves is to printing the test
name, description, and status together after the test has passed
or failed, to avoid mixing lines from the tests.  The other major
change is to use unique filenames for each test, which was mostly
handled already via b4db1e4c7461a50e18c9fd135b9f1ba6f27e4390, but
in some cases temporary files are changed to use $test_name.tmp to
avoid any collision between running tests.

On my old 2-CPU system it reduced the testing time from 160s to 40s.
Most of the savings is running the MMP test delays going in parallel,
but it still takes the length of the slowest test, f_mmp_garbage.
There will be ongoing benefit in the future as more tests are added
since the wallclock time will not substantially increase.

Tests were run with "make -j", "make -j4", "make -j12", "make -j16",
and "make -j24" repeatedly without any test failures.

Signed-off-by: Andreas Dilger &amp;lt;adilger&amp;lt; at &amp;gt;whamcloud.com&amp;gt;
---
 .gitignore                        |    1 +
 tests/Makefile.in                 |   35 ++++++++++++++------
 tests/d_loaddump/expect           |    6 ++--
 tests/d_loaddump/script           |   13 +++----
 tests/defaults/e_script           |    4 +-
 tests/e_brel_bma/script           |    3 +-
 tests/e_icount_normal/name        |    2 +-
 tests/e_irel_ima/script           |    3 +-
 tests/f_dup4/script               |    5 +--
 tests/f_dup_de/script             |    3 +-
 tests/f_dup_resize/script         |    5 +--
 tests/f_ext_journal/name          |    1 +
 tests/f_h_badnode/script          |    3 +-
 tests/f_h_badroot/script          |    3 +-
 tests/f_h_normal/script           |    3 +-
 tests/f_h_reindex/script          |    3 +-
 tests/f_h_unsigned/script         |    3 +-
 tests/f_imagic_fs/script          |    3 +-
 tests/f_mmp/script                |   15 ++++-----
 tests/f_mmp_garbage/script        |    7 ++--
 tests/f_rehash_dir/name           |    1 +
 tests/f_resize_inode/script       |   12 +++----
 tests/f_uninit_last_uninit/script |    3 +-
 tests/f_unused_itable/name        |    2 +-
 tests/i_e2image/script            |   13 +++-----
 tests/m_mkfs_overhead/script      |    8 ++---
 tests/m_mmp/script                |    4 +-
 tests/r_inline_xattr/script       |    8 ++---
 tests/r_move_itable/script        |    9 ++---
 tests/r_resize_inode/script       |   13 +++----
 tests/run_e2fsck                  |   10 +++---
 tests/t_ext_jnl_rm/script         |    8 ++---
 tests/t_mmp_1on/script            |   13 +++----
 tests/t_mmp_2off/script           |   13 +++----
 tests/test_one.in                 |   63 +++++++++++++++++++++++++++++++++++++
 tests/test_post                   |   17 ++++++++++
 tests/test_script.in              |   61 ++---------------------------------
 tests/u_mke2fs/script             |    8 ++---
 tests/u_tune2fs/script            |    8 ++---
 39 files changed, 203 insertions(+), 192 deletions(-)
 create mode 100644 tests/f_ext_journal/name
 create mode 100644 tests/f_rehash_dir/name
 create mode 100644 tests/test_one.in
 create mode 100755 tests/test_post

diff --git a/.gitignore b/.gitignore
index 2d1a13e..eb0efe5 100644
--- a/.gitignore
+++ b/.gitignore
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -180,6 +180,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; tests/*.log
 tests/*.log
 tests/mke2fs.conf
 tests/test_script
+tests/test_one
 util/gen-tarball
 util/subst
 util/subst.conf
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 9dd1034..9f66a0b 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -13,23 +13,38 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; INSTALL = &amp;lt; at &amp;gt;INSTALL&amp;lt; at &amp;gt;
 
 all:: &amp;lt; at &amp;gt;DO_TEST_SUITE&amp;lt; at &amp;gt;
 
-test_script: test_script.in Makefile mke2fs.conf
+test_one: test_one.in Makefile mke2fs.conf
+&amp;lt; at &amp;gt;echo "Creating test_one script..."
+&amp;lt; at &amp;gt;echo "#!/bin/sh" &amp;gt; test_one
+&amp;lt; at &amp;gt;HTREE_CMT&amp;lt; at &amp;gt;&amp;lt; at &amp;gt;echo "HTREE=y" &amp;gt;&amp;gt; test_one
+&amp;lt; at &amp;gt;echo "SRCDIR=&amp;lt; at &amp;gt;srcdir&amp;lt; at &amp;gt;" &amp;gt;&amp;gt; test_one
+&amp;lt; at &amp;gt;echo "DIFF_OPTS=&amp;lt; at &amp;gt;UNI_DIFF_OPTS&amp;lt; at &amp;gt;" &amp;gt;&amp;gt; test_one
+&amp;lt; at &amp;gt;cat $(srcdir)/test_one.in &amp;gt;&amp;gt; test_one
+&amp;lt; at &amp;gt;chmod +x-w test_one
+
+test_script: test_one test_script.in Makefile mke2fs.conf
 &amp;lt; at &amp;gt;echo "Creating test_script..."
 &amp;lt; at &amp;gt;echo "#!/bin/sh" &amp;gt; test_script
-&amp;lt; at &amp;gt;HTREE_CMT&amp;lt; at &amp;gt;&amp;lt; at &amp;gt;echo "HTREE=y" &amp;gt;&amp;gt; test_script
-&amp;lt; at &amp;gt;echo 'EGREP="&amp;lt; at &amp;gt;EGREP&amp;lt; at &amp;gt;"' &amp;gt;&amp;gt; test_script
 &amp;lt; at &amp;gt;echo "SRCDIR=&amp;lt; at &amp;gt;srcdir&amp;lt; at &amp;gt;" &amp;gt;&amp;gt; test_script
-&amp;lt; at &amp;gt;echo "DIFF_OPTS=&amp;lt; at &amp;gt;UNI_DIFF_OPTS&amp;lt; at &amp;gt;" &amp;gt;&amp;gt; test_script
 &amp;lt; at &amp;gt;cat $(srcdir)/test_script.in &amp;gt;&amp;gt; test_script
-&amp;lt; at &amp;gt;chmod +x test_script
+&amp;lt; at &amp;gt;chmod +x-w test_script
 
 mke2fs.conf: $(srcdir)/mke2fs.conf.in
 $(CP) $(srcdir)/mke2fs.conf.in mke2fs.conf
 
-check:: test_script
+TESTS=$(wildcard [a-z]_*)
+$(TESTS):: test_one
+&amp;lt; at &amp;gt;./test_one $&amp;lt; at &amp;gt;
+
+.PHONY : test_pre test_post check
+test_pre:
 &amp;lt; at &amp;gt;echo "Running e2fsprogs test suite..."
 &amp;lt; at &amp;gt;echo " "
-&amp;lt; at &amp;gt;./test_script
+
+test_post: test_pre $(TESTS)
+&amp;lt; at &amp;gt;./test_post
+
+check:: test_pre test_post
 
 check-failed:
 &amp;lt; at &amp;gt;a=`/bin/ls *.failed 2&amp;gt; /dev/null | sed -e 's/.failed//'`; \
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -54,9 +69,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; testnew:
 EXPECT1=${TDIR}/expect.1
 EXPECT2=${TDIR}/expect.2
 # Target which generates the expect files for the new testcase.
-testend: test_script ${TDIR}/image
+testend: test_one ${TDIR}/image
 gzip -9 ${TDIR}/image
-&amp;lt; at &amp;gt;OUT1=${EXPECT1} OUT2=${EXPECT2} ./test_script ${TDIR}
+&amp;lt; at &amp;gt;OUT1=${EXPECT1} OUT2=${EXPECT2} ./test_one ${TDIR}
 &amp;lt; at &amp;gt;echo; echo; echo "*** output from first e2fsck run (${EXPECT1}) ***"
 &amp;lt; at &amp;gt;cat ${EXPECT1}
 &amp;lt; at &amp;gt;echo "*** output from second e2fsck run (${EXPECT2}) ***"
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -66,7 +81,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; testend: test_script ${TDIR}/image
 &amp;lt; at &amp;gt;echo "If all is well, edit ${TDIR}/name and rename ${TDIR}."
 
 clean::
-$(RM) -f *~ *.log *.new *.failed *.ok test.img test_script mke2fs.conf
+$(RM) -f *~ *.log *.new *.failed *.ok *.tmp test_one test_script mke2fs.conf
 
 distclean:: clean
 $(RM) -f Makefile
diff --git a/tests/d_loaddump/expect b/tests/d_loaddump/expect
index e142eac..f70df88 100644
--- a/tests/d_loaddump/expect
+++ b/tests/d_loaddump/expect
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,7 +1,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 debugfs load/dump test
 mke2fs -Fq -b 1024 test.img 512
 Exit status is 0
-debugfs -R ''write test.data test_data'' -w test.img
+debugfs -R ''write d_loaddump.tmp test_data'' -w test.img
 Allocated inode: 12
 Exit status is 0
 e2fsck -yf -N test_filesys
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -12,7 +12,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Pass 4: Checking reference counts
 Pass 5: Checking group summary information
 test_filesys: 12/64 files (0.0% non-contiguous), 158/512 blocks
 Exit status is 0
-debugfs -R ''dump test_data test.verify'' test.img
+debugfs -R ''dump test_data d_loaddump.ver.tmp'' test.img
 Exit status is 0
-cmp test.data test.verify
+cmp d_loaddump.tmp d_loaddump.ver.tmp
 Exit status is 0
diff --git a/tests/d_loaddump/script b/tests/d_loaddump/script
index 4825375..9b687eb 100644
--- a/tests/d_loaddump/script
+++ b/tests/d_loaddump/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4,8 +4,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; OUT=$test_name.log
 EXP=$test_dir/expect
 VERIFY_FSCK_OPT=-yf
 
-TEST_DATA=test.data
-VERIFY_DATA=test.verify
+TEST_DATA=$test_name.tmp
+VERIFY_DATA=$test_name.ver.tmp
 
 echo "debugfs load/dump test" &amp;gt; $OUT
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -47,21 +47,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; echo Exit status is $status &amp;gt;&amp;gt; $OUT
 # Do the verification
 #
 
-rm -f $test_name.ok $test_name.failed $VERIFY_DATA $TEST_DATA $TMPFILE $OUT.new
+rm -f $VERIFY_DATA $TEST_DATA $TMPFILE $OUT.new
 cmp -s $OUT $EXP
 status=$?
 
 if [ "$status" = 0 ] ; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
 else
-echo "failed"
+echo "$test_name: $test_description: failed"
 diff $DIFF_OPTS $EXP $OUT &amp;gt; $test_name.failed
 fi
 
 unset VERIFY_FSCK_OPT NATIVE_FSCK_OPT OUT EXP TEST_DATA VERIFY_DATA
 
 else #if test -x $DEBUGFS_EXE; then
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi 
diff --git a/tests/defaults/e_script b/tests/defaults/e_script
index b9150ba..8c9cfb6 100644
--- a/tests/defaults/e_script
+++ b/tests/defaults/e_script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -37,10 +37,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; status=$?
 rm -f $test_name.failed $test_name.ok
 
 if [ "$status" = 0 ] ; then
-    echo "ok"
+    echo "$test_name: $test_description: ok"
     touch $test_name.ok
 else
-    echo "failed"
+    echo "$test_name: $test_description: failed"
     diff $DIFF_OPTS $EXPECT $OUT &amp;gt; $test_name.failed
 fi
 
diff --git a/tests/e_brel_bma/script b/tests/e_brel_bma/script
index c046675..037e2fb 100644
--- a/tests/e_brel_bma/script
+++ b/tests/e_brel_bma/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,2 +1 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
diff --git a/tests/e_icount_normal/name b/tests/e_icount_normal/name
index eafa802..1317876 100644
--- a/tests/e_icount_normal/name
+++ b/tests/e_icount_normal/name
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1 +1 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-inode counting abstraction optimized for storing inode counts
+inode counting structure optimized for low counts
diff --git a/tests/e_irel_ima/script b/tests/e_irel_ima/script
index c046675..037e2fb 100644
--- a/tests/e_irel_ima/script
+++ b/tests/e_irel_ima/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,2 +1 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
diff --git a/tests/f_dup4/script b/tests/f_dup4/script
index 290dcc9..7c45bed 100644
--- a/tests/f_dup4/script
+++ b/tests/f_dup4/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,7 +1,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 if test -x $DEBUGFS_EXE; then
 
 SKIP_GUNZIP="true"
-TEST_DATA="test.data"
+TEST_DATA="$test_name.tmp"
 
 echo "/ Murphy Magic.  The SeCrEt of the UnIvErSe is 43, NOT 42" &amp;gt; $TEST_DATA
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -52,6 +52,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; rm -f $TEST_DATA
 unset E2FSCK_TIME TEST_DATA
 
 else #if test -x $DEBUGFS_EXE; then
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi 
diff --git a/tests/f_dup_de/script b/tests/f_dup_de/script
index d331003..60378cd 100644
--- a/tests/f_dup_de/script
+++ b/tests/f_dup_de/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -12,6 +12,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; fi
 rm -f "$TMPFILE".gz
 
 else #if test -x $DEBUGFS_EXE; then
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi 
diff --git a/tests/f_dup_resize/script b/tests/f_dup_resize/script
index 3f87cbb..34ec4ae 100644
--- a/tests/f_dup_resize/script
+++ b/tests/f_dup_resize/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,7 +1,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 if test -x $DEBUGFS_EXE; then
 
 SKIP_GUNZIP="true"
-TEST_DATA="test.data"
+TEST_DATA="$test_name.tmp"
 
 dd if=$TEST_BITS of=$TEST_DATA bs=63k count=1 conv=sync &amp;gt; /dev/null 2&amp;gt;&amp;amp;1
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -26,6 +26,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; rm -f $TEST_DATA
 unset E2FSCK_TIME TEST_DATA
 
 else #if test -x $DEBUGFS_EXE; then
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi 
diff --git a/tests/f_ext_journal/name b/tests/f_ext_journal/name
new file mode 100644
index 0000000..10e950c
--- /dev/null
+++ b/tests/f_ext_journal/name
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+test external journal device
diff --git a/tests/f_h_badnode/script b/tests/f_h_badnode/script
index 9eec084..e5fc6b2 100644
--- a/tests/f_h_badnode/script
+++ b/tests/f_h_badnode/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,6 +1,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 if test "$HTREE"x = yx ; then
 . $cmd_dir/run_e2fsck
 else
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi
diff --git a/tests/f_h_badroot/script b/tests/f_h_badroot/script
index 9eec084..e5fc6b2 100644
--- a/tests/f_h_badroot/script
+++ b/tests/f_h_badroot/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,6 +1,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 if test "$HTREE"x = yx ; then
 . $cmd_dir/run_e2fsck
 else
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi
diff --git a/tests/f_h_normal/script b/tests/f_h_normal/script
index 9eec084..e5fc6b2 100644
--- a/tests/f_h_normal/script
+++ b/tests/f_h_normal/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,6 +1,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 if test "$HTREE"x = yx ; then
 . $cmd_dir/run_e2fsck
 else
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi
diff --git a/tests/f_h_reindex/script b/tests/f_h_reindex/script
index 9eec084..e5fc6b2 100644
--- a/tests/f_h_reindex/script
+++ b/tests/f_h_reindex/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,6 +1,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 if test "$HTREE"x = yx ; then
 . $cmd_dir/run_e2fsck
 else
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi
diff --git a/tests/f_h_unsigned/script b/tests/f_h_unsigned/script
index 9eec084..e5fc6b2 100644
--- a/tests/f_h_unsigned/script
+++ b/tests/f_h_unsigned/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,6 +1,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 if test "$HTREE"x = yx ; then
 . $cmd_dir/run_e2fsck
 else
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi
diff --git a/tests/f_imagic_fs/script b/tests/f_imagic_fs/script
index 3941be0..1060f04 100644
--- a/tests/f_imagic_fs/script
+++ b/tests/f_imagic_fs/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -5,6 +5,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; PREP_CMD='$DEBUGFS -w -R "feature imagic_inodes" $TMPFILE &amp;gt; /dev/null 2&amp;gt;&amp;amp;1'
 . $cmd_dir/run_e2fsck
 
 else #if test -x $DEBUGFS_EXE; then
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi 
diff --git a/tests/f_mmp/script b/tests/f_mmp/script
index 3d4a041..1b0ff79 100644
--- a/tests/f_mmp/script
+++ b/tests/f_mmp/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,13 +1,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 FSCK_OPT=-yf
 
-TMPFILE=test.img
-rm -f $test_name.failed $test_name.ok
+TMPFILE=$test_name.tmp
 &amp;gt; $TMPFILE
 
 stat -f $TMPFILE | grep -q "Type: tmpfs"
 if [ $? = 0 ]; then
 rm -f $TMPFILE
-echo "skipped for tmpfs (no O_DIRECT support)"
+echo "$test_name: $test_description: skipped for tmpfs (no O_DIRECT)"
 return 0
 fi
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -16,7 +15,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $MKE2FS -q -F -o Linux -b 4096 -O mmp -E mmp_update_interval=1 $TMPFILE 100 &amp;gt;&amp;gt; $
 status=$?
 if [ "$status" != 0 ] ; then
 echo "mke2fs -O mmp failed" &amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return $status
 fi
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -41,7 +40,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $FSCK $FSCK_OPT $TMPFILE &amp;gt;&amp;gt; $test_name.log 2&amp;gt;&amp;amp;1
 status=$?
 if [ "$status" = 0 ] ; then
 echo "e2fsck with MMP as EXT2_MMP_SEQ_FSCK ran!" &amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return 1
 fi
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -50,7 +49,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $TUNE2FS -f -E clear_mmp $TMPFILE &amp;gt;&amp;gt; $test_name.log 2&amp;gt;&amp;amp;1
 status=$?
 if [ "$status" != 0 ] ; then
 echo "tune2fs clearing EXT2_MMP_SEQ_FSCK failed" &amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return 1
 fi
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -59,9 +58,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $FSCK $FSCK_OPT $TMPFILE &amp;gt;&amp;gt; $test_name.log 2&amp;gt;&amp;amp;1
 status=$?
 if [ "$status" != 0 ] ; then
 echo "e2fsck after clearing EXT2_MMP_SEQ_FSCK failed"&amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return $status
 fi
 
-echo "ok"
+echo "$test_name: $test_description: ok"
 rm -f $TMPFILE
diff --git a/tests/f_mmp_garbage/script b/tests/f_mmp_garbage/script
index 3b2954b..02cc12a 100644
--- a/tests/f_mmp_garbage/script
+++ b/tests/f_mmp_garbage/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,13 +1,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 FSCK_OPT=-yf
 
-TMPFILE=test.img
-rm -f $test_name.failed $test_name.ok
+TMPFILE=$test_name.tmp
 &amp;gt; $TMPFILE
 
 stat -f $TMPFILE | grep -q "Type: tmpfs"
 if [ $? = 0 ] ; then
 rm -f $TMPFILE
-echo "skipped for tmpfs (no O_DIRECT support)"
+echo "$test_name: $test_description: skipped for tmpfs (no O_DIRECT)"
 return 0
 fi
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -16,7 +15,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $MKE2FS -q -F -o Linux -b 4096 -O mmp -E mmp_update_interval=1 $TMPFILE 100 &amp;gt;&amp;gt; $
 status=$?
 if [ "$status" != 0 ] ; then
 echo "mke2fs -O mmp failed" &amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return $status
 fi
 
diff --git a/tests/f_rehash_dir/name b/tests/f_rehash_dir/name
new file mode 100644
index 0000000..a7a869a
--- /dev/null
+++ b/tests/f_rehash_dir/name
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+optimize htree directories
diff --git a/tests/f_resize_inode/script b/tests/f_resize_inode/script
index ca934e9..840432d 100644
--- a/tests/f_resize_inode/script
+++ b/tests/f_resize_inode/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,10 +1,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 if test -x $DEBUGFS_EXE; then
 
-printf "e2fsck with resize_inode: "
+test_description="e2fsck with resize_inode"
 FSCK_OPT=-yf
 OUT=$test_name.log
 if [ -f $test_dir/expect.gz ]; then
-EXP=tmp_expect
+EXP=$test_name.tmp
 gunzip &amp;lt; $test_dir/expect.gz &amp;gt; $EXP1
 else
 EXP=$test_dir/expect
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -126,15 +126,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; sed -e '1d' $OUT.new | sed -e '/^JFS DEBUG:/d'  | tr -d \\015 &amp;gt;&amp;gt; $OUT
 rm -f $OUT.new
 
 
-rm -f $test_name.ok $test_name.failed
 cmp -s $OUT $EXP
 status=$?
 
 if [ "$status" = 0 ] ; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
 else
-echo "failed"
+echo "$test_name: $test_description: failed"
 diff $DIFF_OPTS $EXP $OUT &amp;gt; $test_name.failed
 rm -f tmp_expect
 fi
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -142,6 +141,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; fi
 unset IMAGE FSCK_OPT OUT EXP
 
 else #if test -x $DEBUGFS_EXE; then
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi 
diff --git a/tests/f_uninit_last_uninit/script b/tests/f_uninit_last_uninit/script
index 4fcab1b..2fe4f3a 100644
--- a/tests/f_uninit_last_uninit/script
+++ b/tests/f_uninit_last_uninit/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -22,6 +22,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; export E2FSCK_TIME
 unset E2FSCK_TIME
 
 else #if test -x $DEBUGFS_EXE; then
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi 
diff --git a/tests/f_unused_itable/name b/tests/f_unused_itable/name
index 39b68d6..e129137 100644
--- a/tests/f_unused_itable/name
+++ b/tests/f_unused_itable/name
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1 +1 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-Invalid bg_unused_itable shouldn't move files to lost+found
+Don't move files to lost+found for bg_unused_itable
diff --git a/tests/i_e2image/script b/tests/i_e2image/script
index 9c6ae2a..0315ae2 100644
--- a/tests/i_e2image/script
+++ b/tests/i_e2image/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,4 +1,4 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-printf "Create/convert raw and qcow2 disk images: "
+test_description="create/convert raw/qcow2 images"
 if test -x $E2IMAGE_EXE; then
 
 ORIG_IMAGES="image1024.orig image2048.orig image4096.orig"
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -8,7 +8,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; QCOW2_IMG=_image.qcow2
 QCOW2_TO_RAW=_image.qcow2.raw
 OUT=$test_name.log
 MD5=$SRCDIR/$test_name/$test_name.md5
-MD5_TMP=$test_name.md5tmp
+MD5_TMP=$test_name.md5.tmp
 
 rm -f $test_name/_image.* $MD5_TMP $OUT &amp;gt;/dev/null 2&amp;gt;&amp;amp;1
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -43,18 +43,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; echo "" &amp;gt;&amp;gt; $OUT
 diff $MD5 $MD5_TMP &amp;gt;&amp;gt; $OUT 2&amp;gt;&amp;amp;1
 
 if [ $? -eq 0 ]; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
-rm -f $test_name.failed
 else
-rm -f $test_name.ok
 ln -f $test_name.log $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 fi
 
 rm -f _image.* $MD5_TMP &amp;gt;/dev/null 2&amp;gt;&amp;amp;1
 
 else #if test -x $E2IMAGE_EXE; then
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi
diff --git a/tests/m_mkfs_overhead/script b/tests/m_mkfs_overhead/script
index ff46199..63612a8 100644
--- a/tests/m_mkfs_overhead/script
+++ b/tests/m_mkfs_overhead/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,4 +1,4 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-echo -n "test bg overhead calculation: "
+test_description="test bg overhead calculation"
 
 OUT=$test_name.log
 EXP=$test_dir/expect
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -17,17 +17,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $MKE2FS -F -o Linux $MKE2FS_OPTS $TMPFILE $FS_SIZE 2&amp;gt;&amp;amp;1 | sed -e 1d | \
 
 rm -f $TMPFILE
 
-rm -f $test_name.ok $test_name.failed
 cmp -s $OUT $EXP
 status1=$?
 
 if [ "$status1" = 0 ] ; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
 else
-echo "failed"
+echo "$test_name: $test_description: failed"
 diff $DIFF_OPTS $EXP $OUT &amp;gt; $test_name.failed
 fi
-rm -f tmp_expect
 
 unset OUT EXP DESCRIPTION FS_SIZE MKE2FS_OPTS MKE2FS_SKIP_PROGRESS
diff --git a/tests/m_mmp/script b/tests/m_mmp/script
index a0c9ded..02b0b4b 100644
--- a/tests/m_mmp/script
+++ b/tests/m_mmp/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2,12 +2,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; DESCRIPTION="enable MMP during mke2fs"
 FS_SIZE=65536
 MKE2FS_DEVICE_SECTSIZE=2048
 export MKE2FS_DEVICE_SECTSIZE
-TMPFILE=test.img
+TMPFILE=$test_name.tmp
 &amp;gt; $TMPFILE
 stat -f $TMPFILE | grep -q "Type: tmpfs"
 if [ $? = 0 ]; then
 rm -f $TMPFILE
-echo "skipped for tmpfs (no O_DIRECT support)"
+echo "$test_name: $test_description: skipped for tmpfs (no O_DIRECT)"
 return 0
 fi
 MKE2FS_OPTS="-b 4096 -O mmp"
diff --git a/tests/r_inline_xattr/script b/tests/r_inline_xattr/script
index e4e0f53..021088e 100644
--- a/tests/r_inline_xattr/script
+++ b/tests/r_inline_xattr/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -34,22 +34,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; rm $TMPFILE $OUT.new
 # Do the verification
 #
 
-rm -f $test_name.ok $test_name.failed
 cmp -s $OUT $EXP
 status=$?
 
 if [ "$status" = 0 ] ; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
 else
-echo "failed"
+echo "$test_name: $test_description: failed"
 diff $DIFF_OPTS $EXP $OUT &amp;gt; $test_name.failed
 fi
 
 unset IMAGE FSCK_OPT OUT EXP
 
 else #if test -x $RESIZE2FS_EXE -a -x $DEBUGFS_EXE; then
-        rm -f $test_name.ok $test_name.failed
-        echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi
 
diff --git a/tests/r_move_itable/script b/tests/r_move_itable/script
index 56a861b..9ba847e 100644
--- a/tests/r_move_itable/script
+++ b/tests/r_move_itable/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -96,16 +96,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $TUNE2FS -c 20 -U clear $TMPFILE  &amp;gt;/dev/null 2&amp;gt;&amp;amp;1
 echo dumpe2fs test.img &amp;gt;&amp;gt; $OUT
 $DUMPE2FS $TMPFILE 2&amp;gt;&amp;amp;1 | sed -f $cmd_dir/filter_dumpe2fs &amp;gt;&amp;gt; $OUT
 
-rm -f $test_name.ok $test_name.failed $TMPFILE
+rm -f $TMPFILE
 
 cmp -s $OUT $EXP
 status=$?
 
 if [ "$status" = 0 ] ; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
 else
-echo "failed"
+echo "$test_name: $test_description: failed"
 diff $DIFF_OPTS $EXP $OUT &amp;gt; $test_name.failed
 rm -f tmp_expect
 fi
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -113,6 +113,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; fi
 unset IMAGE FSCK_OPT OUT EXP
 
 else #if test -x $RESIZE2FS_EXE -a -x $DEBUGFS_EXE; then
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi 
diff --git a/tests/r_resize_inode/script b/tests/r_resize_inode/script
index c8db127..da3c2ed 100644
--- a/tests/r_resize_inode/script
+++ b/tests/r_resize_inode/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3,7 +3,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; if test -x $RESIZE2FS_EXE; then
 FSCK_OPT=-yf
 OUT=$test_name.log
 if [ -f $test_dir/expect.gz ]; then
-EXP=tmp_expect
+EXP=$test_name.tmp
 gunzip &amp;lt; $test_dir/expect.gz &amp;gt; $EXP1
 else
 EXP=$test_dir/expect
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -83,22 +83,21 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $TUNE2FS -c 20 -U clear $TMPFILE  &amp;gt;/dev/null 2&amp;gt;&amp;amp;1
 echo dumpe2fs test.img &amp;gt;&amp;gt; $OUT
 $DUMPE2FS $TMPFILE 2&amp;gt;&amp;amp;1 | sed -f $cmd_dir/filter_dumpe2fs &amp;gt;&amp;gt; $OUT
 
-rm -f $test_name.ok $test_name.failed $TMPFILE
+rm -f $TMPFILE
 cmp -s $OUT $EXP
 status=$?
 
 if [ "$status" = 0 ] ; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
 else
-echo "failed"
+echo "$test_name: $test_description: failed"
 diff $DIFF_OPTS $EXP $OUT &amp;gt; $test_name.failed
-rm -f tmp_expect
+rm -f $test_name.tmp
 fi
 
 unset IMAGE FSCK_OPT OUT EXP
 
 else #if test -x $RESIZE2FS; then
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi 
diff --git a/tests/run_e2fsck b/tests/run_e2fsck
index 573e010..6a498c3 100644
--- a/tests/run_e2fsck
+++ b/tests/run_e2fsck
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,5 +1,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 if [ "$DESCRIPTION"x != x ]; then
-printf "%s" "$DESCRIPTION: "
+test_description="$DESCRIPTION"
 fi
 if [ "$IMAGE"x = x ]; then
 IMAGE=$test_dir/image.gz
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -23,7 +23,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; fi
 
 if [ "$EXP1"x = x ]; then
 if [ -f $test_dir/expect.1.gz ]; then
-EXP1=tmp_expect
+EXP1=$test_name.1.tmp
 gunzip &amp;lt; $test_dir/expect.1.gz &amp;gt; $EXP1
 else
 EXP1=$test_dir/expect.1
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -32,7 +32,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; fi
 
 if [ "$EXP2"x = x ]; then
 if [ -f $test_dir/expect.2.gz ]; then
-EXP2=tmp_expect
+EXP2=$test_name.2.tmp
 gunzip &amp;lt; $test_dir/expect.2.gz &amp;gt; $EXP2
 else
 EXP2=$test_dir/expect.2
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -87,10 +87,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; if [ "$SKIP_VERIFY" != "true" ] ; then
 fi
 
 if [ "$status1" -eq 0 -a "$status2" -eq 0 -a "$status3" -eq 0 ] ; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
 else
-echo "failed"
+echo "$test_name: $test_description: failed"
 diff $DIFF_OPTS $EXP1 $OUT1 &amp;gt; $test_name.failed
 if [ "$ONE_PASS_ONLY" != "true" ]; then
 diff $DIFF_OPTS $EXP2 $OUT2 &amp;gt;&amp;gt; $test_name.failed
diff --git a/tests/t_ext_jnl_rm/script b/tests/t_ext_jnl_rm/script
index d7217b6..b2af80c 100644
--- a/tests/t_ext_jnl_rm/script
+++ b/tests/t_ext_jnl_rm/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,4 +1,4 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-printf "remove missing external journal device: "
+test_description="remove missing external journal device"
 OUT=$test_name.log
 
 dd if=/dev/zero of=$TMPFILE bs=1k count=512 &amp;gt; /dev/null 2&amp;gt;&amp;amp;1
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -17,12 +17,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; echo "tune2fs -f -O ^has_journal $TMPFILE" &amp;gt;&amp;gt; $OUT
 $TUNE2FS -f -O ^has_journal $TMPFILE &amp;gt;&amp;gt; $OUT 2&amp;gt;&amp;amp;1
 $DUMPE2FS -h $TMPFILE &amp;gt;&amp;gt; $OUT 2&amp;gt;&amp;amp;1
 if [ "$(grep 'Journal UUID:' $OUT)" ]; then
-rm -f $test_name.ok
 mv $test_name.log $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 else
-echo "ok"
+echo "$test_name: $test_description: ok"
 mv $test_name.log $test_name.ok
-rm -f $test_name.failed
 fi
 rm -f $TMPFILE
diff --git a/tests/t_mmp_1on/script b/tests/t_mmp_1on/script
index 43afe9d..8fc8158 100644
--- a/tests/t_mmp_1on/script
+++ b/tests/t_mmp_1on/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,13 +1,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 FSCK_OPT=-yf
 
-TMPFILE=test.img
-rm -f $test_name.failed $test_name.ok
+TMPFILE=$test_name.tmp
 &amp;gt; $TMPFILE
 
 stat -f $TMPFILE | grep -q "Type: tmpfs"
 if [ $? = 0 ] ; then
 rm -f $TMPFILE
-echo "skipped for tmpfs (no O_DIRECT support)"
+echo "$test_name: $test_description: skipped for tmpfs (no O_DIRECT)"
 return 0
 fi
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -15,7 +14,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $MKE2FS -q -F -o Linux -b 4096 $TMPFILE 100 &amp;gt; $test_name.log 2&amp;gt;&amp;amp;1
 status=$?
 if [ "$status" != 0 ] ; then
 echo "mke2fs failed" &amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return $status
 fi
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -23,18 +22,18 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $TUNE2FS -O mmp -E mmp_update_interval=1 $TMPFILE &amp;gt;&amp;gt; $test_name.log 2&amp;gt;&amp;amp;1
 status=$?
 if [ "$status" != 0 ] ; then
 echo "tune2fs -O mmp failed with $status" &amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return $status
 fi
 
 $FSCK $FSCK_OPT $TMPFILE &amp;gt;&amp;gt; $test_name.log 2&amp;gt;&amp;amp;1
 status=$?
 if [ "$status" = 0 ] ; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
 else
 echo "e2fsck with MMP enabled failed with $status" &amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return $status
 fi
 rm -f $TMPFILE
diff --git a/tests/t_mmp_2off/script b/tests/t_mmp_2off/script
index d9a5b3e..1dee14e 100644
--- a/tests/t_mmp_2off/script
+++ b/tests/t_mmp_2off/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,13 +1,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 FSCK_OPT=-yf
 
-TMPFILE=test.img
-rm -f $test_name.failed $test_name.ok
+TMPFILE=$test_name.tmp
 &amp;gt; $TMPFILE
 
 stat -f $TMPFILE | grep -q "Type: tmpfs"
 if [ $? = 0 ]; then
 rm -f $TMPFILE
-echo "skipped for tmpfs (no O_DIRECT support)"
+echo "$test_name: $test_description: skipped for tmpfs (no O_DIRECT)"
 return 0
 fi
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -15,7 +14,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $MKE2FS -q -F -o Linux -b 4096 -O mmp $TMPFILE 100 &amp;gt; $test_name.log 2&amp;gt;&amp;amp;1
 status=$?
 if [ "$status" != 0 ] ; then
 echo "mke2fs -O mmp failed" &amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return $status
 fi
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -23,18 +22,18 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $TUNE2FS -O ^mmp $TMPFILE &amp;gt; $test_name.log 2&amp;gt;&amp;amp;1
 status=$?
 if [ "$status" != 0 ] ; then
 echo "tune2fs -O ^mmp failed" &amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return $status
 fi
 
 $FSCK $FSCK_OPT $TMPFILE &amp;gt; $test_name.log 2&amp;gt;&amp;amp;1
 status=$?
 if [ "$status" = 0 ] ; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
 else
 echo "e2fsck after MMP disable failed" &amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return $status
 fi
 rm -f $TMPFILE
diff --git a/tests/test_one.in b/tests/test_one.in
new file mode 100644
index 0000000..ac16ebb
--- /dev/null
+++ b/tests/test_one.in
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,63 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+#!/bin/sh
+# run a single regression test
+
+LC_ALL=C
+export LC_ALL
+
+case "$1" in 
+    --valgrind)
+    export USE_VALGRIND="valgrind -q --sim-hints=lax-ioctls"
+shift;
+;;
+    --valgrind-leakcheck)
+    export USE_VALGRIND="valgrind --sim-hints=lax-ioctls --leak-check=full --show-reachable=yes --log-file=/tmp/valgrind-%p.log"
+shift;
+;;
+esac
+
+case "$1" in 
+    *.failed|*.new|*.ok|*.log|*.tmp)exit 0 ;;
+esac
+
+test_dir=$1
+cmd_dir=$SRCDIR
+
+if test "$TEST_CONFIG"x = x; then
+TEST_CONFIG=$SRCDIR/test_config
+fi
+
+. $TEST_CONFIG
+
+TMPFILE=$(mktemp)
+
+test_name=`echo $test_dir | sed -e 's;.*/;;'`
+if [ -f $test_dir ] ; then
+exit 0;
+fi
+if [ ! -d $test_dir ] ; then
+echo "The test '$test_name' does not exist."
+exit 0;
+fi
+if [ -z "`ls $test_dir`" ]; then
+exit 0
+fi
+if [ -f $test_dir/name ]; then
+test_description=`cat $test_dir/name`
+else
+test_description=
+fi
+
+rm -f $test_name.ok $test_name.failed
+echo -e -n "$test_name: $test_description:\r"
+
+if [ -f $test_dir/script ]; then
+. $test_dir/script
+else
+test_base=`echo $test_name | sed -e 's/_.*//'`
+default_script=$SRCDIR/defaults/${test_base}_script
+if [ -f $default_script ]; then
+. $SRCDIR/defaults/${test_base}_script
+else
+echo "$test_name: Missing test script $default_script!"
+fi
+fi
diff --git a/tests/test_post b/tests/test_post
new file mode 100755
index 0000000..1251266
--- /dev/null
+++ b/tests/test_post
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,17 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+#!/bin/sh
+# report stats about test scripts that were run
+
+num_ok=`ls *.ok 2&amp;gt;/dev/null | wc -l`
+num_failed=`ls *.failed 2&amp;gt;/dev/null | wc -l`
+
+echo "$num_ok tests succeeded$num_failed tests failed"
+
+test "$num_failed" -eq 0 &amp;amp;&amp;amp; exit 0
+
+echo -n "Tests failed: "
+for fname in $(ls *.failed); do
+echo -n "${fname%%.failed} "
+done
+echo ""
+
+exit 1
diff --git a/tests/test_script.in b/tests/test_script.in
index b7ac86e..b493c3b 100644
--- a/tests/test_script.in
+++ b/tests/test_script.in
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,10 +1,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #!/bin/sh
+# Run all or specified test scripts
 #
-# Test script for e2fsck
-#
-
-LC_ALL=C
-export LC_ALL
 
 case "$1" in 
     --valgrind)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -18,13 +14,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; case "$1" in
 esac
 
 if test "$1"x = x ; then
-  TESTS=`ls -d $SRCDIR/[a-zA-Z]_* | $EGREP -v "\.failed|\.new"`
+  TESTS=`ls -d $SRCDIR/[a-zA-Z]_*`
 else
   TESTS=
   for i 
   do
     case $i in
-*.failed|*.new)continue ;;
 [a-zA-Z])TESTS="$TESTS $SRCDIR/${i}_*" ;;
 *)TESTS="$TESTS $SRCDIR/$i" ;;
     esac
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -33,57 +28,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; fi
 
 cmd_dir=$SRCDIR
 
-if test "$TEST_CONFIG"x = x; then
-TEST_CONFIG=$SRCDIR/test_config
-fi
-
-. $TEST_CONFIG
-
-TMPFILE=$(mktemp)
-
 for test_dir in $TESTS
 do
-test_name=`echo $test_dir | sed -e 's;.*/;;'`
-if [ -f $test_dir ] ; then
-    continue;
-fi
-if [ ! -d $test_dir ] ; then
-echo "The test '$test_name' does not exist."
-continue;
-fi
-if [ -z "`ls $test_dir`" ]; then
-continue
-fi
-if [ -f $test_dir/name ]; then
-test_description=`cat $test_dir/name`
-printf "%s: %s: " "$test_name" "$test_description"
-else
-printf "%s: " "$test_name"
-fi
-if [ -f $test_dir/script ]; then
-. $test_dir/script
-else
-test_base=`echo $test_name | sed -e 's/_.*//'`
-default_script=$SRCDIR/defaults/${test_base}_script
-if [ -f $default_script ]; then
-. $SRCDIR/defaults/${test_base}_script
-else
-echo "Missing test script!"
-fi
-fi
-done
-
-num_ok=`ls *.ok 2&amp;gt;/dev/null | wc -l`
-num_failed=`ls *.failed 2&amp;gt;/dev/null | wc -l`
-
-echo "$num_ok tests succeeded$num_failed tests failed"
-
-test "$num_failed" -eq 0 &amp;amp;&amp;amp; exit 0
-
-echo -n "Tests failed: "
-for fname in $(ls *.failed); do
-echo -n "${fname%%.failed} "
+$cmd_dir/test_one $test_dir
 done
-echo ""
 
-exit 1
+$cmd_dir/test_post
diff --git a/tests/u_mke2fs/script b/tests/u_mke2fs/script
index ef98899..fcf5eae 100644
--- a/tests/u_mke2fs/script
+++ b/tests/u_mke2fs/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,4 +1,4 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-printf "e2undo with mke2fs: "
+test_description="e2undo with mke2fs"
 if test -x $E2UNDO_EXE; then
 
 E2FSPROGS_UNDO_DIR=/tmp
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -24,13 +24,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; new_md5=`md5sum $TMPFILE | cut -d " " -f 1`
 echo md5sum after e2undo $new_md5 &amp;gt;&amp;gt; $OUT
 
 if [ $md5 = $new_md5 ]; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
-rm -f $test_name.failed
 else
-rm -f $test_name.ok
 ln -f $test_name.log $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 fi
 rm -f $TDB_FILE $TMPFILE
 fi
diff --git a/tests/u_tune2fs/script b/tests/u_tune2fs/script
index 222b95f..4cc1e0c 100644
--- a/tests/u_tune2fs/script
+++ b/tests/u_tune2fs/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,4 +1,4 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-printf "e2undo with tune2fs: "
+test_description="e2undo with tune2fs"
 if test -x $E2UNDO_EXE; then
 
 E2FSPROGS_UNDO_DIR=/tmp
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -24,13 +24,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; new_md5=`md5sum $TMPFILE | cut -d " " -f 1`
 echo md5sum after e2undo $new_md5 &amp;gt;&amp;gt; $OUT
 
 if [ $md5 = $new_md5 ]; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
-rm -f $test_name.failed
 else
-rm -f $test_name.ok
 ln -f $test_name.log $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 fi
 rm -f $TDB_FILE $TMPFILE
 fi
&lt;/pre&gt;</description>
    <dc:creator>Andreas Dilger</dc:creator>
    <dc:date>2012-05-23T20:09:20</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32466">
    <title>Re: ext4 &gt; 16T woes</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.ext4/32466</link>
    <description>&lt;pre&gt;
It is backed by XFS, yes.  I don't think I'm freeing any blocks during
the test, so I wouldn't expect discard to come into it.  Really, all it
should be doing is writing fairly small amounts of metadata, right?

I'll keep investigating.

-Eric


--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo&amp;lt; at &amp;gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

&lt;/pre&gt;</description>
    <dc:creator>Eric Sandeen</dc:creator>
    <dc:date>2012-05-23T19:48:51</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32465">
    <title>Re: ext4 &gt; 16T woes</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.ext4/32465</link>
    <description>&lt;pre&gt;
Hmm, we've done full-filesystem write + read +verify + e2fsck up to
128TB (took several days to write and read so much data) with RHEL6
without similar problems (up to 32TB on RHEL5) using real disks.

We don't use fallocate() or loop devices, so it may be that some
problems are therein, or possibly with newer kernels.

Presumably this is using XFS for the backing loop file?  I don't
anticipate problems with that, but there may be strange interactions
between fallocate(), sparse files, and TRIM/DISCARD?


Did you try sync here, or running e2fsck on the loop device instead
of the backing file?  It looks like nothing was written to disk...



Cheers, Andreas





--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo&amp;lt; at &amp;gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

&lt;/pre&gt;</description>
    <dc:creator>Andreas Dilger</dc:creator>
    <dc:date>2012-05-23T19:33:50</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32464">
    <title>ext4 &gt; 16T woes</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.ext4/32464</link>
    <description>&lt;pre&gt;I'll try to look into this but just wanted to put it out there.

After creating a 32T fs and filling it with 1T preallocated files,
I get quite a lot of corruption; this wasn't really the test
I wanted to do, I wanted to then remove a file with mostly
high blocks, run fsstress, and test recovery :(

# uname -r
3.4.0-rc4+
# truncate --size 32t imagefile2
# mkfs.ext4 -F imagefile2
mke2fs 1.42.3 (14-May-2012)
...
# mount -o loop imagefile2 /mnt/scratch
# for I in `seq 1 32`; do fallocate -l 1t /mnt/scratch/1tfile$I; done
# umount /mnt/scratch
# time e2fsck -fn imagefile2
e2fsck 1.42.3 (14-May-2012)
&amp;lt;many many many lines snipped&amp;gt;
Free blocks count wrong for group #131072 (0, counted=32768).
Fix? no

Free blocks count wrong for group #131073 (0, counted=32768).
Fix? no

Free blocks count wrong for group #131074 (0, counted=4164).
Fix? no

Free blocks count wrong (3, counted=4294967299).
Fix? no


imagefile2: ********** WARNING: Filesystem still has errors **********

imagefile2: 43/536870912 files (0.0% non-contiguous), 8589934589/8589934592 blocks

real27m40.133s
user27m12.886s
sys0m6.238s

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo&amp;lt; at &amp;gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

&lt;/pre&gt;</description>
    <dc:creator>Eric Sandeen</dc:creator>
    <dc:date>2012-05-23T18:48:34</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32463">
    <title>Re: [PATCH] tests: use make rules to run tests in parallel</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.ext4/32463</link>
    <description>&lt;pre&gt;
Sigh,
as Murphy would have it, I noticed a buglet in the patch after I
sent it (using "continue" instead of "exit 0" for non-existent
tests given to "test_one").  New patch to follow soon.

Cheers, Andreas
--
Andreas Dilger                       Whamcloud, Inc.
Principal Lustre Engineer            http://www.whamcloud.com/




--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo&amp;lt; at &amp;gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

&lt;/pre&gt;</description>
    <dc:creator>Andreas Dilger</dc:creator>
    <dc:date>2012-05-23T18:44:18</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32462">
    <title>[PATCH] tests: use make rules to run tests in parallel</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.ext4/32462</link>
    <description>&lt;pre&gt;Change the e2fsck/mke2fs/tune2fs/e2image/debugfs regression tests
to be driven by Makefile rules instead of by a script loop.  This
allows the tests to be run in parallel like a build and reduces
testing time significantly.

One major change to the tests themselves is to avoid printing any
status output until the test has passed or failed, to avoid mixing
lines from the tests.  The other major change is to use unique
filenames for each test, which was mostly handled already, but in
some cases temporary files are called $test_name.tmp to avoid any
collision between running tests.

On my old system it reduced the testing time from 160s to about 40s.
Most of the savings is running the MMP test check delays in parallel,
but it still takes the length of the slowest test, f_mmp_garbage.
There will be ongoing benefit in the future as more tests are added.
Tests were run with "make -j", "make -j4", "make -j12", "make -j16",
and "make -j24" repeatedly without any test failures.

Signed-off-by: Andreas Dilger &amp;lt;adilger&amp;lt; at &amp;gt;whamcloud.com&amp;gt;
---
 .gitignore                        |    1 +
 tests/Makefile.in                 |   35 +++++++++++++++------
 tests/d_loaddump/expect           |    6 ++--
 tests/d_loaddump/script           |   13 ++++----
 tests/defaults/e_script           |    4 +-
 tests/e_brel_bma/script           |    3 +-
 tests/e_irel_ima/script           |    3 +-
 tests/f_dup4/script               |    5 +--
 tests/f_dup_de/script             |    3 +-
 tests/f_dup_resize/script         |    5 +--
 tests/f_h_badnode/script          |    3 +-
 tests/f_h_badroot/script          |    3 +-
 tests/f_h_normal/script           |    3 +-
 tests/f_h_reindex/script          |    3 +-
 tests/f_h_unsigned/script         |    3 +-
 tests/f_imagic_fs/script          |    3 +-
 tests/f_mmp/script                |   15 ++++-----
 tests/f_mmp_garbage/script        |    7 ++--
 tests/f_resize_inode/script       |   12 +++----
 tests/f_uninit_last_uninit/script |    3 +-
 tests/f_unused_itable/name        |    2 +-
 tests/i_e2image/script            |   13 +++-----
 tests/m_mkfs_overhead/script      |    8 ++---
 tests/m_mmp/script                |    4 +-
 tests/r_inline_xattr/script       |    8 ++---
 tests/r_move_itable/script        |    9 ++---
 tests/r_resize_inode/script       |   13 ++++----
 tests/run_e2fsck                  |   10 +++---
 tests/t_ext_jnl_rm/script         |    8 ++---
 tests/t_mmp_1on/script            |   13 ++++----
 tests/t_mmp_2off/script           |   13 ++++----
 tests/test_one.in                 |   60 ++++++++++++++++++++++++++++++++++++
 tests/test_post                   |   17 ++++++++++
 tests/test_script.in              |   61 ++----------------------------------
 tests/u_mke2fs/script             |    8 ++---
 tests/u_tune2fs/script            |    8 ++---
 36 files changed, 197 insertions(+), 191 deletions(-)
 create mode 100644 tests/test_one.in
 create mode 100755 tests/test_post

diff --git a/.gitignore b/.gitignore
index 2d1a13e..eb0efe5 100644
--- a/.gitignore
+++ b/.gitignore
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -180,6 +180,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; tests/*.log
 tests/*.log
 tests/mke2fs.conf
 tests/test_script
+tests/test_one
 util/gen-tarball
 util/subst
 util/subst.conf
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 9dd1034..9f66a0b 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -13,23 +13,38 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; INSTALL = &amp;lt; at &amp;gt;INSTALL&amp;lt; at &amp;gt;
 
 all:: &amp;lt; at &amp;gt;DO_TEST_SUITE&amp;lt; at &amp;gt;
 
-test_script: test_script.in Makefile mke2fs.conf
+test_one: test_one.in Makefile mke2fs.conf
+&amp;lt; at &amp;gt;echo "Creating test_one script..."
+&amp;lt; at &amp;gt;echo "#!/bin/sh" &amp;gt; test_one
+&amp;lt; at &amp;gt;HTREE_CMT&amp;lt; at &amp;gt;&amp;lt; at &amp;gt;echo "HTREE=y" &amp;gt;&amp;gt; test_one
+&amp;lt; at &amp;gt;echo "SRCDIR=&amp;lt; at &amp;gt;srcdir&amp;lt; at &amp;gt;" &amp;gt;&amp;gt; test_one
+&amp;lt; at &amp;gt;echo "DIFF_OPTS=&amp;lt; at &amp;gt;UNI_DIFF_OPTS&amp;lt; at &amp;gt;" &amp;gt;&amp;gt; test_one
+&amp;lt; at &amp;gt;cat $(srcdir)/test_one.in &amp;gt;&amp;gt; test_one
+&amp;lt; at &amp;gt;chmod +x-w test_one
+
+test_script: test_one test_script.in Makefile mke2fs.conf
 &amp;lt; at &amp;gt;echo "Creating test_script..."
 &amp;lt; at &amp;gt;echo "#!/bin/sh" &amp;gt; test_script
-&amp;lt; at &amp;gt;HTREE_CMT&amp;lt; at &amp;gt;&amp;lt; at &amp;gt;echo "HTREE=y" &amp;gt;&amp;gt; test_script
-&amp;lt; at &amp;gt;echo 'EGREP="&amp;lt; at &amp;gt;EGREP&amp;lt; at &amp;gt;"' &amp;gt;&amp;gt; test_script
 &amp;lt; at &amp;gt;echo "SRCDIR=&amp;lt; at &amp;gt;srcdir&amp;lt; at &amp;gt;" &amp;gt;&amp;gt; test_script
-&amp;lt; at &amp;gt;echo "DIFF_OPTS=&amp;lt; at &amp;gt;UNI_DIFF_OPTS&amp;lt; at &amp;gt;" &amp;gt;&amp;gt; test_script
 &amp;lt; at &amp;gt;cat $(srcdir)/test_script.in &amp;gt;&amp;gt; test_script
-&amp;lt; at &amp;gt;chmod +x test_script
+&amp;lt; at &amp;gt;chmod +x-w test_script
 
 mke2fs.conf: $(srcdir)/mke2fs.conf.in
 $(CP) $(srcdir)/mke2fs.conf.in mke2fs.conf
 
-check:: test_script
+TESTS=$(wildcard [a-z]_*)
+$(TESTS):: test_one
+&amp;lt; at &amp;gt;./test_one $&amp;lt; at &amp;gt;
+
+.PHONY : test_pre test_post check
+test_pre:
 &amp;lt; at &amp;gt;echo "Running e2fsprogs test suite..."
 &amp;lt; at &amp;gt;echo " "
-&amp;lt; at &amp;gt;./test_script
+
+test_post: test_pre $(TESTS)
+&amp;lt; at &amp;gt;./test_post
+
+check:: test_pre test_post
 
 check-failed:
 &amp;lt; at &amp;gt;a=`/bin/ls *.failed 2&amp;gt; /dev/null | sed -e 's/.failed//'`; \
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -54,9 +69,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; testnew:
 EXPECT1=${TDIR}/expect.1
 EXPECT2=${TDIR}/expect.2
 # Target which generates the expect files for the new testcase.
-testend: test_script ${TDIR}/image
+testend: test_one ${TDIR}/image
 gzip -9 ${TDIR}/image
-&amp;lt; at &amp;gt;OUT1=${EXPECT1} OUT2=${EXPECT2} ./test_script ${TDIR}
+&amp;lt; at &amp;gt;OUT1=${EXPECT1} OUT2=${EXPECT2} ./test_one ${TDIR}
 &amp;lt; at &amp;gt;echo; echo; echo "*** output from first e2fsck run (${EXPECT1}) ***"
 &amp;lt; at &amp;gt;cat ${EXPECT1}
 &amp;lt; at &amp;gt;echo "*** output from second e2fsck run (${EXPECT2}) ***"
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -66,7 +81,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; testend: test_script ${TDIR}/image
 &amp;lt; at &amp;gt;echo "If all is well, edit ${TDIR}/name and rename ${TDIR}."
 
 clean::
-$(RM) -f *~ *.log *.new *.failed *.ok test.img test_script mke2fs.conf
+$(RM) -f *~ *.log *.new *.failed *.ok *.tmp test_one test_script mke2fs.conf
 
 distclean:: clean
 $(RM) -f Makefile
diff --git a/tests/d_loaddump/expect b/tests/d_loaddump/expect
index e142eac..f70df88 100644
--- a/tests/d_loaddump/expect
+++ b/tests/d_loaddump/expect
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,7 +1,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 debugfs load/dump test
 mke2fs -Fq -b 1024 test.img 512
 Exit status is 0
-debugfs -R ''write test.data test_data'' -w test.img
+debugfs -R ''write d_loaddump.tmp test_data'' -w test.img
 Allocated inode: 12
 Exit status is 0
 e2fsck -yf -N test_filesys
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -12,7 +12,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Pass 4: Checking reference counts
 Pass 5: Checking group summary information
 test_filesys: 12/64 files (0.0% non-contiguous), 158/512 blocks
 Exit status is 0
-debugfs -R ''dump test_data test.verify'' test.img
+debugfs -R ''dump test_data d_loaddump.ver.tmp'' test.img
 Exit status is 0
-cmp test.data test.verify
+cmp d_loaddump.tmp d_loaddump.ver.tmp
 Exit status is 0
diff --git a/tests/d_loaddump/script b/tests/d_loaddump/script
index 4825375..9b687eb 100644
--- a/tests/d_loaddump/script
+++ b/tests/d_loaddump/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4,8 +4,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; OUT=$test_name.log
 EXP=$test_dir/expect
 VERIFY_FSCK_OPT=-yf
 
-TEST_DATA=test.data
-VERIFY_DATA=test.verify
+TEST_DATA=$test_name.tmp
+VERIFY_DATA=$test_name.ver.tmp
 
 echo "debugfs load/dump test" &amp;gt; $OUT
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -47,21 +47,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; echo Exit status is $status &amp;gt;&amp;gt; $OUT
 # Do the verification
 #
 
-rm -f $test_name.ok $test_name.failed $VERIFY_DATA $TEST_DATA $TMPFILE $OUT.new
+rm -f $VERIFY_DATA $TEST_DATA $TMPFILE $OUT.new
 cmp -s $OUT $EXP
 status=$?
 
 if [ "$status" = 0 ] ; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
 else
-echo "failed"
+echo "$test_name: $test_description: failed"
 diff $DIFF_OPTS $EXP $OUT &amp;gt; $test_name.failed
 fi
 
 unset VERIFY_FSCK_OPT NATIVE_FSCK_OPT OUT EXP TEST_DATA VERIFY_DATA
 
 else #if test -x $DEBUGFS_EXE; then
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi 
diff --git a/tests/defaults/e_script b/tests/defaults/e_script
index b9150ba..8c9cfb6 100644
--- a/tests/defaults/e_script
+++ b/tests/defaults/e_script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -37,10 +37,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; status=$?
 rm -f $test_name.failed $test_name.ok
 
 if [ "$status" = 0 ] ; then
-    echo "ok"
+    echo "$test_name: $test_description: ok"
     touch $test_name.ok
 else
-    echo "failed"
+    echo "$test_name: $test_description: failed"
     diff $DIFF_OPTS $EXPECT $OUT &amp;gt; $test_name.failed
 fi
 
diff --git a/tests/e_brel_bma/script b/tests/e_brel_bma/script
index c046675..037e2fb 100644
--- a/tests/e_brel_bma/script
+++ b/tests/e_brel_bma/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,2 +1 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
diff --git a/tests/e_irel_ima/script b/tests/e_irel_ima/script
index c046675..037e2fb 100644
--- a/tests/e_irel_ima/script
+++ b/tests/e_irel_ima/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,2 +1 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
diff --git a/tests/f_dup4/script b/tests/f_dup4/script
index 290dcc9..7c45bed 100644
--- a/tests/f_dup4/script
+++ b/tests/f_dup4/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,7 +1,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 if test -x $DEBUGFS_EXE; then
 
 SKIP_GUNZIP="true"
-TEST_DATA="test.data"
+TEST_DATA="$test_name.tmp"
 
 echo "/ Murphy Magic.  The SeCrEt of the UnIvErSe is 43, NOT 42" &amp;gt; $TEST_DATA
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -52,6 +52,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; rm -f $TEST_DATA
 unset E2FSCK_TIME TEST_DATA
 
 else #if test -x $DEBUGFS_EXE; then
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi 
diff --git a/tests/f_dup_de/script b/tests/f_dup_de/script
index d331003..60378cd 100644
--- a/tests/f_dup_de/script
+++ b/tests/f_dup_de/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -12,6 +12,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; fi
 rm -f "$TMPFILE".gz
 
 else #if test -x $DEBUGFS_EXE; then
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi 
diff --git a/tests/f_dup_resize/script b/tests/f_dup_resize/script
index 3f87cbb..34ec4ae 100644
--- a/tests/f_dup_resize/script
+++ b/tests/f_dup_resize/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,7 +1,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 if test -x $DEBUGFS_EXE; then
 
 SKIP_GUNZIP="true"
-TEST_DATA="test.data"
+TEST_DATA="$test_name.tmp"
 
 dd if=$TEST_BITS of=$TEST_DATA bs=63k count=1 conv=sync &amp;gt; /dev/null 2&amp;gt;&amp;amp;1
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -26,6 +26,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; rm -f $TEST_DATA
 unset E2FSCK_TIME TEST_DATA
 
 else #if test -x $DEBUGFS_EXE; then
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi 
diff --git a/tests/f_h_badnode/script b/tests/f_h_badnode/script
index 9eec084..e5fc6b2 100644
--- a/tests/f_h_badnode/script
+++ b/tests/f_h_badnode/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,6 +1,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 if test "$HTREE"x = yx ; then
 . $cmd_dir/run_e2fsck
 else
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi
diff --git a/tests/f_h_badroot/script b/tests/f_h_badroot/script
index 9eec084..e5fc6b2 100644
--- a/tests/f_h_badroot/script
+++ b/tests/f_h_badroot/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,6 +1,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 if test "$HTREE"x = yx ; then
 . $cmd_dir/run_e2fsck
 else
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi
diff --git a/tests/f_h_normal/script b/tests/f_h_normal/script
index 9eec084..e5fc6b2 100644
--- a/tests/f_h_normal/script
+++ b/tests/f_h_normal/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,6 +1,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 if test "$HTREE"x = yx ; then
 . $cmd_dir/run_e2fsck
 else
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi
diff --git a/tests/f_h_reindex/script b/tests/f_h_reindex/script
index 9eec084..e5fc6b2 100644
--- a/tests/f_h_reindex/script
+++ b/tests/f_h_reindex/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,6 +1,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 if test "$HTREE"x = yx ; then
 . $cmd_dir/run_e2fsck
 else
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi
diff --git a/tests/f_h_unsigned/script b/tests/f_h_unsigned/script
index 9eec084..e5fc6b2 100644
--- a/tests/f_h_unsigned/script
+++ b/tests/f_h_unsigned/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,6 +1,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 if test "$HTREE"x = yx ; then
 . $cmd_dir/run_e2fsck
 else
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi
diff --git a/tests/f_imagic_fs/script b/tests/f_imagic_fs/script
index 3941be0..1060f04 100644
--- a/tests/f_imagic_fs/script
+++ b/tests/f_imagic_fs/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -5,6 +5,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; PREP_CMD='$DEBUGFS -w -R "feature imagic_inodes" $TMPFILE &amp;gt; /dev/null 2&amp;gt;&amp;amp;1'
 . $cmd_dir/run_e2fsck
 
 else #if test -x $DEBUGFS_EXE; then
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi 
diff --git a/tests/f_mmp/script b/tests/f_mmp/script
index 3d4a041..1b0ff79 100644
--- a/tests/f_mmp/script
+++ b/tests/f_mmp/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,13 +1,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 FSCK_OPT=-yf
 
-TMPFILE=test.img
-rm -f $test_name.failed $test_name.ok
+TMPFILE=$test_name.tmp
 &amp;gt; $TMPFILE
 
 stat -f $TMPFILE | grep -q "Type: tmpfs"
 if [ $? = 0 ]; then
 rm -f $TMPFILE
-echo "skipped for tmpfs (no O_DIRECT support)"
+echo "$test_name: $test_description: skipped for tmpfs (no O_DIRECT)"
 return 0
 fi
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -16,7 +15,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $MKE2FS -q -F -o Linux -b 4096 -O mmp -E mmp_update_interval=1 $TMPFILE 100 &amp;gt;&amp;gt; $
 status=$?
 if [ "$status" != 0 ] ; then
 echo "mke2fs -O mmp failed" &amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return $status
 fi
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -41,7 +40,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $FSCK $FSCK_OPT $TMPFILE &amp;gt;&amp;gt; $test_name.log 2&amp;gt;&amp;amp;1
 status=$?
 if [ "$status" = 0 ] ; then
 echo "e2fsck with MMP as EXT2_MMP_SEQ_FSCK ran!" &amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return 1
 fi
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -50,7 +49,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $TUNE2FS -f -E clear_mmp $TMPFILE &amp;gt;&amp;gt; $test_name.log 2&amp;gt;&amp;amp;1
 status=$?
 if [ "$status" != 0 ] ; then
 echo "tune2fs clearing EXT2_MMP_SEQ_FSCK failed" &amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return 1
 fi
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -59,9 +58,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $FSCK $FSCK_OPT $TMPFILE &amp;gt;&amp;gt; $test_name.log 2&amp;gt;&amp;amp;1
 status=$?
 if [ "$status" != 0 ] ; then
 echo "e2fsck after clearing EXT2_MMP_SEQ_FSCK failed"&amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return $status
 fi
 
-echo "ok"
+echo "$test_name: $test_description: ok"
 rm -f $TMPFILE
diff --git a/tests/f_mmp_garbage/script b/tests/f_mmp_garbage/script
index 3b2954b..02cc12a 100644
--- a/tests/f_mmp_garbage/script
+++ b/tests/f_mmp_garbage/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,13 +1,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 FSCK_OPT=-yf
 
-TMPFILE=test.img
-rm -f $test_name.failed $test_name.ok
+TMPFILE=$test_name.tmp
 &amp;gt; $TMPFILE
 
 stat -f $TMPFILE | grep -q "Type: tmpfs"
 if [ $? = 0 ] ; then
 rm -f $TMPFILE
-echo "skipped for tmpfs (no O_DIRECT support)"
+echo "$test_name: $test_description: skipped for tmpfs (no O_DIRECT)"
 return 0
 fi
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -16,7 +15,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $MKE2FS -q -F -o Linux -b 4096 -O mmp -E mmp_update_interval=1 $TMPFILE 100 &amp;gt;&amp;gt; $
 status=$?
 if [ "$status" != 0 ] ; then
 echo "mke2fs -O mmp failed" &amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return $status
 fi
 
diff --git a/tests/f_resize_inode/script b/tests/f_resize_inode/script
index ca934e9..840432d 100644
--- a/tests/f_resize_inode/script
+++ b/tests/f_resize_inode/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,10 +1,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 if test -x $DEBUGFS_EXE; then
 
-printf "e2fsck with resize_inode: "
+test_description="e2fsck with resize_inode"
 FSCK_OPT=-yf
 OUT=$test_name.log
 if [ -f $test_dir/expect.gz ]; then
-EXP=tmp_expect
+EXP=$test_name.tmp
 gunzip &amp;lt; $test_dir/expect.gz &amp;gt; $EXP1
 else
 EXP=$test_dir/expect
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -126,15 +126,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; sed -e '1d' $OUT.new | sed -e '/^JFS DEBUG:/d'  | tr -d \\015 &amp;gt;&amp;gt; $OUT
 rm -f $OUT.new
 
 
-rm -f $test_name.ok $test_name.failed
 cmp -s $OUT $EXP
 status=$?
 
 if [ "$status" = 0 ] ; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
 else
-echo "failed"
+echo "$test_name: $test_description: failed"
 diff $DIFF_OPTS $EXP $OUT &amp;gt; $test_name.failed
 rm -f tmp_expect
 fi
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -142,6 +141,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; fi
 unset IMAGE FSCK_OPT OUT EXP
 
 else #if test -x $DEBUGFS_EXE; then
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi 
diff --git a/tests/f_uninit_last_uninit/script b/tests/f_uninit_last_uninit/script
index 4fcab1b..2fe4f3a 100644
--- a/tests/f_uninit_last_uninit/script
+++ b/tests/f_uninit_last_uninit/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -22,6 +22,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; export E2FSCK_TIME
 unset E2FSCK_TIME
 
 else #if test -x $DEBUGFS_EXE; then
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi 
diff --git a/tests/f_unused_itable/name b/tests/f_unused_itable/name
index 39b68d6..e129137 100644
--- a/tests/f_unused_itable/name
+++ b/tests/f_unused_itable/name
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1 +1 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-Invalid bg_unused_itable shouldn't move files to lost+found
+Don't move files to lost+found for bg_unused_itable
diff --git a/tests/i_e2image/script b/tests/i_e2image/script
index 9c6ae2a..937c148 100644
--- a/tests/i_e2image/script
+++ b/tests/i_e2image/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,4 +1,4 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-printf "Create/convert raw and qcow2 disk images: "
+test_description="Create/convert raw/qcow2 images"
 if test -x $E2IMAGE_EXE; then
 
 ORIG_IMAGES="image1024.orig image2048.orig image4096.orig"
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -8,7 +8,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; QCOW2_IMG=_image.qcow2
 QCOW2_TO_RAW=_image.qcow2.raw
 OUT=$test_name.log
 MD5=$SRCDIR/$test_name/$test_name.md5
-MD5_TMP=$test_name.md5tmp
+MD5_TMP=$test_name.md5.tmp
 
 rm -f $test_name/_image.* $MD5_TMP $OUT &amp;gt;/dev/null 2&amp;gt;&amp;amp;1
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -43,18 +43,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; echo "" &amp;gt;&amp;gt; $OUT
 diff $MD5 $MD5_TMP &amp;gt;&amp;gt; $OUT 2&amp;gt;&amp;amp;1
 
 if [ $? -eq 0 ]; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
-rm -f $test_name.failed
 else
-rm -f $test_name.ok
 ln -f $test_name.log $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 fi
 
 rm -f _image.* $MD5_TMP &amp;gt;/dev/null 2&amp;gt;&amp;amp;1
 
 else #if test -x $E2IMAGE_EXE; then
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi
diff --git a/tests/m_mkfs_overhead/script b/tests/m_mkfs_overhead/script
index ff46199..63612a8 100644
--- a/tests/m_mkfs_overhead/script
+++ b/tests/m_mkfs_overhead/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,4 +1,4 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-echo -n "test bg overhead calculation: "
+test_description="test bg overhead calculation"
 
 OUT=$test_name.log
 EXP=$test_dir/expect
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -17,17 +17,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $MKE2FS -F -o Linux $MKE2FS_OPTS $TMPFILE $FS_SIZE 2&amp;gt;&amp;amp;1 | sed -e 1d | \
 
 rm -f $TMPFILE
 
-rm -f $test_name.ok $test_name.failed
 cmp -s $OUT $EXP
 status1=$?
 
 if [ "$status1" = 0 ] ; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
 else
-echo "failed"
+echo "$test_name: $test_description: failed"
 diff $DIFF_OPTS $EXP $OUT &amp;gt; $test_name.failed
 fi
-rm -f tmp_expect
 
 unset OUT EXP DESCRIPTION FS_SIZE MKE2FS_OPTS MKE2FS_SKIP_PROGRESS
diff --git a/tests/m_mmp/script b/tests/m_mmp/script
index a0c9ded..02b0b4b 100644
--- a/tests/m_mmp/script
+++ b/tests/m_mmp/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2,12 +2,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; DESCRIPTION="enable MMP during mke2fs"
 FS_SIZE=65536
 MKE2FS_DEVICE_SECTSIZE=2048
 export MKE2FS_DEVICE_SECTSIZE
-TMPFILE=test.img
+TMPFILE=$test_name.tmp
 &amp;gt; $TMPFILE
 stat -f $TMPFILE | grep -q "Type: tmpfs"
 if [ $? = 0 ]; then
 rm -f $TMPFILE
-echo "skipped for tmpfs (no O_DIRECT support)"
+echo "$test_name: $test_description: skipped for tmpfs (no O_DIRECT)"
 return 0
 fi
 MKE2FS_OPTS="-b 4096 -O mmp"
diff --git a/tests/r_inline_xattr/script b/tests/r_inline_xattr/script
index e4e0f53..021088e 100644
--- a/tests/r_inline_xattr/script
+++ b/tests/r_inline_xattr/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -34,22 +34,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; rm $TMPFILE $OUT.new
 # Do the verification
 #
 
-rm -f $test_name.ok $test_name.failed
 cmp -s $OUT $EXP
 status=$?
 
 if [ "$status" = 0 ] ; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
 else
-echo "failed"
+echo "$test_name: $test_description: failed"
 diff $DIFF_OPTS $EXP $OUT &amp;gt; $test_name.failed
 fi
 
 unset IMAGE FSCK_OPT OUT EXP
 
 else #if test -x $RESIZE2FS_EXE -a -x $DEBUGFS_EXE; then
-        rm -f $test_name.ok $test_name.failed
-        echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi
 
diff --git a/tests/r_move_itable/script b/tests/r_move_itable/script
index 56a861b..9ba847e 100644
--- a/tests/r_move_itable/script
+++ b/tests/r_move_itable/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -96,16 +96,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $TUNE2FS -c 20 -U clear $TMPFILE  &amp;gt;/dev/null 2&amp;gt;&amp;amp;1
 echo dumpe2fs test.img &amp;gt;&amp;gt; $OUT
 $DUMPE2FS $TMPFILE 2&amp;gt;&amp;amp;1 | sed -f $cmd_dir/filter_dumpe2fs &amp;gt;&amp;gt; $OUT
 
-rm -f $test_name.ok $test_name.failed $TMPFILE
+rm -f $TMPFILE
 
 cmp -s $OUT $EXP
 status=$?
 
 if [ "$status" = 0 ] ; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
 else
-echo "failed"
+echo "$test_name: $test_description: failed"
 diff $DIFF_OPTS $EXP $OUT &amp;gt; $test_name.failed
 rm -f tmp_expect
 fi
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -113,6 +113,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; fi
 unset IMAGE FSCK_OPT OUT EXP
 
 else #if test -x $RESIZE2FS_EXE -a -x $DEBUGFS_EXE; then
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi 
diff --git a/tests/r_resize_inode/script b/tests/r_resize_inode/script
index c8db127..da3c2ed 100644
--- a/tests/r_resize_inode/script
+++ b/tests/r_resize_inode/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3,7 +3,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; if test -x $RESIZE2FS_EXE; then
 FSCK_OPT=-yf
 OUT=$test_name.log
 if [ -f $test_dir/expect.gz ]; then
-EXP=tmp_expect
+EXP=$test_name.tmp
 gunzip &amp;lt; $test_dir/expect.gz &amp;gt; $EXP1
 else
 EXP=$test_dir/expect
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -83,22 +83,21 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $TUNE2FS -c 20 -U clear $TMPFILE  &amp;gt;/dev/null 2&amp;gt;&amp;amp;1
 echo dumpe2fs test.img &amp;gt;&amp;gt; $OUT
 $DUMPE2FS $TMPFILE 2&amp;gt;&amp;amp;1 | sed -f $cmd_dir/filter_dumpe2fs &amp;gt;&amp;gt; $OUT
 
-rm -f $test_name.ok $test_name.failed $TMPFILE
+rm -f $TMPFILE
 cmp -s $OUT $EXP
 status=$?
 
 if [ "$status" = 0 ] ; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
 else
-echo "failed"
+echo "$test_name: $test_description: failed"
 diff $DIFF_OPTS $EXP $OUT &amp;gt; $test_name.failed
-rm -f tmp_expect
+rm -f $test_name.tmp
 fi
 
 unset IMAGE FSCK_OPT OUT EXP
 
 else #if test -x $RESIZE2FS; then
-rm -f $test_name.ok $test_name.failed
-echo "skipped"
+echo "$test_name: $test_description: skipped"
 fi 
diff --git a/tests/run_e2fsck b/tests/run_e2fsck
index 573e010..6a498c3 100644
--- a/tests/run_e2fsck
+++ b/tests/run_e2fsck
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,5 +1,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 if [ "$DESCRIPTION"x != x ]; then
-printf "%s" "$DESCRIPTION: "
+test_description="$DESCRIPTION"
 fi
 if [ "$IMAGE"x = x ]; then
 IMAGE=$test_dir/image.gz
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -23,7 +23,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; fi
 
 if [ "$EXP1"x = x ]; then
 if [ -f $test_dir/expect.1.gz ]; then
-EXP1=tmp_expect
+EXP1=$test_name.1.tmp
 gunzip &amp;lt; $test_dir/expect.1.gz &amp;gt; $EXP1
 else
 EXP1=$test_dir/expect.1
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -32,7 +32,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; fi
 
 if [ "$EXP2"x = x ]; then
 if [ -f $test_dir/expect.2.gz ]; then
-EXP2=tmp_expect
+EXP2=$test_name.2.tmp
 gunzip &amp;lt; $test_dir/expect.2.gz &amp;gt; $EXP2
 else
 EXP2=$test_dir/expect.2
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -87,10 +87,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; if [ "$SKIP_VERIFY" != "true" ] ; then
 fi
 
 if [ "$status1" -eq 0 -a "$status2" -eq 0 -a "$status3" -eq 0 ] ; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
 else
-echo "failed"
+echo "$test_name: $test_description: failed"
 diff $DIFF_OPTS $EXP1 $OUT1 &amp;gt; $test_name.failed
 if [ "$ONE_PASS_ONLY" != "true" ]; then
 diff $DIFF_OPTS $EXP2 $OUT2 &amp;gt;&amp;gt; $test_name.failed
diff --git a/tests/t_ext_jnl_rm/script b/tests/t_ext_jnl_rm/script
index d7217b6..b2af80c 100644
--- a/tests/t_ext_jnl_rm/script
+++ b/tests/t_ext_jnl_rm/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,4 +1,4 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-printf "remove missing external journal device: "
+test_description="remove missing external journal device"
 OUT=$test_name.log
 
 dd if=/dev/zero of=$TMPFILE bs=1k count=512 &amp;gt; /dev/null 2&amp;gt;&amp;amp;1
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -17,12 +17,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; echo "tune2fs -f -O ^has_journal $TMPFILE" &amp;gt;&amp;gt; $OUT
 $TUNE2FS -f -O ^has_journal $TMPFILE &amp;gt;&amp;gt; $OUT 2&amp;gt;&amp;amp;1
 $DUMPE2FS -h $TMPFILE &amp;gt;&amp;gt; $OUT 2&amp;gt;&amp;amp;1
 if [ "$(grep 'Journal UUID:' $OUT)" ]; then
-rm -f $test_name.ok
 mv $test_name.log $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 else
-echo "ok"
+echo "$test_name: $test_description: ok"
 mv $test_name.log $test_name.ok
-rm -f $test_name.failed
 fi
 rm -f $TMPFILE
diff --git a/tests/t_mmp_1on/script b/tests/t_mmp_1on/script
index 43afe9d..8fc8158 100644
--- a/tests/t_mmp_1on/script
+++ b/tests/t_mmp_1on/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,13 +1,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 FSCK_OPT=-yf
 
-TMPFILE=test.img
-rm -f $test_name.failed $test_name.ok
+TMPFILE=$test_name.tmp
 &amp;gt; $TMPFILE
 
 stat -f $TMPFILE | grep -q "Type: tmpfs"
 if [ $? = 0 ] ; then
 rm -f $TMPFILE
-echo "skipped for tmpfs (no O_DIRECT support)"
+echo "$test_name: $test_description: skipped for tmpfs (no O_DIRECT)"
 return 0
 fi
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -15,7 +14,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $MKE2FS -q -F -o Linux -b 4096 $TMPFILE 100 &amp;gt; $test_name.log 2&amp;gt;&amp;amp;1
 status=$?
 if [ "$status" != 0 ] ; then
 echo "mke2fs failed" &amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return $status
 fi
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -23,18 +22,18 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $TUNE2FS -O mmp -E mmp_update_interval=1 $TMPFILE &amp;gt;&amp;gt; $test_name.log 2&amp;gt;&amp;amp;1
 status=$?
 if [ "$status" != 0 ] ; then
 echo "tune2fs -O mmp failed with $status" &amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return $status
 fi
 
 $FSCK $FSCK_OPT $TMPFILE &amp;gt;&amp;gt; $test_name.log 2&amp;gt;&amp;amp;1
 status=$?
 if [ "$status" = 0 ] ; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
 else
 echo "e2fsck with MMP enabled failed with $status" &amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return $status
 fi
 rm -f $TMPFILE
diff --git a/tests/t_mmp_2off/script b/tests/t_mmp_2off/script
index d9a5b3e..1dee14e 100644
--- a/tests/t_mmp_2off/script
+++ b/tests/t_mmp_2off/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,13 +1,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 FSCK_OPT=-yf
 
-TMPFILE=test.img
-rm -f $test_name.failed $test_name.ok
+TMPFILE=$test_name.tmp
 &amp;gt; $TMPFILE
 
 stat -f $TMPFILE | grep -q "Type: tmpfs"
 if [ $? = 0 ]; then
 rm -f $TMPFILE
-echo "skipped for tmpfs (no O_DIRECT support)"
+echo "$test_name: $test_description: skipped for tmpfs (no O_DIRECT)"
 return 0
 fi
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -15,7 +14,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $MKE2FS -q -F -o Linux -b 4096 -O mmp $TMPFILE 100 &amp;gt; $test_name.log 2&amp;gt;&amp;amp;1
 status=$?
 if [ "$status" != 0 ] ; then
 echo "mke2fs -O mmp failed" &amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return $status
 fi
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -23,18 +22,18 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $TUNE2FS -O ^mmp $TMPFILE &amp;gt; $test_name.log 2&amp;gt;&amp;amp;1
 status=$?
 if [ "$status" != 0 ] ; then
 echo "tune2fs -O ^mmp failed" &amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return $status
 fi
 
 $FSCK $FSCK_OPT $TMPFILE &amp;gt; $test_name.log 2&amp;gt;&amp;amp;1
 status=$?
 if [ "$status" = 0 ] ; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
 else
 echo "e2fsck after MMP disable failed" &amp;gt; $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 return $status
 fi
 rm -f $TMPFILE
diff --git a/tests/test_one.in b/tests/test_one.in
new file mode 100644
index 0000000..92b9e1f
--- /dev/null
+++ b/tests/test_one.in
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,60 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+#!/bin/sh
+# run a single regression test
+
+LC_ALL=C
+export LC_ALL
+
+case "$1" in 
+    --valgrind)
+    export USE_VALGRIND="valgrind -q --sim-hints=lax-ioctls"
+shift;
+;;
+    --valgrind-leakcheck)
+    export USE_VALGRIND="valgrind --sim-hints=lax-ioctls --leak-check=full --show-reachable=yes --log-file=/tmp/valgrind-%p.log"
+shift;
+;;
+esac
+
+case "$1" in 
+    *.failed|*.new|*.ok|*.log|*.tmp)exit 0 ;;
+esac
+
+test_dir=$1
+cmd_dir=$SRCDIR
+
+if test "$TEST_CONFIG"x = x; then
+TEST_CONFIG=$SRCDIR/test_config
+fi
+
+. $TEST_CONFIG
+
+TMPFILE=$(mktemp)
+
+test_name=`echo $test_dir | sed -e 's;.*/;;'`
+if [ -f $test_dir ] ; then
+continue;
+fi
+if [ ! -d $test_dir ] ; then
+echo "The test '$test_name' does not exist."
+continue;
+fi
+if [ -z "`ls $test_dir`" ]; then
+continue
+fi
+if [ -f $test_dir/name ]; then
+test_description=`cat $test_dir/name`
+else
+test_description=
+fi
+rm -f $test_name.ok $test_name.failed
+if [ -f $test_dir/script ]; then
+. $test_dir/script
+else
+test_base=`echo $test_name | sed -e 's/_.*//'`
+default_script=$SRCDIR/defaults/${test_base}_script
+if [ -f $default_script ]; then
+. $SRCDIR/defaults/${test_base}_script
+else
+echo "$test_name: Missing test script $default_script!"
+fi
+fi
diff --git a/tests/test_post b/tests/test_post
new file mode 100755
index 0000000..1251266
--- /dev/null
+++ b/tests/test_post
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,17 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+#!/bin/sh
+# report stats about test scripts that were run
+
+num_ok=`ls *.ok 2&amp;gt;/dev/null | wc -l`
+num_failed=`ls *.failed 2&amp;gt;/dev/null | wc -l`
+
+echo "$num_ok tests succeeded$num_failed tests failed"
+
+test "$num_failed" -eq 0 &amp;amp;&amp;amp; exit 0
+
+echo -n "Tests failed: "
+for fname in $(ls *.failed); do
+echo -n "${fname%%.failed} "
+done
+echo ""
+
+exit 1
diff --git a/tests/test_script.in b/tests/test_script.in
index b7ac86e..b493c3b 100644
--- a/tests/test_script.in
+++ b/tests/test_script.in
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,10 +1,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #!/bin/sh
+# Run all or specified test scripts
 #
-# Test script for e2fsck
-#
-
-LC_ALL=C
-export LC_ALL
 
 case "$1" in 
     --valgrind)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -18,13 +14,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; case "$1" in
 esac
 
 if test "$1"x = x ; then
-  TESTS=`ls -d $SRCDIR/[a-zA-Z]_* | $EGREP -v "\.failed|\.new"`
+  TESTS=`ls -d $SRCDIR/[a-zA-Z]_*`
 else
   TESTS=
   for i 
   do
     case $i in
-*.failed|*.new)continue ;;
 [a-zA-Z])TESTS="$TESTS $SRCDIR/${i}_*" ;;
 *)TESTS="$TESTS $SRCDIR/$i" ;;
     esac
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -33,57 +28,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; fi
 
 cmd_dir=$SRCDIR
 
-if test "$TEST_CONFIG"x = x; then
-TEST_CONFIG=$SRCDIR/test_config
-fi
-
-. $TEST_CONFIG
-
-TMPFILE=$(mktemp)
-
 for test_dir in $TESTS
 do
-test_name=`echo $test_dir | sed -e 's;.*/;;'`
-if [ -f $test_dir ] ; then
-    continue;
-fi
-if [ ! -d $test_dir ] ; then
-echo "The test '$test_name' does not exist."
-continue;
-fi
-if [ -z "`ls $test_dir`" ]; then
-continue
-fi
-if [ -f $test_dir/name ]; then
-test_description=`cat $test_dir/name`
-printf "%s: %s: " "$test_name" "$test_description"
-else
-printf "%s: " "$test_name"
-fi
-if [ -f $test_dir/script ]; then
-. $test_dir/script
-else
-test_base=`echo $test_name | sed -e 's/_.*//'`
-default_script=$SRCDIR/defaults/${test_base}_script
-if [ -f $default_script ]; then
-. $SRCDIR/defaults/${test_base}_script
-else
-echo "Missing test script!"
-fi
-fi
-done
-
-num_ok=`ls *.ok 2&amp;gt;/dev/null | wc -l`
-num_failed=`ls *.failed 2&amp;gt;/dev/null | wc -l`
-
-echo "$num_ok tests succeeded$num_failed tests failed"
-
-test "$num_failed" -eq 0 &amp;amp;&amp;amp; exit 0
-
-echo -n "Tests failed: "
-for fname in $(ls *.failed); do
-echo -n "${fname%%.failed} "
+$cmd_dir/test_one $test_dir
 done
-echo ""
 
-exit 1
+$cmd_dir/test_post
diff --git a/tests/u_mke2fs/script b/tests/u_mke2fs/script
index ef98899..fcf5eae 100644
--- a/tests/u_mke2fs/script
+++ b/tests/u_mke2fs/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,4 +1,4 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-printf "e2undo with mke2fs: "
+test_description="e2undo with mke2fs"
 if test -x $E2UNDO_EXE; then
 
 E2FSPROGS_UNDO_DIR=/tmp
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -24,13 +24,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; new_md5=`md5sum $TMPFILE | cut -d " " -f 1`
 echo md5sum after e2undo $new_md5 &amp;gt;&amp;gt; $OUT
 
 if [ $md5 = $new_md5 ]; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
-rm -f $test_name.failed
 else
-rm -f $test_name.ok
 ln -f $test_name.log $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 fi
 rm -f $TDB_FILE $TMPFILE
 fi
diff --git a/tests/u_tune2fs/script b/tests/u_tune2fs/script
index 222b95f..4cc1e0c 100644
--- a/tests/u_tune2fs/script
+++ b/tests/u_tune2fs/script
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,4 +1,4 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-printf "e2undo with tune2fs: "
+test_description="e2undo with tune2fs"
 if test -x $E2UNDO_EXE; then
 
 E2FSPROGS_UNDO_DIR=/tmp
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -24,13 +24,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; new_md5=`md5sum $TMPFILE | cut -d " " -f 1`
 echo md5sum after e2undo $new_md5 &amp;gt;&amp;gt; $OUT
 
 if [ $md5 = $new_md5 ]; then
-echo "ok"
+echo "$test_name: $test_description: ok"
 touch $test_name.ok
-rm -f $test_name.failed
 else
-rm -f $test_name.ok
 ln -f $test_name.log $test_name.failed
-echo "failed"
+echo "$test_name: $test_description: failed"
 fi
 rm -f $TDB_FILE $TMPFILE
 fi
&lt;/pre&gt;</description>
    <dc:creator>Andreas Dilger</dc:creator>
    <dc:date>2012-05-23T18:31:11</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32461">
    <title>Re: [PATCH] tests: use make rules to run tests in parallel</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.ext4/32461</link>
    <description>&lt;pre&gt;
As near as I can tell, it never made the list.  Or at least, it didn't
make my backup list archive on thunk.org.

Can you resend?

                      - Ted
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo&amp;lt; at &amp;gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

&lt;/pre&gt;</description>
    <dc:creator>Ted Ts'o</dc:creator>
    <dc:date>2012-05-23T15:00:34</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32460">
    <title>Re: [PATCH 01/10] string: introduce memweight</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.ext4/32460</link>
    <description>&lt;pre&gt;
Why should this return size_t instead of unsigned long?


bitmap_weight copes with a bitmask that isn't a multiple of BITS_PER_LONG
in size already.  So I think this can be done as:

unsigned long memweight(const void *s, size_t n)
{
const unsigned char *ptr = s;
unsigned long r = 0;

while (n &amp;gt; 0 &amp;amp;&amp;amp; (unsigned long)ptr % sizeof(long)) {
r += hweight8(*ptr);
n--;
ptr++;
}

BUG_ON(n &amp;gt;= INT_MAX / 8)

return r + bitmap_weight((unsigned long *)ptr, n * 8);
}

&lt;/pre&gt;</description>
    <dc:creator>Matthew Wilcox</dc:creator>
    <dc:date>2012-05-23T13:16:00</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32459">
    <title>Re: [PATCH] tests: use make rules to run tests in parallel</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.ext4/32459</link>
    <description>&lt;pre&gt;[PS: I typo'd Ted's email when sending the patch from git, I assume
the patch sent to the list will make it...]

On 2012-05-23, at 6:40 AM, Andreas Dilger wrote:

The main motivation for this patch is because I'm running a LOT of
regression tests as I'm rebasing our e2fsprogs tree to catch up to
the upstream master.  This sometimes means running "make check" for
many patches in my own series as it is rebased incrementally on
successive upstream targets, in addition to the larger number of
tests in our tree.

I just got tired of waiting for the MMP tests to time out...

Cheers, Andreas
--
Andreas Dilger                       Whamcloud, Inc.
Principal Lustre Engineer            http://www.whamcloud.com/




--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo&amp;lt; at &amp;gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

&lt;/pre&gt;</description>
    <dc:creator>Andreas Dilger</dc:creator>
    <dc:date>2012-05-23T12:48:49</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32457">
    <title>Re: [PATCH 01/10] string: introduce memweight</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.ext4/32457</link>
    <description>&lt;pre&gt;2012/5/23 Jan Kara &amp;lt;jack&amp;lt; at &amp;gt;suse.cz&amp;gt;:

Thanks for the review.


The count should be the size of unaligned area and it can be greater than
bytes. So

        count = min(bytes,
                    sizeof(long) - ((unsigned long)bitmap) % sizeof(long));


The bits argument of bitmap_weight() is int type. So this should be

        BUG_ON(longs &amp;gt;= INT_MAX / BITS_PER_LONG);


size_t memweight(const void *ptr, size_t bytes)
{
size_t w = 0;
size_t longs;
const unsigned char *bitmap = ptr;

for (; bytes &amp;gt; 0 &amp;amp;&amp;amp; ((unsigned long)bitmap) % sizeof(long);
bytes--, bitmap++)
w += hweight8(*bitmap);

longs = bytes / sizeof(long);
BUG_ON(longs &amp;gt;= INT_MAX / BITS_PER_LONG);
w += bitmap_weight((unsigned long *)bitmap, longs * BITS_PER_LONG);
bytes -= longs * sizeof(long);
bitmap += longs * sizeof(long);

for (; bytes &amp;gt; 0; bytes--, bitmap++)
w += hweight8(*bitmap);

return w;
}
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo&amp;lt; at &amp;gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

&lt;/pre&gt;</description>
    <dc:creator>Akinobu Mita</dc:creator>
    <dc:date>2012-05-23T12:12:18</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32456">
    <title>Re: [PATCH 01/10] string: introduce memweight</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.ext4/32456</link>
    <description>&lt;pre&gt;  Thanks for the patch. I have some comments below.

  Ugh, this is ugly and mostly unnecessary. Just use "const unsigned char
*bitmap".

  This can be:
count = ((unsigned long)bitmap) % sizeof(long);
while (count--) {
w += hweight(*bitmap);
bitmap++;
bytes--;
}
  I find it highly unlikely that someone would have such a large bitmap
(256 MB or more on 32-bit). Also the condition as you wrote it can just
overflow so it won't have the desired effect. Just do
BUG_ON(longs &amp;gt;= ULONG_MAX / BITS_PER_LONG);
and remove the loop completely. If someone comes with such a huge bitmap,
the code can be modified easily (after really closely inspecting whether
such a huge bitmap is really well justified).


Honza
&lt;/pre&gt;</description>
    <dc:creator>Jan Kara</dc:creator>
    <dc:date>2012-05-23T09:21:13</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32455">
    <title>Re: [PATCH RESEND] ext4: make sure O_(D)SYNC semantic in ext4_fallocate()</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.ext4/32455</link>
    <description>&lt;pre&gt;
Hi Ted,

Could you please review this patch?  Thank you.

Regards,
Zheng  
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo&amp;lt; at &amp;gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

&lt;/pre&gt;</description>
    <dc:creator>Zheng Liu</dc:creator>
    <dc:date>2012-05-23T01:19:41</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32454">
    <title>Re: [PATCH RESEND] ext4: change return value from int to ssize_t in ext4_file_write</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.ext4/32454</link>
    <description>&lt;pre&gt;
Ted, is this one queued anywhere?  Seems lost so far.

Thanks,
-Eric


--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo&amp;lt; at &amp;gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

&lt;/pre&gt;</description>
    <dc:creator>Eric Sandeen</dc:creator>
    <dc:date>2012-05-22T19:44:03</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32453">
    <title>[PATCH] libquota: add missing time.h include</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.ext4/32453</link>
    <description>&lt;pre&gt;This code uses time() but doesn't include time.h leading to:
quotaio.c:89:2: warning: implicit declaration of function 'time'

Signed-off-by: Mike Frysinger &amp;lt;vapier&amp;lt; at &amp;gt;gentoo.org&amp;gt;
---
 lib/quota/quotaio.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/lib/quota/quotaio.c b/lib/quota/quotaio.c
index 481d5f5..6e917f0 100644
--- a/lib/quota/quotaio.c
+++ b/lib/quota/quotaio.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -11,6 +11,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include &amp;lt;string.h&amp;gt;
 #include &amp;lt;unistd.h&amp;gt;
 #include &amp;lt;stdlib.h&amp;gt;
+#include &amp;lt;time.h&amp;gt;
 #include &amp;lt;sys/types.h&amp;gt;
 #include &amp;lt;sys/stat.h&amp;gt;
 #include &amp;lt;sys/file.h&amp;gt;
&lt;/pre&gt;</description>
    <dc:creator>Mike Frysinger</dc:creator>
    <dc:date>2012-05-22T19:41:50</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32452">
    <title>[PATCH] libquota: add a quotactl prototype</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.ext4/32452</link>
    <description>&lt;pre&gt;The commit 0df8a27bbaf51b55c0e8c3a533ef4c2ff9d79c9f removed the system
quota.h include, but in doing so, added the problem:
mkquota.c:55:2: warning: implicit declaration of function 'quotactl'

Since we're maintaining a copy of quota.h, add a proper func prototype.

Signed-off-by: Mike Frysinger &amp;lt;vapier&amp;lt; at &amp;gt;gentoo.org&amp;gt;
---
 lib/quota/quota.h |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/lib/quota/quota.h b/lib/quota/quota.h
index a943ec6..3eaec1d 100644
--- a/lib/quota/quota.h
+++ b/lib/quota/quota.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -152,4 +152,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; enum {
 };
 #define QUOTA_NL_A_MAX (__QUOTA_NL_A_MAX - 1)
 
+#ifdef HAVE_QUOTACTL
+extern int quotactl(int __cmd, const char *__special, int __id,
+    caddr_t __addr);
+#endif
+
 #endif /* _QUOTA_ */
&lt;/pre&gt;</description>
    <dc:creator>Mike Frysinger</dc:creator>
    <dc:date>2012-05-22T19:41:29</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32451">
    <title>Re: [PATCH 1/1] ext4, dio: Remove overflow for size &gt;2G in aio-dio code.</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.ext4/32451</link>
    <description>&lt;pre&gt;
Sorry, I was talking about Manish's original patch, not Linus's followup.

-Eric

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo&amp;lt; at &amp;gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

&lt;/pre&gt;</description>
    <dc:creator>Eric Sandeen</dc:creator>
    <dc:date>2012-05-22T19:02:17</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32450">
    <title>Re: [PATCH] e2fsck: fix precedence bug in built-in quota support</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.ext4/32450</link>
    <description>&lt;pre&gt;Oops. Thanks for the patch.


On Mon, May 21, 2012 at 7:09 PM, Theodore Ts'o &amp;lt;tytso&amp;lt; at &amp;gt;mit.edu&amp;gt; wrote:
Reviewed-by: Aditya Kali &amp;lt;adityakali&amp;lt; at &amp;gt;google.com&amp;gt;



&lt;/pre&gt;</description>
    <dc:creator>Aditya Kali</dc:creator>
    <dc:date>2012-05-22T17:20:35</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.ext4/32449">
    <title>Re: [PATCH] e2fsck: fix 64-bit journal support</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.ext4/32449</link>
    <description>&lt;pre&gt;
Hmm, we did have a bug report that would be explained by this, but it wasn't easily reproduced (dependent on metadata blocks beyond 16TB in
hindsight) and only on a test filesystem, so I hadn't had a chance to
dig into it yet.

We did do a 128TB full-filesystem data write + verification + e2fsck,
but I guess that didn't validate journal recovery.  Most filesystems
only have a fraction of data beyond 16TB, and the allocators prefer
to locate inodes/blocks at the beginning of the filesystem, so it
hasn't shown up in real usage very much.

Good catch.


Makes sense.  Better to be consistent with these things, so that the
compiler and users (grep, etc) can find type mismatches and such.



Cheers, Andreas





--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo&amp;lt; at &amp;gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

&lt;/pre&gt;</description>
    <dc:creator>Andreas Dilger</dc:creator>
    <dc:date>2012-05-22T17:09:18</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.file-systems.ext4">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.file-systems.ext4</link>
  </textinput>
</rdf:RDF>

