include ext4

Theodore Tso tytso at mit.edu
Mon Oct 13 12:28:05 UTC 2008


On Mon, Oct 13, 2008 at 01:07:37PM +0100, Scott James Remnant wrote:
>
> Could you send me a diff between the two releases, just for a quick
> review?
> 

Attached.

						- Ted

-------------- next part --------------
commit df547ae88663ba4259cd61adc9f166d41e0b86f5
Author: Theodore Ts'o <tytso at mit.edu>
Date:   Sat Oct 11 18:40:13 2008 -0400

    Update release notes, changelog, etc., for e2fsprogs 1.41.3 release
    
    Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>

diff --git a/README b/README
index 0da6931..2984112 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-	This is the new version (1.41.2) of the second extended file
+	This is the new version (1.41.3) of the second extended file
 system management programs.
 
 	From time to time, I release new versions of e2fsprogs, to fix
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 03b3905..6f9992d 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -1,3 +1,45 @@
+E2fsprogs 1.41.3 (October 12, 2008)
+===================================
+
+E2fsck has been fixed so it prints the correct inode number for
+uinit_bg related problems.
+
+E2fsck will now offer to clear the test_fs flag if the ext4 filesystem
+is available on linux.  This can be disabled via a configuration
+option in /etc/e2fsck.conf.
+
+Fix a file descriptor leak in libblkid when checking to see if an ext4
+or ext4dev module exists.
+
+Fix a bug in e2fsck where in preen mode, if there are disk I/O errors
+while trying to close a filesystem can lead to infinite loops.
+(Addresses Red Hat Bugzilla #465679)
+    
+Fix a bug in resize2fs where passing in a bogus new size of 0 blocks
+will cause resize2fs to drop into an infinite loop.  (Addresses Red
+Hat Bugzilla: #465984)
+    
+Add a check in the Unix I/O functions in libext2fs so that when a
+device is opened read/write, return an error if the device is
+read-only using the BLKROGET ioctl.
+
+Fix debugfs's ncheck command so that it prints all of the names of
+hardlinks in the same directory.
+
+Fix a bug in libblkid so it correctly detects whether the ext4 and
+ext4dev filesystems are available, so that the ext4dev->ext4
+fallback code works correctly.
+
+Programmer's Notes
+------------------
+
+Fix a parallel build problem by making sure util/subst is built before
+trying to build the lib/et directory.  (Addresses Sourceforge Bug:
+#2143281)
+
+Updated "make depend" information for crc16.o
+    
+
 E2fsprogs 1.41.2 (October 2, 2008)
 ==================================
 
diff --git a/debian/changelog b/debian/changelog
index c079df5..170bc80 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,25 @@
+e2fsprogs (1.41.3-1) unstable; urgency=low
+
+  * New upstream release
+  * Fix e2fsck so it prints the correct inode number for uinit_bg
+    related problems.
+  * E2fsck will offer to clear the test_fs flag if the ext4 filesystem
+    is available.
+  * Fix a file descriptor leak in libblkid
+  * Avoid a poteintial infinite loop in e2fsck when there are disk I/O
+    errors while trying to close a filesystem.
+  * Fix a potential infinite loop in resize2fs when a bogus new size of
+    0 blocks is specified on the command line.
+  * Add an early check to see if a device is read-only to avoid lots of
+    confusing error messages.
+  * Fix debugfs's ncheck command so it prints all of the names of
+    hardlinks in the same directories.
+  * Fix a bug in libblkid so it correctly detects whether the ext4 and
+    ext4dev filesystems are available, so that the ext4dev->ext4
+    fallback code works correctly.
+
+ -- Theodore Y. Ts'o <tytso at mit.edu>  Sun, 12 Oct 2008 22:45:34 -0400
+
 e2fsprogs (1.41.2-1) unstable; urgency=low
 
   * New upstream release
diff --git a/doc/libext2fs.texinfo b/doc/libext2fs.texinfo
index 4196481..27adea4 100644
--- a/doc/libext2fs.texinfo
+++ b/doc/libext2fs.texinfo
@@ -1,7 +1,7 @@
 \input texinfo    @c -*-texinfo-*-
 @c %**start of header
 @setfilename libext2fs.info
- at settitle The EXT2FS Library (version 1.41.2)
+ at settitle The EXT2FS Library (version 1.41.3)
 @synindex tp fn
 @comment %**end of header
 
@@ -59,7 +59,7 @@ by the author.
 
 @title The EXT2FS Library
 @subtitle The EXT2FS Library
- at subtitle Version 1.41.2
+ at subtitle Version 1.41.3
 @subtitle October 2008
 
 @author by Theodore Ts'o
@@ -101,7 +101,7 @@ by the Foundation.
 
 @top The EXT2FS Library
 
-This manual documents the EXT2FS Library, version 1.41.2.
+This manual documents the EXT2FS Library, version 1.41.3
 
 @end ifinfo
 
diff --git a/e2fsprogs.lsm b/e2fsprogs.lsm
index c75b038..3f65e69 100644
--- a/e2fsprogs.lsm
+++ b/e2fsprogs.lsm
@@ -1,16 +1,16 @@
 Begin3
 Title:          EXT2 Filesystem utilities
-Version:        1.41.2
-Entered-date:   2Oct2008
+Version:        1.41.3
+Entered-date:   12Oct2008
 Description:    The filesystem utilities for the EXT2 filesystem, including 
 		e2fsck, mke2fs, dumpe2fs, fsck, and others.
 Keywords:       utilities, fsck, filesystem, Ext2fs
 Author:         tytso at mit.edu (Theodore Tso)
 Maintained-by:  tytso at mit.edu (Theodore Tso)
 Primary-site:   download.sourceforge.net /pub/sourceforge/e2fsprogs
-		4264kB e2fsprogs-1.41.2.tar.gz
-		480kB e2fsprogs-libs-1.41.2.tar.gz
-                1kB   e2fsprogs-1.41.2.lsm
+		4264kB e2fsprogs-1.41.3.tar.gz
+		480kB e2fsprogs-libs-1.41.3.tar.gz
+                1kB   e2fsprogs-1.41.3.lsm
 Alternate-site: 
 Platforms:	linux 1.2.x/1.3.x/2.0.x/2.1.x/2.2.x/2.3.x/2.4.x/2.5.x/2.6.x
 Copying-policy: GPL/LGPL
diff --git a/version.h b/version.h
index 236a5d0..e2777fe 100644
--- a/version.h
+++ b/version.h
@@ -7,5 +7,5 @@
  * redistributed under the GNU Public License.
  */
 
-#define E2FSPROGS_VERSION "1.41.2"
-#define E2FSPROGS_DATE "02-Oct-2008"
+#define E2FSPROGS_VERSION "1.41.3"
+#define E2FSPROGS_DATE "12-Oct-2008"

commit 052a791185502fea60910773ad04c488df0a746d
Author: Theodore Ts'o <tytso at mit.edu>
Date:   Sun Oct 12 23:17:54 2008 -0400

    Update e2fsprogs translation template file
    
    Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>

diff --git a/po/e2fsprogs.pot b/po/e2fsprogs.pot
index 4a5b6f0..6252475 100644
--- a/po/e2fsprogs.pot
+++ b/po/e2fsprogs.pot
@@ -64,9 +64,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: e2fsprogs 1.41.1\n"
+"Project-Id-Version: e2fsprogs 1.41.3\n"
 "Report-Msgid-Bugs-To: tytso at alum.mit.edu\n"
-"POT-Creation-Date: 2008-08-29 23:13-0400\n"
+"POT-Creation-Date: 2008-10-12 23:15-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -88,10 +88,10 @@ msgid "while reading the bad blocks inode"
 msgstr ""
 
 #: e2fsck/badblocks.c:71 e2fsck/iscan.c:112 e2fsck/scantest.c:109
-#: e2fsck/unix.c:1020 e2fsck/unix.c:1103 misc/badblocks.c:1102
-#: misc/badblocks.c:1110 misc/badblocks.c:1124 misc/badblocks.c:1136
-#: misc/dumpe2fs.c:505 misc/e2image.c:573 misc/e2image.c:669
-#: misc/e2image.c:685 misc/mke2fs.c:180 misc/tune2fs.c:1449 resize/main.c:304
+#: e2fsck/unix.c:1023 e2fsck/unix.c:1106 misc/badblocks.c:1148
+#: misc/badblocks.c:1156 misc/badblocks.c:1170 misc/badblocks.c:1182
+#: misc/dumpe2fs.c:505 misc/e2image.c:576 misc/e2image.c:672
+#: misc/e2image.c:688 misc/mke2fs.c:180 misc/tune2fs.c:1454 resize/main.c:309
 #, c-format
 msgid "while trying to open %s"
 msgstr ""
@@ -114,30 +114,30 @@ msgstr ""
 msgid "Warning: illegal block %u found in bad block inode.  Cleared.\n"
 msgstr ""
 
-#: e2fsck/ehandler.c:53
+#: e2fsck/ehandler.c:54
 #, c-format
 msgid "Error reading block %lu (%s) while %s.  "
 msgstr ""
 
-#: e2fsck/ehandler.c:56
+#: e2fsck/ehandler.c:57
 #, c-format
 msgid "Error reading block %lu (%s).  "
 msgstr ""
 
-#: e2fsck/ehandler.c:59 e2fsck/ehandler.c:106
+#: e2fsck/ehandler.c:60 e2fsck/ehandler.c:109
 msgid "Ignore error"
 msgstr ""
 
-#: e2fsck/ehandler.c:60
+#: e2fsck/ehandler.c:61
 msgid "Force rewrite"
 msgstr ""
 
-#: e2fsck/ehandler.c:100
+#: e2fsck/ehandler.c:103
 #, c-format
 msgid "Error writing block %lu (%s) while %s.  "
 msgstr ""
 
-#: e2fsck/ehandler.c:103
+#: e2fsck/ehandler.c:106
 #, c-format
 msgid "Error writing block %lu (%s).  "
 msgstr ""
@@ -190,16 +190,16 @@ msgstr ""
 msgid "while opening %s for flushing"
 msgstr ""
 
-#: e2fsck/iscan.c:88 e2fsck/unix.c:810 resize/main.c:282
+#: e2fsck/iscan.c:88 e2fsck/unix.c:810 resize/main.c:285
 #, c-format
 msgid "while trying to flush %s"
 msgstr ""
 
-#: e2fsck/iscan.c:121 e2fsck/scantest.c:116 misc/e2image.c:480
+#: e2fsck/iscan.c:121 e2fsck/scantest.c:116 misc/e2image.c:482
 msgid "while opening inode scan"
 msgstr ""
 
-#: e2fsck/iscan.c:129 misc/e2image.c:498
+#: e2fsck/iscan.c:129 misc/e2image.c:500
 msgid "while getting next inode"
 msgstr ""
 
@@ -397,42 +397,42 @@ msgstr ""
 msgid "<Reserved inode 10>"
 msgstr ""
 
-#: e2fsck/message.c:321
+#: e2fsck/message.c:323
 #, c-format
 msgid "regular file"
 msgstr ""
 
-#: e2fsck/message.c:323
+#: e2fsck/message.c:325
 #, c-format
 msgid "directory"
 msgstr ""
 
-#: e2fsck/message.c:325
+#: e2fsck/message.c:327
 #, c-format
 msgid "character device"
 msgstr ""
 
-#: e2fsck/message.c:327
+#: e2fsck/message.c:329
 #, c-format
 msgid "block device"
 msgstr ""
 
-#: e2fsck/message.c:329
+#: e2fsck/message.c:331
 #, c-format
 msgid "named pipe"
 msgstr ""
 
-#: e2fsck/message.c:331
+#: e2fsck/message.c:333
 #, c-format
 msgid "symbolic link"
 msgstr ""
 
-#: e2fsck/message.c:333
+#: e2fsck/message.c:335
 #, c-format
 msgid "socket"
 msgstr ""
 
-#: e2fsck/message.c:335
+#: e2fsck/message.c:337
 #, c-format
 msgid "unknown file type with mode 0%o"
 msgstr ""
@@ -497,40 +497,40 @@ msgstr ""
 msgid "reading indirect blocks of inode %u"
 msgstr ""
 
-#: e2fsck/pass1.c:1223
+#: e2fsck/pass1.c:1225
 msgid "bad inode map"
 msgstr ""
 
-#: e2fsck/pass1.c:1245
+#: e2fsck/pass1.c:1247
 msgid "inode in bad block map"
 msgstr ""
 
-#: e2fsck/pass1.c:1265
+#: e2fsck/pass1.c:1267
 msgid "imagic inode map"
 msgstr ""
 
-#: e2fsck/pass1.c:1292
+#: e2fsck/pass1.c:1294
 msgid "multiply claimed block map"
 msgstr ""
 
-#: e2fsck/pass1.c:1391
+#: e2fsck/pass1.c:1393
 msgid "ext attr block map"
 msgstr ""
 
-#: e2fsck/pass1.c:2107
+#: e2fsck/pass1.c:2109
 #, c-format
 msgid "%6lu: expecting %6lu got phys %6lu (blkcnt %lld)\n"
 msgstr ""
 
-#: e2fsck/pass1.c:2420
+#: e2fsck/pass1.c:2422
 msgid "block bitmap"
 msgstr ""
 
-#: e2fsck/pass1.c:2424
+#: e2fsck/pass1.c:2426
 msgid "inode bitmap"
 msgstr ""
 
-#: e2fsck/pass1.c:2428
+#: e2fsck/pass1.c:2430
 msgid "inode table"
 msgstr ""
 
@@ -933,7 +933,7 @@ msgstr ""
 msgid "@I @i %i in @o @i list.\n"
 msgstr ""
 
-#: e2fsck/problem.c:280 e2fsck/problem.c:643
+#: e2fsck/problem.c:280 e2fsck/problem.c:647
 #. @-expanded: filesystem has feature flag(s) set, but is a revision 0 filesystem.  
 msgid "@f has feature flag(s) set, but is a revision 0 @f.  "
 msgstr ""
@@ -1064,122 +1064,126 @@ msgstr ""
 msgid "Journal transaction %i was corrupt, replay was aborted.\n"
 msgstr ""
 
-#: e2fsck/problem.c:388
+#: e2fsck/problem.c:385
+msgid "The test_fs flag is set (and ext4 is available).  "
+msgstr ""
+
+#: e2fsck/problem.c:392
 #. @-expanded: Pass 1: Checking inodes, blocks, and sizes\n
 msgid "Pass 1: Checking @is, @bs, and sizes\n"
 msgstr ""
 
-#: e2fsck/problem.c:392
+#: e2fsck/problem.c:396
 #. @-expanded: root inode is not a directory.  
 msgid "@r is not a @d.  "
 msgstr ""
 
-#: e2fsck/problem.c:397
+#: e2fsck/problem.c:401
 #. @-expanded: root inode has dtime set (probably due to old mke2fs).  
 msgid "@r has dtime set (probably due to old mke2fs).  "
 msgstr ""
 
-#: e2fsck/problem.c:402
+#: e2fsck/problem.c:406
 #. @-expanded: Reserved inode %i (%Q) has invalid mode.  
 msgid "Reserved @i %i (%Q) has @n mode.  "
 msgstr ""
 
-#: e2fsck/problem.c:407
+#: e2fsck/problem.c:411
 #, c-format
 #. @-expanded: deleted inode %i has zero dtime.  
 msgid "@D @i %i has zero dtime.  "
 msgstr ""
 
-#: e2fsck/problem.c:412
+#: e2fsck/problem.c:416
 #, c-format
 #. @-expanded: inode %i is in use, but has dtime set.  
 msgid "@i %i is in use, but has dtime set.  "
 msgstr ""
 
-#: e2fsck/problem.c:417
+#: e2fsck/problem.c:421
 #, c-format
 #. @-expanded: inode %i is a zero-length directory.  
 msgid "@i %i is a @z @d.  "
 msgstr ""
 
-#: e2fsck/problem.c:422
+#: e2fsck/problem.c:426
 #. @-expanded: group %g's block bitmap at %b conflicts with some other fs block.\n
 msgid "@g %g's @b @B at %b @C.\n"
 msgstr ""
 
-#: e2fsck/problem.c:427
+#: e2fsck/problem.c:431
 #. @-expanded: group %g's inode bitmap at %b conflicts with some other fs block.\n
 msgid "@g %g's @i @B at %b @C.\n"
 msgstr ""
 
-#: e2fsck/problem.c:432
+#: e2fsck/problem.c:436
 #. @-expanded: group %g's inode table at %b conflicts with some other fs block.\n
 msgid "@g %g's @i table at %b @C.\n"
 msgstr ""
 
-#: e2fsck/problem.c:437
+#: e2fsck/problem.c:441
 #. @-expanded: group %g's block bitmap (%b) is bad.  
 msgid "@g %g's @b @B (%b) is bad.  "
 msgstr ""
 
-#: e2fsck/problem.c:442
+#: e2fsck/problem.c:446
 #. @-expanded: group %g's inode bitmap (%b) is bad.  
 msgid "@g %g's @i @B (%b) is bad.  "
 msgstr ""
 
-#: e2fsck/problem.c:447
+#: e2fsck/problem.c:451
 #. @-expanded: inode %i, i_size is %Is, should be %N.  
 msgid "@i %i, i_size is %Is, @s %N.  "
 msgstr ""
 
-#: e2fsck/problem.c:452
+#: e2fsck/problem.c:456
 #. @-expanded: inode %i, i_blocks is %Ib, should be %N.  
 msgid "@i %i, i_ at bs is %Ib, @s %N.  "
 msgstr ""
 
-#: e2fsck/problem.c:457
+#: e2fsck/problem.c:461
 #. @-expanded: illegal block #%B (%b) in inode %i.  
 msgid "@I @b #%B (%b) in @i %i.  "
 msgstr ""
 
-#: e2fsck/problem.c:462
+#: e2fsck/problem.c:466
 #. @-expanded: block #%B (%b) overlaps filesystem metadata in inode %i.  
 msgid "@b #%B (%b) overlaps @f metadata in @i %i.  "
 msgstr ""
 
-#: e2fsck/problem.c:467
+#: e2fsck/problem.c:471
 #, c-format
 #. @-expanded: inode %i has illegal block(s).  
 msgid "@i %i has illegal @b(s).  "
 msgstr ""
 
-#: e2fsck/problem.c:472
+#: e2fsck/problem.c:476
 #, c-format
 #. @-expanded: Too many illegal blocks in inode %i.\n
 msgid "Too many illegal @bs in @i %i.\n"
 msgstr ""
 
-#: e2fsck/problem.c:477
+#: e2fsck/problem.c:481
 #. @-expanded: illegal block #%B (%b) in bad block inode.  
 msgid "@I @b #%B (%b) in bad @b @i.  "
 msgstr ""
 
-#: e2fsck/problem.c:482
+#: e2fsck/problem.c:486
 #. @-expanded: Bad block inode has illegal block(s).  
 msgid "Bad @b @i has illegal @b(s).  "
 msgstr ""
 
-#: e2fsck/problem.c:487
+#: e2fsck/problem.c:491
 #. @-expanded: Duplicate or bad block in use!\n
 msgid "Duplicate or bad @b in use!\n"
 msgstr ""
 
-#: e2fsck/problem.c:492
+#: e2fsck/problem.c:496
 #. @-expanded: Bad block %b used as bad block inode indirect block.  
 msgid "Bad @b %b used as bad @b @i indirect @b.  "
 msgstr ""
 
-#: e2fsck/problem.c:497
+#: e2fsck/problem.c:501
 #. @-expanded: \n
 #. @-expanded: The bad block inode has probably been corrupted.  You probably\n
 #. @-expanded: should stop now and run e2fsck -c to scan for bad blocks\n
@@ -1191,7 +1195,7 @@ msgid ""
 "in the @f.\n"
 msgstr ""
 
-#: e2fsck/problem.c:504
+#: e2fsck/problem.c:508
 #. @-expanded: \n
 #. @-expanded: If the block is really bad, the filesystem can not be fixed.\n
 msgid ""
@@ -1199,7 +1203,7 @@ msgid ""
 "If the @b is really bad, the @f can not be fixed.\n"
 msgstr ""
 
-#: e2fsck/problem.c:509
+#: e2fsck/problem.c:513
 #. @-expanded: You can remove this block from the bad block list and hope\n
 #. @-expanded: that the block is really OK.  But there are no guarantees.\n
 #. @-expanded: \n
@@ -1209,120 +1213,120 @@ msgid ""
 "\n"
 msgstr ""
 
-#: e2fsck/problem.c:515
+#: e2fsck/problem.c:519
 #. @-expanded: The primary superblock (%b) is on the bad block list.\n
 msgid "The primary @S (%b) is on the bad @b list.\n"
 msgstr ""
 
-#: e2fsck/problem.c:520
+#: e2fsck/problem.c:524
 #. @-expanded: Block %b in the primary group descriptors is on the bad block list\n
 msgid "Block %b in the primary @g descriptors is on the bad @b list\n"
 msgstr ""
 
-#: e2fsck/problem.c:526
+#: e2fsck/problem.c:530
 #. @-expanded: Warning: Group %g's superblock (%b) is bad.\n
 msgid "Warning: Group %g's @S (%b) is bad.\n"
 msgstr ""
 
-#: e2fsck/problem.c:531
+#: e2fsck/problem.c:535
 #. @-expanded: Warning: Group %g's copy of the group descriptors has a bad block (%b).\n
 msgid "Warning: Group %g's copy of the @g descriptors has a bad @b (%b).\n"
 msgstr ""
 
-#: e2fsck/problem.c:537
+#: e2fsck/problem.c:541
 #. @-expanded: Programming error?  block #%b claimed for no reason in process_bad_block.\n
 msgid "Programming error?  @b #%b claimed for no reason in process_bad_ at b.\n"
 msgstr ""
 
-#: e2fsck/problem.c:543
+#: e2fsck/problem.c:547
 #. @-expanded: error allocating %N contiguous block(s) in block group %g for %s: %m\n
 msgid "@A %N contiguous @b(s) in @b @g %g for %s: %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:548
+#: e2fsck/problem.c:552
 #, c-format
 #. @-expanded: error allocating block buffer for relocating %s\n
 msgid "@A @b buffer for relocating %s\n"
 msgstr ""
 
-#: e2fsck/problem.c:553
+#: e2fsck/problem.c:557
 #. @-expanded: Relocating group %g's %s from %b to %c...\n
 msgid "Relocating @g %g's %s from %b to %c...\n"
 msgstr ""
 
-#: e2fsck/problem.c:558
+#: e2fsck/problem.c:562
 #, c-format
 #. @-expanded: Relocating group %g's %s to %c...\n
 msgid "Relocating @g %g's %s to %c...\n"
 msgstr ""
 
-#: e2fsck/problem.c:563
+#: e2fsck/problem.c:567
 #. @-expanded: Warning: could not read block %b of %s: %m\n
 msgid "Warning: could not read @b %b of %s: %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:568
+#: e2fsck/problem.c:572
 #. @-expanded: Warning: could not write block %b for %s: %m\n
 msgid "Warning: could not write @b %b for %s: %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:573 e2fsck/problem.c:1369
+#: e2fsck/problem.c:577 e2fsck/problem.c:1373
 #. @-expanded: error allocating inode bitmap (%N): %m\n
 msgid "@A @i @B (%N): %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:578
+#: e2fsck/problem.c:582
 #. @-expanded: error allocating block bitmap (%N): %m\n
 msgid "@A @b @B (%N): %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:583
+#: e2fsck/problem.c:587
 #, c-format
 #. @-expanded: error allocating icount link information: %m\n
 msgid "@A icount link information: %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:588
+#: e2fsck/problem.c:592
 #, c-format
 #. @-expanded: error allocating directory block array: %m\n
 msgid "@A @d @b array: %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:593
+#: e2fsck/problem.c:597
 #, c-format
 #. @-expanded: Error while scanning inodes (%i): %m\n
 msgid "Error while scanning @is (%i): %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:598
+#: e2fsck/problem.c:602
 #, c-format
 #. @-expanded: Error while iterating over blocks in inode %i: %m\n
 msgid "Error while iterating over @bs in @i %i: %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:603
+#: e2fsck/problem.c:607
 #. @-expanded: Error storing inode count information (inode=%i, count=%N): %m\n
 msgid "Error storing @i count information (@i=%i, count=%N): %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:608
+#: e2fsck/problem.c:612
 #. @-expanded: Error storing directory block information (inode=%i, block=%b, num=%N): %m\n
 msgid "Error storing @d @b information (@i=%i, @b=%b, num=%N): %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:614
+#: e2fsck/problem.c:618
 #, c-format
 #. @-expanded: Error reading inode %i: %m\n
 msgid "Error reading @i %i: %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:622
+#: e2fsck/problem.c:626
 #, c-format
 #. @-expanded: inode %i has imagic flag set.  
 msgid "@i %i has imagic flag set.  "
 msgstr ""
 
-#: e2fsck/problem.c:627
+#: e2fsck/problem.c:631
 #, c-format
 #. @-expanded: Special (device/socket/fifo/symlink) file (inode %i) has immutable\n
 #. @-expanded: or append-only flag set.  
@@ -1331,150 +1335,150 @@ msgid ""
 "or append-only flag set.  "
 msgstr ""
 
-#: e2fsck/problem.c:633
+#: e2fsck/problem.c:637
 #, c-format
 #. @-expanded: inode %i has compression flag set on filesystem without compression support.  
 msgid "@i %i has @cion flag set on @f without @cion support.  "
 msgstr ""
 
-#: e2fsck/problem.c:638
+#: e2fsck/problem.c:642
 #, c-format
 #. @-expanded: Special (device/socket/fifo) inode %i has non-zero size.  
 msgid "Special (@v/socket/fifo) @i %i has non-zero size.  "
 msgstr ""
 
-#: e2fsck/problem.c:648
+#: e2fsck/problem.c:652
 #. @-expanded: journal inode is not in use, but contains data.  
 msgid "@j @i is not in use, but contains data.  "
 msgstr ""
 
-#: e2fsck/problem.c:653
+#: e2fsck/problem.c:657
 #. @-expanded: journal is not regular file.  
 msgid "@j is not regular file.  "
 msgstr ""
 
-#: e2fsck/problem.c:658
+#: e2fsck/problem.c:662
 #, c-format
 #. @-expanded: inode %i was part of the orphaned inode list.  
 msgid "@i %i was part of the @o @i list.  "
 msgstr ""
 
-#: e2fsck/problem.c:664
+#: e2fsck/problem.c:668
 #. @-expanded: inodes that were part of a corrupted orphan linked list found.  
 msgid "@is that were part of a corrupted orphan linked list found.  "
 msgstr ""
 
-#: e2fsck/problem.c:669
+#: e2fsck/problem.c:673
 #. @-expanded: error allocating refcount structure (%N): %m\n
 msgid "@A refcount structure (%N): %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:674
+#: e2fsck/problem.c:678
 #. @-expanded: Error reading extended attribute block %b for inode %i.  
 msgid "Error reading @a @b %b for @i %i.  "
 msgstr ""
 
-#: e2fsck/problem.c:679
+#: e2fsck/problem.c:683
 #. @-expanded: inode %i has a bad extended attribute block %b.  
 msgid "@i %i has a bad @a @b %b.  "
 msgstr ""
 
-#: e2fsck/problem.c:684
+#: e2fsck/problem.c:688
 #. @-expanded: Error reading extended attribute block %b (%m).  
 msgid "Error reading @a @b %b (%m).  "
 msgstr ""
 
-#: e2fsck/problem.c:689
+#: e2fsck/problem.c:693
 #. @-expanded: extended attribute block %b has reference count %B, should be %N.  
 msgid "@a @b %b has reference count %B, @s %N.  "
 msgstr ""
 
-#: e2fsck/problem.c:694
+#: e2fsck/problem.c:698
 #. @-expanded: Error writing extended attribute block %b (%m).  
 msgid "Error writing @a @b %b (%m).  "
 msgstr ""
 
-#: e2fsck/problem.c:699
+#: e2fsck/problem.c:703
 #. @-expanded: extended attribute block %b has h_blocks > 1.  
 msgid "@a @b %b has h_ at bs > 1.  "
 msgstr ""
 
-#: e2fsck/problem.c:704
+#: e2fsck/problem.c:708
 #. @-expanded: error allocating extended attribute block %b.  
 msgid "@A @a @b %b.  "
 msgstr ""
 
-#: e2fsck/problem.c:709
+#: e2fsck/problem.c:713
 #. @-expanded: extended attribute block %b is corrupt (allocation collision).  
 msgid "@a @b %b is corrupt (allocation collision).  "
 msgstr ""
 
-#: e2fsck/problem.c:714
+#: e2fsck/problem.c:718
 #. @-expanded: extended attribute block %b is corrupt (invalid name).  
 msgid "@a @b %b is corrupt (@n name).  "
 msgstr ""
 
-#: e2fsck/problem.c:719
+#: e2fsck/problem.c:723
 #. @-expanded: extended attribute block %b is corrupt (invalid value).  
 msgid "@a @b %b is corrupt (@n value).  "
 msgstr ""
 
-#: e2fsck/problem.c:724
+#: e2fsck/problem.c:728
 #, c-format
 #. @-expanded: inode %i is too big.  
 msgid "@i %i is too big.  "
 msgstr ""
 
-#: e2fsck/problem.c:728
+#: e2fsck/problem.c:732
 #. @-expanded: block #%B (%b) causes directory to be too big.  
 msgid "@b #%B (%b) causes @d to be too big.  "
 msgstr ""
 
-#: e2fsck/problem.c:733
+#: e2fsck/problem.c:737
 #. @-expanded: block #%B (%b) causes file to be too big.  
 msgid "@b #%B (%b) causes file to be too big.  "
 msgstr ""
 
-#: e2fsck/problem.c:738
+#: e2fsck/problem.c:742
 #. @-expanded: block #%B (%b) causes symlink to be too big.  
 msgid "@b #%B (%b) causes symlink to be too big.  "
 msgstr ""
 
-#: e2fsck/problem.c:743
+#: e2fsck/problem.c:747
 #, c-format
 #. @-expanded: inode %i has INDEX_FL flag set on filesystem without htree support.\n
 msgid "@i %i has INDEX_FL flag set on @f without htree support.\n"
 msgstr ""
 
-#: e2fsck/problem.c:748
+#: e2fsck/problem.c:752
 #, c-format
 #. @-expanded: inode %i has INDEX_FL flag set but is not a directory.\n
 msgid "@i %i has INDEX_FL flag set but is not a @d.\n"
 msgstr ""
 
-#: e2fsck/problem.c:753
+#: e2fsck/problem.c:757
 #, c-format
 #. @-expanded: HTREE directory inode %i has an invalid root node.\n
 msgid "@h %i has an @n root node.\n"
 msgstr ""
 
-#: e2fsck/problem.c:758
+#: e2fsck/problem.c:762
 #. @-expanded: HTREE directory inode %i has an unsupported hash version (%N)\n
 msgid "@h %i has an unsupported hash version (%N)\n"
 msgstr ""
 
-#: e2fsck/problem.c:763
+#: e2fsck/problem.c:767
 #, c-format
 #. @-expanded: HTREE directory inode %i uses an incompatible htree root node flag.\n
 msgid "@h %i uses an incompatible htree root node flag.\n"
 msgstr ""
 
-#: e2fsck/problem.c:768
+#: e2fsck/problem.c:772
 #. @-expanded: HTREE directory inode %i has a tree depth (%N) which is too big\n
 msgid "@h %i has a tree depth (%N) which is too big\n"
 msgstr ""
 
-#: e2fsck/problem.c:773
+#: e2fsck/problem.c:777
 #. @-expanded: Bad block inode has an indirect block (%b) that conflicts with\n
 #. @-expanded: filesystem metadata.  
 msgid ""
@@ -1482,59 +1486,59 @@ msgid ""
 "@f metadata.  "
 msgstr ""
 
-#: e2fsck/problem.c:779
+#: e2fsck/problem.c:783
 #, c-format
 #. @-expanded: Resize inode (re)creation failed: %m.
 msgid "Resize @i (re)creation failed: %m."
 msgstr ""
 
-#: e2fsck/problem.c:784
+#: e2fsck/problem.c:788
 #. @-expanded: inode %i has a extra size (%IS) which is invalid\n
 msgid "@i %i has a extra size (%IS) which is @n\n"
 msgstr ""
 
-#: e2fsck/problem.c:789
+#: e2fsck/problem.c:793
 #. @-expanded: extended attribute in inode %i has a namelen (%N) which is invalid\n
 msgid "@a in @i %i has a namelen (%N) which is @n\n"
 msgstr ""
 
-#: e2fsck/problem.c:794
+#: e2fsck/problem.c:798
 #. @-expanded: extended attribute in inode %i has a value size (%N) which is invalid\n
 msgid "@a in @i %i has a value size (%N) which is @n\n"
 msgstr ""
 
-#: e2fsck/problem.c:799
+#: e2fsck/problem.c:803
 #. @-expanded: extended attribute in inode %i has a value offset (%N) which is invalid\n
 msgid "@a in @i %i has a value offset (%N) which is @n\n"
 msgstr ""
 
-#: e2fsck/problem.c:804
+#: e2fsck/problem.c:808
 #. @-expanded: extended attribute in inode %i has a value block (%N) which is invalid (must be 0)\n
 msgid "@a in @i %i has a value @b (%N) which is @n (must be 0)\n"
 msgstr ""
 
-#: e2fsck/problem.c:809
+#: e2fsck/problem.c:813
 #. @-expanded: extended attribute in inode %i has a hash (%N) which is invalid\n
 msgid "@a in @i %i has a hash (%N) which is @n\n"
 msgstr ""
 
-#: e2fsck/problem.c:814
+#: e2fsck/problem.c:818
 #. @-expanded: inode %i is a %It but it looks like it is really a directory.\n
 msgid "@i %i is a %It but it looks like it is really a directory.\n"
 msgstr ""
 
-#: e2fsck/problem.c:819
+#: e2fsck/problem.c:823
 #, c-format
 #. @-expanded: Error while reading over extent tree in inode %i: %m\n
 msgid "Error while reading over @x tree in @i %i: %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:824
+#: e2fsck/problem.c:828
 #, c-format
 msgid "Error while deleting extent: %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:829
+#: e2fsck/problem.c:833
 #. @-expanded: inode %i has an invalid extent\n
 #. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
 msgid ""
@@ -1542,7 +1546,7 @@ msgid ""
 "\t(logical @b %c, @n physical @b %b, len %N)\n"
 msgstr ""
 
-#: e2fsck/problem.c:834
+#: e2fsck/problem.c:838
 #. @-expanded: inode %i has an invalid extent\n
 #. @-expanded: \t(logical block %c, physical block %b, invalid len %N)\n
 msgid ""
@@ -1550,30 +1554,30 @@ msgid ""
 "\t(logical @b %c, physical @b %b, @n len %N)\n"
 msgstr ""
 
-#: e2fsck/problem.c:839
+#: e2fsck/problem.c:843
 #, c-format
 #. @-expanded: inode %i has EXTENTS_FL flag set on filesystem without extents support.\n
 msgid "@i %i has EXTENTS_FL flag set on @f without extents support.\n"
 msgstr ""
 
-#: e2fsck/problem.c:844
+#: e2fsck/problem.c:848
 #, c-format
 #. @-expanded: inode %i is in extent format, but superblock is missing EXTENTS feature\n
 msgid "@i %i is in extent format, but @S is missing EXTENTS feature\n"
 msgstr ""
 
-#: e2fsck/problem.c:849
+#: e2fsck/problem.c:853
 #, c-format
 #. @-expanded: inode %i missing EXTENT_FL, but is in extents format\n
 msgid "@i %i missing EXTENT_FL, but is in extents format\n"
 msgstr ""
 
-#: e2fsck/problem.c:854
+#: e2fsck/problem.c:858
 #, c-format
 msgid "Fast symlink %i has EXTENT_FL set.  "
 msgstr ""
 
-#: e2fsck/problem.c:859
+#: e2fsck/problem.c:863
 #. @-expanded: inode %i has out of order extents\n
 #. @-expanded: \t(invalid logical block %c, physical block %b, len %N)\n
 msgid ""
@@ -1581,7 +1585,7 @@ msgid ""
 "\t(@n logical @b %c, physical @b %b, len %N)\n"
 msgstr ""
 
-#: e2fsck/problem.c:866
+#: e2fsck/problem.c:870
 #. @-expanded: \n
 #. @-expanded: Running additional passes to resolve blocks claimed by more than one inode...\n
 #. @-expanded: Pass 1B: Rescanning for multiply-claimed blocks\n
@@ -1591,45 +1595,45 @@ msgid ""
 "Pass 1B: Rescanning for @m @bs\n"
 msgstr ""
 
-#: e2fsck/problem.c:872
+#: e2fsck/problem.c:876
 #, c-format
 #. @-expanded: multiply-claimed block(s) in inode %i:
 msgid "@m @b(s) in @i %i:"
 msgstr ""
 
-#: e2fsck/problem.c:887
+#: e2fsck/problem.c:891
 #, c-format
 msgid "Error while scanning inodes (%i): %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:892
+#: e2fsck/problem.c:896
 #, c-format
 #. @-expanded: error allocating inode bitmap (inode_dup_map): %m\n
 msgid "@A @i @B (@i_dup_map): %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:897
+#: e2fsck/problem.c:901
 #, c-format
 #. @-expanded: Error while iterating over blocks in inode %i (%s): %m\n
 msgid "Error while iterating over @bs in @i %i (%s): %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:902 e2fsck/problem.c:1218
+#: e2fsck/problem.c:906 e2fsck/problem.c:1222
 #. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n
 msgid "Error adjusting refcount for @a @b %b (@i %i): %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:908
+#: e2fsck/problem.c:912
 #. @-expanded: Pass 1C: Scanning directories for inodes with multiply-claimed blocks\n
 msgid "Pass 1C: Scanning directories for @is with @m @bs\n"
 msgstr ""
 
-#: e2fsck/problem.c:914
+#: e2fsck/problem.c:918
 #. @-expanded: Pass 1D: Reconciling multiply-claimed blocks\n
 msgid "Pass 1D: Reconciling @m @bs\n"
 msgstr ""
 
-#: e2fsck/problem.c:919
+#: e2fsck/problem.c:923
 #. @-expanded: File %Q (inode #%i, mod time %IM) \n
 #. @-expanded:   has %B multiply-claimed block(s), shared with %N file(s):\n
 msgid ""
@@ -1637,17 +1641,17 @@ msgid ""
 "  has %B @m @b(s), shared with %N file(s):\n"
 msgstr ""
 
-#: e2fsck/problem.c:925
+#: e2fsck/problem.c:929
 #. @-expanded: \t%Q (inode #%i, mod time %IM)\n
 msgid "\t%Q (@i #%i, mod time %IM)\n"
 msgstr ""
 
-#: e2fsck/problem.c:930
+#: e2fsck/problem.c:934
 #. @-expanded: \t<filesystem metadata>\n
 msgid "\t<@f metadata>\n"
 msgstr ""
 
-#: e2fsck/problem.c:935
+#: e2fsck/problem.c:939
 #. @-expanded: (There are %N inodes containing multiply-claimed blocks.)\n
 #. @-expanded: \n
 msgid ""
@@ -1655,7 +1659,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: e2fsck/problem.c:940
+#: e2fsck/problem.c:944
 #. @-expanded: multiply-claimed blocks already reassigned or cloned.\n
 #. @-expanded: \n
 msgid ""
@@ -1663,313 +1667,313 @@ msgid ""
 "\n"
 msgstr ""
 
-#: e2fsck/problem.c:953
+#: e2fsck/problem.c:957
 #, c-format
 msgid "Couldn't clone file: %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:959
+#: e2fsck/problem.c:963
 #. @-expanded: Pass 2: Checking directory structure\n
 msgid "Pass 2: Checking @d structure\n"
 msgstr ""
 
-#: e2fsck/problem.c:964
+#: e2fsck/problem.c:968
 #, c-format
 #. @-expanded: invalid inode number for '.' in directory inode %i.\n
 msgid "@n @i number for '.' in @d @i %i.\n"
 msgstr ""
 
-#: e2fsck/problem.c:969
+#: e2fsck/problem.c:973
 #. @-expanded: entry '%Dn' in %p (%i) has invalid inode #: %Di.\n
 msgid "@E has @n @i #: %Di.\n"
 msgstr ""
 
-#: e2fsck/problem.c:974
+#: e2fsck/problem.c:978
 #. @-expanded: entry '%Dn' in %p (%i) has deleted/unused inode %Di.  
 msgid "@E has @D/unused @i %Di.  "
 msgstr ""
 
-#: e2fsck/problem.c:979
+#: e2fsck/problem.c:983
 #. @-expanded: entry '%Dn' in %p (%i) is a link to '.'  
 msgid "@E @L to '.'  "
 msgstr ""
 
-#: e2fsck/problem.c:984
+#: e2fsck/problem.c:988
 #. @-expanded: entry '%Dn' in %p (%i) points to inode (%Di) located in a bad block.\n
 msgid "@E points to @i (%Di) located in a bad @b.\n"
 msgstr ""
 
-#: e2fsck/problem.c:989
+#: e2fsck/problem.c:993
 #. @-expanded: entry '%Dn' in %p (%i) is a link to directory %P (%Di).\n
 msgid "@E @L to @d %P (%Di).\n"
 msgstr ""
 
-#: e2fsck/problem.c:994
+#: e2fsck/problem.c:998
 #. @-expanded: entry '%Dn' in %p (%i) is a link to the root inode.\n
 msgid "@E @L to the @r.\n"
 msgstr ""
 
-#: e2fsck/problem.c:999
+#: e2fsck/problem.c:1003
 #. @-expanded: entry '%Dn' in %p (%i) has illegal characters in its name.\n
 msgid "@E has illegal characters in its name.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1004
+#: e2fsck/problem.c:1008
 #, c-format
 #. @-expanded: Missing '.' in directory inode %i.\n
 msgid "Missing '.' in @d @i %i.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1009
+#: e2fsck/problem.c:1013
 #, c-format
 #. @-expanded: Missing '..' in directory inode %i.\n
 msgid "Missing '..' in @d @i %i.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1014
+#: e2fsck/problem.c:1018
 #. @-expanded: First entry '%Dn' (inode=%Di) in directory inode %i (%p) should be '.'\n
 msgid "First @e '%Dn' (@i=%Di) in @d @i %i (%p) @s '.'\n"
 msgstr ""
 
-#: e2fsck/problem.c:1019
+#: e2fsck/problem.c:1023
 #. @-expanded: Second entry '%Dn' (inode=%Di) in directory inode %i should be '..'\n
 msgid "Second @e '%Dn' (@i=%Di) in @d @i %i @s '..'\n"
 msgstr ""
 
-#: e2fsck/problem.c:1024
+#: e2fsck/problem.c:1028
 #. @-expanded: i_faddr for inode %i (%Q) is %IF, should be zero.\n
 msgid "i_faddr @F %IF, @s zero.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1029
+#: e2fsck/problem.c:1033
 #. @-expanded: i_file_acl for inode %i (%Q) is %If, should be zero.\n
 msgid "i_file_acl @F %If, @s zero.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1034
+#: e2fsck/problem.c:1038
 #. @-expanded: i_dir_acl for inode %i (%Q) is %Id, should be zero.\n
 msgid "i_dir_acl @F %Id, @s zero.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1039
+#: e2fsck/problem.c:1043
 #. @-expanded: i_frag for inode %i (%Q) is %N, should be zero.\n
 msgid "i_frag @F %N, @s zero.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1044
+#: e2fsck/problem.c:1048
 #. @-expanded: i_fsize for inode %i (%Q) is %N, should be zero.\n
 msgid "i_fsize @F %N, @s zero.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1049
+#: e2fsck/problem.c:1053
 #. @-expanded: inode %i (%Q) has invalid mode (%Im).\n
 msgid "@i %i (%Q) has @n mode (%Im).\n"
 msgstr ""
 
-#: e2fsck/problem.c:1054
+#: e2fsck/problem.c:1058
 #. @-expanded: directory inode %i, block %B, offset %N: directory corrupted\n
 msgid "@d @i %i, @b %B, offset %N: @d corrupted\n"
 msgstr ""
 
-#: e2fsck/problem.c:1059
+#: e2fsck/problem.c:1063
 #. @-expanded: directory inode %i, block %B, offset %N: filename too long\n
 msgid "@d @i %i, @b %B, offset %N: filename too long\n"
 msgstr ""
 
-#: e2fsck/problem.c:1064
+#: e2fsck/problem.c:1068
 #. @-expanded: directory inode %i has an unallocated block #%B.  
 msgid "@d @i %i has an unallocated @b #%B.  "
 msgstr ""
 
-#: e2fsck/problem.c:1069
+#: e2fsck/problem.c:1073
 #, c-format
 #. @-expanded: '.' directory entry in directory inode %i is not NULL terminated\n
 msgid "'.' @d @e in @d @i %i is not NULL terminated\n"
 msgstr ""
 
-#: e2fsck/problem.c:1074
+#: e2fsck/problem.c:1078
 #, c-format
 #. @-expanded: '..' directory entry in directory inode %i is not NULL terminated\n
 msgid "'..' @d @e in @d @i %i is not NULL terminated\n"
 msgstr ""
 
-#: e2fsck/problem.c:1079
+#: e2fsck/problem.c:1083
 #. @-expanded: inode %i (%Q) is an illegal character device.\n
 msgid "@i %i (%Q) is an @I character @v.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1084
+#: e2fsck/problem.c:1088
 #. @-expanded: inode %i (%Q) is an illegal block device.\n
 msgid "@i %i (%Q) is an @I @b @v.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1089
+#: e2fsck/problem.c:1093
 #. @-expanded: entry '%Dn' in %p (%i) is duplicate '.' entry.\n
 msgid "@E is duplicate '.' @e.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1094
+#: e2fsck/problem.c:1098
 #. @-expanded: entry '%Dn' in %p (%i) is duplicate '..' entry.\n
 msgid "@E is duplicate '..' @e.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1099 e2fsck/problem.c:1394
+#: e2fsck/problem.c:1103 e2fsck/problem.c:1398
 #, c-format
 msgid "Internal error: couldn't find dir_info for %i.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1104
+#: e2fsck/problem.c:1108
 #. @-expanded: entry '%Dn' in %p (%i) has rec_len of %Dr, should be %N.\n
 msgid "@E has rec_len of %Dr, @s %N.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1109
+#: e2fsck/problem.c:1113
 #, c-format
 #. @-expanded: error allocating icount structure: %m\n
 msgid "@A icount structure: %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:1114
+#: e2fsck/problem.c:1118
 #, c-format
 #. @-expanded: Error iterating over directory blocks: %m\n
 msgid "Error iterating over @d @bs: %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:1119
+#: e2fsck/problem.c:1123
 #. @-expanded: Error reading directory block %b (inode %i): %m\n
 msgid "Error reading @d @b %b (@i %i): %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:1124
+#: e2fsck/problem.c:1128
 #. @-expanded: Error writing directory block %b (inode %i): %m\n
 msgid "Error writing @d @b %b (@i %i): %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:1129
+#: e2fsck/problem.c:1133
 #, c-format
 #. @-expanded: error allocating new directory block for inode %i (%s): %m\n
 msgid "@A new @d @b for @i %i (%s): %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:1134
+#: e2fsck/problem.c:1138
 #, c-format
 #. @-expanded: Error deallocating inode %i: %m\n
 msgid "Error deallocating @i %i: %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:1139
+#: e2fsck/problem.c:1143
 #, c-format
 #. @-expanded: directory entry for '.' in %p (%i) is big.\n
 msgid "@d @e for '.' in %p (%i) is big.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1144
+#: e2fsck/problem.c:1148
 #. @-expanded: inode %i (%Q) is an illegal FIFO.\n
 msgid "@i %i (%Q) is an @I FIFO.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1149
+#: e2fsck/problem.c:1153
 #. @-expanded: inode %i (%Q) is an illegal socket.\n
 msgid "@i %i (%Q) is an @I socket.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1154
+#: e2fsck/problem.c:1158
 #. @-expanded: Setting filetype for entry '%Dn' in %p (%i) to %N.\n
 msgid "Setting filetype for @E to %N.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1159
+#: e2fsck/problem.c:1163
 #. @-expanded: entry '%Dn' in %p (%i) has an incorrect filetype (was %Dt, should be %N).\n
 msgid "@E has an incorrect filetype (was %Dt, @s %N).\n"
 msgstr ""
 
-#: e2fsck/problem.c:1164
+#: e2fsck/problem.c:1168
 #. @-expanded: entry '%Dn' in %p (%i) has filetype set.\n
 msgid "@E has filetype set.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1169
+#: e2fsck/problem.c:1173
 #. @-expanded: entry '%Dn' in %p (%i) has a zero-length name.\n
 msgid "@E has a @z name.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1174
+#: e2fsck/problem.c:1178
 #. @-expanded: Symlink %Q (inode #%i) is invalid.\n
 msgid "Symlink %Q (@i #%i) is @n.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1179
+#: e2fsck/problem.c:1183
 #. @-expanded: extended attribute block for inode %i (%Q) is invalid (%If).\n
 msgid "@a @b @F @n (%If).\n"
 msgstr ""
 
-#: e2fsck/problem.c:1184
+#: e2fsck/problem.c:1188
 #. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n
 msgid "@f contains large files, but lacks LARGE_FILE flag in @S.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1189
+#: e2fsck/problem.c:1193
 #. @-expanded: problem in HTREE directory inode %d: node (%B) not referenced\n
 msgid "@p @h %d: node (%B) not referenced\n"
 msgstr ""
 
-#: e2fsck/problem.c:1194
+#: e2fsck/problem.c:1198
 #. @-expanded: problem in HTREE directory inode %d: node (%B) referenced twice\n
 msgid "@p @h %d: node (%B) referenced twice\n"
 msgstr ""
 
-#: e2fsck/problem.c:1199
+#: e2fsck/problem.c:1203
 #. @-expanded: problem in HTREE directory inode %d: node (%B) has bad min hash\n
 msgid "@p @h %d: node (%B) has bad min hash\n"
 msgstr ""
 
-#: e2fsck/problem.c:1204
+#: e2fsck/problem.c:1208
 #. @-expanded: problem in HTREE directory inode %d: node (%B) has bad max hash\n
 msgid "@p @h %d: node (%B) has bad max hash\n"
 msgstr ""
 
-#: e2fsck/problem.c:1209
+#: e2fsck/problem.c:1213
 #. @-expanded: invalid HTREE directory inode %d (%q).  
 msgid "@n @h %d (%q).  "
 msgstr ""
 
-#: e2fsck/problem.c:1213
+#: e2fsck/problem.c:1217
 #. @-expanded: problem in HTREE directory inode %d (%q): bad block number %b.\n
 msgid "@p @h %d (%q): bad @b number %b.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1223
+#: e2fsck/problem.c:1227
 #, c-format
 #. @-expanded: problem in HTREE directory inode %d: root node is invalid\n
 msgid "@p @h %d: root node is @n\n"
 msgstr ""
 
-#: e2fsck/problem.c:1228
+#: e2fsck/problem.c:1232
 #. @-expanded: problem in HTREE directory inode %d: node (%B) has invalid limit (%N)\n
 msgid "@p @h %d: node (%B) has @n limit (%N)\n"
 msgstr ""
 
-#: e2fsck/problem.c:1233
+#: e2fsck/problem.c:1237
 #. @-expanded: problem in HTREE directory inode %d: node (%B) has invalid count (%N)\n
 msgid "@p @h %d: node (%B) has @n count (%N)\n"
 msgstr ""
 
-#: e2fsck/problem.c:1238
+#: e2fsck/problem.c:1242
 #. @-expanded: problem in HTREE directory inode %d: node (%B) has an unordered hash table\n
 msgid "@p @h %d: node (%B) has an unordered hash table\n"
 msgstr ""
 
-#: e2fsck/problem.c:1243
+#: e2fsck/problem.c:1247
 #. @-expanded: problem in HTREE directory inode %d: node (%B) has invalid depth (%N)\n
 msgid "@p @h %d: node (%B) has @n depth (%N)\n"
 msgstr ""
 
-#: e2fsck/problem.c:1248
+#: e2fsck/problem.c:1252
 #. @-expanded: Duplicate entry '%Dn' in %p (%i) found.  
 msgid "Duplicate @E found.  "
 msgstr ""
 
-#: e2fsck/problem.c:1253
+#: e2fsck/problem.c:1257
 #, no-c-format
 #. @-expanded: entry '%Dn' in %p (%i) has a non-unique filename.\n
 #. @-expanded: Rename to %s
@@ -1978,7 +1982,7 @@ msgid ""
 "Rename to %s"
 msgstr ""
 
-#: e2fsck/problem.c:1258
+#: e2fsck/problem.c:1262
 #. @-expanded: Duplicate entry '%Dn' found.\n
 #. @-expanded: \tMarking %p (%i) to be rebuilt.\n
 #. @-expanded: \n
@@ -1988,112 +1992,110 @@ msgid ""
 "\n"
 msgstr ""
 
-#: e2fsck/problem.c:1263
+#: e2fsck/problem.c:1267
 #. @-expanded: i_blocks_hi for inode %i (%Q) is %N, should be zero.\n
 msgid "i_blocks_hi @F %N, @s zero.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1268
+#: e2fsck/problem.c:1272
 #. @-expanded: Unexpected block in HTREE directory inode %d (%q).\n
 msgid "Unexpected @b in @h %d (%q).\n"
 msgstr ""
 
-#: e2fsck/problem.c:1272
-#, c-format
-#. @-expanded: inode %i found in group %g where _INODE_UNINIT is set.  
-msgid "@i %i found in @g %g where _INODE_UNINIT is set.  "
+#: e2fsck/problem.c:1276
+#. @-expanded: entry '%Dn' in %p (%i) references inode %Di in group %g where _INODE_UNINIT is set.\n
+msgid "@E references @i %Di in @g %g where _INODE_UNINIT is set.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1277
-#, c-format
-#. @-expanded: inode %i found in group %g unused inodes area.  
-msgid "@i %i found in @g %g unused inodes area.  "
+#: e2fsck/problem.c:1281
+#. @-expanded: entry '%Dn' in %p (%i) references inode %Di found in group %g's unused inodes area.\n
+msgid "@E references @i %Di found in @g %g's unused inodes area.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1284
+#: e2fsck/problem.c:1288
 #. @-expanded: Pass 3: Checking directory connectivity\n
 msgid "Pass 3: Checking @d connectivity\n"
 msgstr ""
 
-#: e2fsck/problem.c:1289
+#: e2fsck/problem.c:1293
 #. @-expanded: root inode not allocated.  
 msgid "@r not allocated.  "
 msgstr ""
 
-#: e2fsck/problem.c:1294
+#: e2fsck/problem.c:1298
 #. @-expanded: No room in lost+found directory.  
 msgid "No room in @l @d.  "
 msgstr ""
 
-#: e2fsck/problem.c:1299
+#: e2fsck/problem.c:1303
 #, c-format
 #. @-expanded: Unconnected directory inode %i (%p)\n
 msgid "Unconnected @d @i %i (%p)\n"
 msgstr ""
 
-#: e2fsck/problem.c:1304
+#: e2fsck/problem.c:1308
 #. @-expanded: /lost+found not found.  
 msgid "/@l not found.  "
 msgstr ""
 
-#: e2fsck/problem.c:1309
+#: e2fsck/problem.c:1313
 #. @-expanded: '..' in %Q (%i) is %P (%j), should be %q (%d).\n
 msgid "'..' in %Q (%i) is %P (%j), @s %q (%d).\n"
 msgstr ""
 
-#: e2fsck/problem.c:1314
+#: e2fsck/problem.c:1318
 #. @-expanded: Bad or non-existent /lost+found.  Cannot reconnect.\n
 msgid "Bad or non-existent /@l.  Cannot reconnect.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1319
+#: e2fsck/problem.c:1323
 #, c-format
 #. @-expanded: Could not expand /lost+found: %m\n
 msgid "Could not expand /@l: %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:1324
+#: e2fsck/problem.c:1328
 #, c-format
 msgid "Could not reconnect %i: %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:1329
+#: e2fsck/problem.c:1333
 #, c-format
 #. @-expanded: Error while trying to find /lost+found: %m\n
 msgid "Error while trying to find /@l: %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:1334
+#: e2fsck/problem.c:1338
 #, c-format
 #. @-expanded: ext2fs_new_block: %m while trying to create /lost+found directory\n
 msgid "ext2fs_new_ at b: %m while trying to create /@l @d\n"
 msgstr ""
 
-#: e2fsck/problem.c:1339
+#: e2fsck/problem.c:1343
 #, c-format
 #. @-expanded: ext2fs_new_inode: %m while trying to create /lost+found directory\n
 msgid "ext2fs_new_ at i: %m while trying to create /@l @d\n"
 msgstr ""
 
-#: e2fsck/problem.c:1344
+#: e2fsck/problem.c:1348
 #, c-format
 #. @-expanded: ext2fs_new_dir_block: %m while creating new directory block\n
 msgid "ext2fs_new_dir_ at b: %m while creating new @d @b\n"
 msgstr ""
 
-#: e2fsck/problem.c:1349
+#: e2fsck/problem.c:1353
 #, c-format
 #. @-expanded: ext2fs_write_dir_block: %m while writing the directory block for /lost+found\n
 msgid "ext2fs_write_dir_ at b: %m while writing the @d @b for /@l\n"
 msgstr ""
 
-#: e2fsck/problem.c:1354
+#: e2fsck/problem.c:1358
 #, c-format
 #. @-expanded: Error while adjusting inode count on inode %i\n
 msgid "Error while adjusting @i count on @i %i\n"
 msgstr ""
 
-#: e2fsck/problem.c:1359
+#: e2fsck/problem.c:1363
 #, c-format
 #. @-expanded: Couldn't fix parent of inode %i: %m\n
 #. @-expanded: \n
@@ -2102,7 +2104,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: e2fsck/problem.c:1364
+#: e2fsck/problem.c:1368
 #, c-format
 #. @-expanded: Couldn't fix parent of inode %i: Couldn't find parent directory entry\n
 #. @-expanded: \n
@@ -2111,73 +2113,73 @@ msgid ""
 "\n"
 msgstr ""
 
-#: e2fsck/problem.c:1374
+#: e2fsck/problem.c:1378
 #, c-format
 #. @-expanded: Error creating root directory (%s): %m\n
 msgid "Error creating root @d (%s): %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:1379
+#: e2fsck/problem.c:1383
 #, c-format
 #. @-expanded: Error creating /lost+found directory (%s): %m\n
 msgid "Error creating /@l @d (%s): %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:1384
+#: e2fsck/problem.c:1388
 #. @-expanded: root inode is not a directory; aborting.\n
 msgid "@r is not a @d; aborting.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1389
+#: e2fsck/problem.c:1393
 #. @-expanded: Cannot proceed without a root inode.\n
 msgid "Cannot proceed without a @r.\n"
 msgstr ""
 
-#: e2fsck/problem.c:1399
+#: e2fsck/problem.c:1403
 #, c-format
 #. @-expanded: /lost+found is not a directory (ino=%i)\n
 msgid "/@l is not a @d (ino=%i)\n"
 msgstr ""
 
-#: e2fsck/problem.c:1406
+#: e2fsck/problem.c:1410
 msgid "Pass 3A: Optimizing directories\n"
 msgstr ""
 
-#: e2fsck/problem.c:1411
+#: e2fsck/problem.c:1415
 #, c-format
 msgid "Failed to create dirs_to_hash iterator: %m"
 msgstr ""
 
-#: e2fsck/problem.c:1416
+#: e2fsck/problem.c:1420
 msgid "Failed to optimize directory %q (%d): %m"
 msgstr ""
 
-#: e2fsck/problem.c:1421
+#: e2fsck/problem.c:1425
 msgid "Optimizing directories: "
 msgstr ""
 
-#: e2fsck/problem.c:1438
+#: e2fsck/problem.c:1442
 msgid "Pass 4: Checking reference counts\n"
 msgstr ""
 
-#: e2fsck/problem.c:1443
+#: e2fsck/problem.c:1447
 #, c-format
 #. @-expanded: unattached zero-length inode %i.  
 msgid "@u @z @i %i.  "
 msgstr ""
 
-#: e2fsck/problem.c:1448
+#: e2fsck/problem.c:1452
 #, c-format
 #. @-expanded: unattached inode %i\n
 msgid "@u @i %i\n"
 msgstr ""
 
-#: e2fsck/problem.c:1453
+#: e2fsck/problem.c:1457
 #. @-expanded: inode %i ref count is %Il, should be %N.  
 msgid "@i %i ref count is %Il, @s %N.  "
 msgstr ""
 
-#: e2fsck/problem.c:1457
+#: e2fsck/problem.c:1461
 #. @-expanded: WARNING: PROGRAMMING BUG IN E2FSCK!\n
 #. @-expanded: \tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n
 #. @-expanded: inode_link_info[%i] is %N, inode.i_links_count is %Il.  They should be the same!\n
@@ -2187,57 +2189,57 @@ msgid ""
 "@i_link_info[%i] is %N, @i.i_links_count is %Il.  They @s the same!\n"
 msgstr ""
 
-#: e2fsck/problem.c:1467
+#: e2fsck/problem.c:1471
 #. @-expanded: Pass 5: Checking group summary information\n
 msgid "Pass 5: Checking @g summary information\n"
 msgstr ""
 
-#: e2fsck/problem.c:1472
+#: e2fsck/problem.c:1476
 #. @-expanded: Padding at end of inode bitmap is not set. 
 msgid "Padding at end of @i @B is not set. "
 msgstr ""
 
-#: e2fsck/problem.c:1477
+#: e2fsck/problem.c:1481
 #. @-expanded: Padding at end of block bitmap is not set. 
 msgid "Padding at end of @b @B is not set. "
 msgstr ""
 
-#: e2fsck/problem.c:1482
+#: e2fsck/problem.c:1486
 #. @-expanded: block bitmap differences: 
 msgid "@b @B differences: "
 msgstr ""
 
-#: e2fsck/problem.c:1502
+#: e2fsck/problem.c:1506
 #. @-expanded: inode bitmap differences: 
 msgid "@i @B differences: "
 msgstr ""
 
-#: e2fsck/problem.c:1522
+#: e2fsck/problem.c:1526
 #. @-expanded: Free inodes count wrong for group #%g (%i, counted=%j).\n
 msgid "Free @is count wrong for @g #%g (%i, counted=%j).\n"
 msgstr ""
 
-#: e2fsck/problem.c:1527
+#: e2fsck/problem.c:1531
 #. @-expanded: Directories count wrong for group #%g (%i, counted=%j).\n
 msgid "Directories count wrong for @g #%g (%i, counted=%j).\n"
 msgstr ""
 
-#: e2fsck/problem.c:1532
+#: e2fsck/problem.c:1536
 #. @-expanded: Free inodes count wrong (%i, counted=%j).\n
 msgid "Free @is count wrong (%i, counted=%j).\n"
 msgstr ""
 
-#: e2fsck/problem.c:1537
+#: e2fsck/problem.c:1541
 #. @-expanded: Free blocks count wrong for group #%g (%b, counted=%c).\n
 msgid "Free @bs count wrong for @g #%g (%b, counted=%c).\n"
 msgstr ""
 
-#: e2fsck/problem.c:1542
+#: e2fsck/problem.c:1546
 #. @-expanded: Free blocks count wrong (%b, counted=%c).\n
 msgid "Free @bs count wrong (%b, counted=%c).\n"
 msgstr ""
 
-#: e2fsck/problem.c:1547
+#: e2fsck/problem.c:1551
 #. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap 
 #. @-expanded: endpoints (%i, %j)\n
 msgid ""
@@ -2245,44 +2247,44 @@ msgid ""
 "endpoints (%i, %j)\n"
 msgstr ""
 
-#: e2fsck/problem.c:1553
+#: e2fsck/problem.c:1557
 msgid "Internal error: fudging end of bitmap (%N)\n"
 msgstr ""
 
-#: e2fsck/problem.c:1558
+#: e2fsck/problem.c:1562
 #, c-format
 #. @-expanded: Error copying in replacement inode bitmap: %m\n
 msgid "Error copying in replacement @i @B: %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:1563
+#: e2fsck/problem.c:1567
 #, c-format
 #. @-expanded: Error copying in replacement block bitmap: %m\n
 msgid "Error copying in replacement @b @B: %m\n"
 msgstr ""
 
-#: e2fsck/problem.c:1588
+#: e2fsck/problem.c:1592
 msgid "Recreate journal to make the filesystem ext3 again?\n"
 msgstr ""
 
-#: e2fsck/problem.c:1593
+#: e2fsck/problem.c:1597
 #, c-format
 #. @-expanded: group %g block(s) in use but group is marked BLOCK_UNINIT\n
 msgid "@g %g @b(s) in use but @g is marked BLOCK_UNINIT\n"
 msgstr ""
 
-#: e2fsck/problem.c:1598
+#: e2fsck/problem.c:1602
 #, c-format
 #. @-expanded: group %g inode(s) in use but group is marked INODE_UNINIT\n
 msgid "@g %g @i(s) in use but @g is marked INODE_UNINIT\n"
 msgstr ""
 
-#: e2fsck/problem.c:1716
+#: e2fsck/problem.c:1720
 #, c-format
 msgid "Unhandled error code (0x%x)!\n"
 msgstr ""
 
-#: e2fsck/problem.c:1810
+#: e2fsck/problem.c:1815
 msgid "IGNORED"
 msgstr ""
 
@@ -2370,8 +2372,8 @@ msgstr ""
 msgid "         Extent depth histogram: "
 msgstr ""
 
-#: e2fsck/unix.c:193 misc/badblocks.c:871 misc/tune2fs.c:1501 misc/util.c:151
-#: resize/main.c:245
+#: e2fsck/unix.c:193 misc/badblocks.c:916 misc/tune2fs.c:1506 misc/util.c:151
+#: resize/main.c:248
 #, c-format
 msgid "while determining whether %s is mounted."
 msgstr ""
@@ -2499,7 +2501,7 @@ msgstr ""
 msgid "The -t option is not supported on this version of e2fsck.\n"
 msgstr ""
 
-#: e2fsck/unix.c:787 misc/tune2fs.c:545 misc/tune2fs.c:830 misc/tune2fs.c:847
+#: e2fsck/unix.c:787 misc/tune2fs.c:549 misc/tune2fs.c:834 misc/tune2fs.c:851
 #, c-format
 msgid "Unable to resolve '%s'"
 msgstr ""
@@ -2542,20 +2544,20 @@ msgstr ""
 msgid "need terminal for interactive repairs"
 msgstr ""
 
-#: e2fsck/unix.c:993
+#: e2fsck/unix.c:996
 #, c-format
 msgid "%s: %s trying backup blocks...\n"
 msgstr ""
 
-#: e2fsck/unix.c:995
+#: e2fsck/unix.c:998
 msgid "Superblock invalid,"
 msgstr ""
 
-#: e2fsck/unix.c:996
+#: e2fsck/unix.c:999
 msgid "Group descriptors look bad..."
 msgstr ""
 
-#: e2fsck/unix.c:1023
+#: e2fsck/unix.c:1026
 #, c-format
 msgid ""
 "The filesystem revision is apparently too high for this version of e2fsck.\n"
@@ -2563,142 +2565,142 @@ msgid ""
 "\n"
 msgstr ""
 
-#: e2fsck/unix.c:1029
+#: e2fsck/unix.c:1032
 #, c-format
 msgid "Could this be a zero-length partition?\n"
 msgstr ""
 
-#: e2fsck/unix.c:1031
+#: e2fsck/unix.c:1034
 #, c-format
 msgid "You must have %s access to the filesystem or be root\n"
 msgstr ""
 
-#: e2fsck/unix.c:1036
+#: e2fsck/unix.c:1039
 #, c-format
 msgid "Possibly non-existent or swap device?\n"
 msgstr ""
 
-#: e2fsck/unix.c:1038
+#: e2fsck/unix.c:1041
 #, c-format
 msgid "Filesystem mounted or opened exclusively by another program?\n"
 msgstr ""
 
-#: e2fsck/unix.c:1042
+#: e2fsck/unix.c:1045
 #, c-format
 msgid ""
 "Disk write-protected; use the -n option to do a read-only\n"
 "check of the device.\n"
 msgstr ""
 
-#: e2fsck/unix.c:1106
+#: e2fsck/unix.c:1109
 msgid "Get a newer version of e2fsck!"
 msgstr ""
 
-#: e2fsck/unix.c:1130
+#: e2fsck/unix.c:1133
 #, c-format
 msgid "while checking ext3 journal for %s"
 msgstr ""
 
-#: e2fsck/unix.c:1141
+#: e2fsck/unix.c:1144
 #, c-format
 msgid ""
 "Warning: skipping journal recovery because doing a read-only filesystem "
 "check.\n"
 msgstr ""
 
-#: e2fsck/unix.c:1154
+#: e2fsck/unix.c:1157
 #, c-format
 msgid "unable to set superblock flags on %s\n"
 msgstr ""
 
-#: e2fsck/unix.c:1160
+#: e2fsck/unix.c:1163
 #, c-format
 msgid "while recovering ext3 journal of %s"
 msgstr ""
 
-#: e2fsck/unix.c:1184
+#: e2fsck/unix.c:1187
 #, c-format
 msgid "%s has unsupported feature(s):"
 msgstr ""
 
-#: e2fsck/unix.c:1200
+#: e2fsck/unix.c:1203
 msgid "Warning: compression support is experimental.\n"
 msgstr ""
 
-#: e2fsck/unix.c:1205
+#: e2fsck/unix.c:1208
 #, c-format
 msgid ""
 "E2fsck not compiled with HTREE support,\n"
 "\tbut filesystem %s has HTREE directories.\n"
 msgstr ""
 
-#: e2fsck/unix.c:1259
+#: e2fsck/unix.c:1262
 msgid "while reading bad blocks inode"
 msgstr ""
 
-#: e2fsck/unix.c:1261
+#: e2fsck/unix.c:1264
 #, c-format
 msgid "This doesn't bode well, but we'll try to go on...\n"
 msgstr ""
 
-#: e2fsck/unix.c:1287
+#: e2fsck/unix.c:1290
 msgid "Couldn't determine journal size"
 msgstr ""
 
-#: e2fsck/unix.c:1290
+#: e2fsck/unix.c:1293
 #, c-format
 msgid "Creating journal (%d blocks): "
 msgstr ""
 
-#: e2fsck/unix.c:1297 misc/mke2fs.c:2059
+#: e2fsck/unix.c:1300 misc/mke2fs.c:2061
 msgid ""
 "\n"
 "\twhile trying to create journal"
 msgstr ""
 
-#: e2fsck/unix.c:1300
+#: e2fsck/unix.c:1303
 #, c-format
 msgid " Done.\n"
 msgstr ""
 
-#: e2fsck/unix.c:1301
+#: e2fsck/unix.c:1304
 #, c-format
 msgid ""
 "\n"
 "*** journal has been re-created - filesystem is now ext3 again ***\n"
 msgstr ""
 
-#: e2fsck/unix.c:1308
+#: e2fsck/unix.c:1311
 #, c-format
 msgid "Restarting e2fsck from the beginning...\n"
 msgstr ""
 
-#: e2fsck/unix.c:1312
+#: e2fsck/unix.c:1315
 msgid "while resetting context"
 msgstr ""
 
-#: e2fsck/unix.c:1319
+#: e2fsck/unix.c:1322
 #, c-format
 msgid "%s: e2fsck canceled.\n"
 msgstr ""
 
-#: e2fsck/unix.c:1324
+#: e2fsck/unix.c:1327
 msgid "aborted"
 msgstr ""
 
-#: e2fsck/unix.c:1336
+#: e2fsck/unix.c:1339
 #, c-format
 msgid ""
 "\n"
 "%s: ***** FILE SYSTEM WAS MODIFIED *****\n"
 msgstr ""
 
-#: e2fsck/unix.c:1339
+#: e2fsck/unix.c:1342
 #, c-format
 msgid "%s: ***** REBOOT LINUX *****\n"
 msgstr ""
 
-#: e2fsck/unix.c:1347
+#: e2fsck/unix.c:1350
 #, c-format
 msgid ""
 "\n"
@@ -2706,88 +2708,88 @@ msgid ""
 "\n"
 msgstr ""
 
-#: e2fsck/unix.c:1383
+#: e2fsck/unix.c:1386
 msgid "while setting block group checksum info"
 msgstr ""
 
-#: e2fsck/util.c:135 misc/util.c:68
+#: e2fsck/util.c:138 misc/util.c:68
 msgid "yY"
 msgstr ""
 
-#: e2fsck/util.c:136
+#: e2fsck/util.c:139
 msgid "nN"
 msgstr ""
 
-#: e2fsck/util.c:150
+#: e2fsck/util.c:153
 msgid "<y>"
 msgstr ""
 
-#: e2fsck/util.c:152
+#: e2fsck/util.c:155
 msgid "<n>"
 msgstr ""
 
-#: e2fsck/util.c:154
+#: e2fsck/util.c:157
 msgid " (y/n)"
 msgstr ""
 
-#: e2fsck/util.c:169
+#: e2fsck/util.c:172
 msgid "cancelled!\n"
 msgstr ""
 
-#: e2fsck/util.c:184
+#: e2fsck/util.c:187
 msgid "yes\n"
 msgstr ""
 
-#: e2fsck/util.c:186
+#: e2fsck/util.c:189
 msgid "no\n"
 msgstr ""
 
-#: e2fsck/util.c:196
+#: e2fsck/util.c:199
 #, c-format
 msgid ""
 "%s? no\n"
 "\n"
 msgstr ""
 
-#: e2fsck/util.c:200
+#: e2fsck/util.c:203
 #, c-format
 msgid ""
 "%s? yes\n"
 "\n"
 msgstr ""
 
-#: e2fsck/util.c:204
+#: e2fsck/util.c:207
 msgid "yes"
 msgstr ""
 
-#: e2fsck/util.c:204
+#: e2fsck/util.c:207
 msgid "no"
 msgstr ""
 
-#: e2fsck/util.c:218
+#: e2fsck/util.c:221
 #, c-format
 msgid "e2fsck_read_bitmaps: illegal bitmap block(s) for %s"
 msgstr ""
 
-#: e2fsck/util.c:223
+#: e2fsck/util.c:226
 msgid "reading inode and block bitmaps"
 msgstr ""
 
-#: e2fsck/util.c:228
+#: e2fsck/util.c:231
 #, c-format
 msgid "while retrying to read bitmaps for %s"
 msgstr ""
 
-#: e2fsck/util.c:240
+#: e2fsck/util.c:243
 msgid "writing block and inode bitmaps"
 msgstr ""
 
-#: e2fsck/util.c:245
+#: e2fsck/util.c:248
 #, c-format
 msgid "while rewriting block and inode bitmaps for %s"
 msgstr ""
 
-#: e2fsck/util.c:257
+#: e2fsck/util.c:260
 #, c-format
 msgid ""
 "\n"
@@ -2796,45 +2798,45 @@ msgid ""
 "\t(i.e., without -a or -p options)\n"
 msgstr ""
 
-#: e2fsck/util.c:332
+#: e2fsck/util.c:336
 #, c-format
 msgid "Memory used: %dk/%dk (%dk/%dk), "
 msgstr ""
 
-#: e2fsck/util.c:336
+#: e2fsck/util.c:340
 #, c-format
 msgid "Memory used: %d, "
 msgstr ""
 
-#: e2fsck/util.c:342
+#: e2fsck/util.c:346
 #, c-format
 msgid "time: %5.2f/%5.2f/%5.2f\n"
 msgstr ""
 
-#: e2fsck/util.c:347
+#: e2fsck/util.c:351
 #, c-format
 msgid "elapsed time: %6.3f\n"
 msgstr ""
 
-#: e2fsck/util.c:381 e2fsck/util.c:395
+#: e2fsck/util.c:385 e2fsck/util.c:399
 #, c-format
 msgid "while reading inode %ld in %s"
 msgstr ""
 
-#: e2fsck/util.c:409 e2fsck/util.c:422
+#: e2fsck/util.c:413 e2fsck/util.c:426
 #, c-format
 msgid "while writing inode %ld in %s"
 msgstr ""
 
-#: e2fsck/util.c:571
+#: e2fsck/util.c:575
 msgid "while allocating zeroizing buffer"
 msgstr ""
 
-#: misc/badblocks.c:63
+#: misc/badblocks.c:66
 msgid "done                                \n"
 msgstr ""
 
-#: misc/badblocks.c:85
+#: misc/badblocks.c:89
 #, c-format
 msgid ""
 "Usage: %s [-b block_size] [-i input_file] [-o output_file] [-svwnf]\n"
@@ -2844,169 +2846,174 @@ msgid ""
 "       device [last_block [first_block]]\n"
 msgstr ""
 
-#: misc/badblocks.c:96
+#: misc/badblocks.c:100
 #, c-format
 msgid ""
 "%s: The -n and -w options are mutually exclusive.\n"
 "\n"
 msgstr ""
 
-#: misc/badblocks.c:244
+#: misc/badblocks.c:202
+#, c-format
+msgid "%6.2f%% done, %s elapsed"
+msgstr ""
+
+#: misc/badblocks.c:289
 msgid "Testing with random pattern: "
 msgstr ""
 
-#: misc/badblocks.c:262
+#: misc/badblocks.c:307
 msgid "Testing with pattern 0x"
 msgstr ""
 
-#: misc/badblocks.c:290 misc/badblocks.c:359
+#: misc/badblocks.c:335 misc/badblocks.c:404
 msgid "during seek"
 msgstr ""
 
-#: misc/badblocks.c:301
+#: misc/badblocks.c:346
 #, c-format
 msgid "Weird value (%ld) in do_read\n"
 msgstr ""
 
-#: misc/badblocks.c:379
+#: misc/badblocks.c:424
 msgid "during ext2fs_sync_device"
 msgstr ""
 
-#: misc/badblocks.c:395 misc/badblocks.c:654
+#: misc/badblocks.c:440 misc/badblocks.c:699
 msgid "while beginning bad block list iteration"
 msgstr ""
 
-#: misc/badblocks.c:409 misc/badblocks.c:506 misc/badblocks.c:664
+#: misc/badblocks.c:454 misc/badblocks.c:551 misc/badblocks.c:709
 msgid "while allocating buffers"
 msgstr ""
 
-#: misc/badblocks.c:413
+#: misc/badblocks.c:458
 #, c-format
 msgid "Checking blocks %lu to %lu\n"
 msgstr ""
 
-#: misc/badblocks.c:418
+#: misc/badblocks.c:463
 msgid "Checking for bad blocks in read-only mode\n"
 msgstr ""
 
-#: misc/badblocks.c:427
+#: misc/badblocks.c:472
 msgid "Checking for bad blocks (read-only test): "
 msgstr ""
 
-#: misc/badblocks.c:435 misc/badblocks.c:538 misc/badblocks.c:583
-#: misc/badblocks.c:727
+#: misc/badblocks.c:480 misc/badblocks.c:583 misc/badblocks.c:628
+#: misc/badblocks.c:772
 msgid "Too many bad blocks, aborting test\n"
 msgstr ""
 
-#: misc/badblocks.c:513
+#: misc/badblocks.c:558
 msgid "Checking for bad blocks in read-write mode\n"
 msgstr ""
 
-#: misc/badblocks.c:515 misc/badblocks.c:677
+#: misc/badblocks.c:560 misc/badblocks.c:722
 #, c-format
 msgid "From block %lu to %lu\n"
 msgstr ""
 
-#: misc/badblocks.c:573
+#: misc/badblocks.c:618
 msgid "Reading and comparing: "
 msgstr ""
 
-#: misc/badblocks.c:676
+#: misc/badblocks.c:721
 msgid "Checking for bad blocks in non-destructive read-write mode\n"
 msgstr ""
 
-#: misc/badblocks.c:682
+#: misc/badblocks.c:727
 msgid "Checking for bad blocks (non-destructive read-write test)\n"
 msgstr ""
 
-#: misc/badblocks.c:689
+#: misc/badblocks.c:734
 msgid ""
 "\n"
 "Interrupt caught, cleaning up\n"
 msgstr ""
 
-#: misc/badblocks.c:765
+#: misc/badblocks.c:810
 #, c-format
 msgid "during test data write, block %lu"
 msgstr ""
 
-#: misc/badblocks.c:876 misc/util.c:156
+#: misc/badblocks.c:921 misc/util.c:156
 #, c-format
 msgid "%s is mounted; "
 msgstr ""
 
-#: misc/badblocks.c:878
+#: misc/badblocks.c:923
 msgid "badblocks forced anyway.  Hope /etc/mtab is incorrect.\n"
 msgstr ""
 
-#: misc/badblocks.c:883
+#: misc/badblocks.c:928
 msgid "it's not safe to run badblocks!\n"
 msgstr ""
 
-#: misc/badblocks.c:888 misc/util.c:167
+#: misc/badblocks.c:933 misc/util.c:167
 #, c-format
 msgid "%s is apparently in use by the system; "
 msgstr ""
 
-#: misc/badblocks.c:891
+#: misc/badblocks.c:936
 msgid "badblocks forced anyway.\n"
 msgstr ""
 
-#: misc/badblocks.c:911
+#: misc/badblocks.c:956
 #, c-format
 msgid "invalid %s - %s"
 msgstr ""
 
-#: misc/badblocks.c:970
+#: misc/badblocks.c:1015
 #, c-format
 msgid "bad block size - %s"
 msgstr ""
 
-#: misc/badblocks.c:1025
+#: misc/badblocks.c:1070
 #, c-format
 msgid "can't allocate memory for test_pattern - %s"
 msgstr ""
 
-#: misc/badblocks.c:1052
+#: misc/badblocks.c:1097
 msgid "Maximum of one test_pattern may be specified in read-only mode"
 msgstr ""
 
-#: misc/badblocks.c:1058
+#: misc/badblocks.c:1103
 msgid "Random test_pattern is not allowed in read-only mode"
 msgstr ""
 
-#: misc/badblocks.c:1072
+#: misc/badblocks.c:1117
 msgid ""
 "Couldn't determine device size; you must specify\n"
 "the size manually\n"
 msgstr ""
 
-#: misc/badblocks.c:1078
+#: misc/badblocks.c:1123
 msgid "while trying to determine device size"
 msgstr ""
 
-#: misc/badblocks.c:1083
+#: misc/badblocks.c:1128
 msgid "last block"
 msgstr ""
 
-#: misc/badblocks.c:1089
+#: misc/badblocks.c:1134
 msgid "first block"
 msgstr ""
 
-#: misc/badblocks.c:1092
+#: misc/badblocks.c:1137
 #, c-format
 msgid "invalid starting block (%lu): must be less than %lu"
 msgstr ""
 
-#: misc/badblocks.c:1147
+#: misc/badblocks.c:1193
 msgid "while creating in-memory bad blocks list"
 msgstr ""
 
-#: misc/badblocks.c:1162
+#: misc/badblocks.c:1208
 msgid "while adding to in-memory bad block list"
 msgstr ""
 
-#: misc/badblocks.c:1186
+#: misc/badblocks.c:1232
 #, c-format
 msgid "Pass completed, %u bad blocks found.\n"
 msgstr ""
@@ -3152,7 +3159,7 @@ msgstr ""
 msgid "Bad blocks: %u"
 msgstr ""
 
-#: misc/dumpe2fs.c:292 misc/tune2fs.c:276
+#: misc/dumpe2fs.c:292 misc/tune2fs.c:279
 msgid "while reading journal inode"
 msgstr ""
 
@@ -3160,7 +3167,7 @@ msgstr ""
 msgid "Journal size:             "
 msgstr ""
 
-#: misc/dumpe2fs.c:319 misc/tune2fs.c:197
+#: misc/dumpe2fs.c:319 misc/tune2fs.c:200
 msgid "while reading journal superblock"
 msgstr ""
 
@@ -3185,7 +3192,7 @@ msgstr ""
 msgid "Journal users:            %s\n"
 msgstr ""
 
-#: misc/dumpe2fs.c:360 misc/mke2fs.c:692 misc/tune2fs.c:865
+#: misc/dumpe2fs.c:360 misc/mke2fs.c:692 misc/tune2fs.c:869
 #, c-format
 msgid "Couldn't allocate memory to parse options!\n"
 msgstr ""
@@ -3219,8 +3226,8 @@ msgstr ""
 msgid "\tUsing %s\n"
 msgstr ""
 
-#: misc/dumpe2fs.c:507 misc/e2image.c:671 misc/tune2fs.c:1452
-#: resize/main.c:306
+#: misc/dumpe2fs.c:507 misc/e2image.c:674 misc/tune2fs.c:1457
+#: resize/main.c:311
 #, c-format
 msgid "Couldn't find valid filesystem superblock.\n"
 msgstr ""
@@ -3232,33 +3239,33 @@ msgid ""
 "%s: %s: error reading bitmaps: %s\n"
 msgstr ""
 
-#: misc/e2image.c:50
+#: misc/e2image.c:52
 #, c-format
 msgid "Usage: %s [-rsI] device image_file\n"
 msgstr ""
 
-#: misc/e2image.c:62
+#: misc/e2image.c:64
 msgid "Couldn't allocate header buffer\n"
 msgstr ""
 
-#: misc/e2image.c:81
+#: misc/e2image.c:83
 #, c-format
 msgid "short write (only %d bytes) for writing image header"
 msgstr ""
 
-#: misc/e2image.c:100
+#: misc/e2image.c:102
 msgid "while writing superblock"
 msgstr ""
 
-#: misc/e2image.c:108
+#: misc/e2image.c:110
 msgid "while writing inode table"
 msgstr ""
 
-#: misc/e2image.c:115
+#: misc/e2image.c:117
 msgid "while writing block bitmap"
 msgstr ""
 
-#: misc/e2image.c:122
+#: misc/e2image.c:124
 msgid "while writing inode bitmap"
 msgstr ""
 
@@ -3282,7 +3289,7 @@ msgstr ""
 msgid "e2label: not an ext2 filesystem\n"
 msgstr ""
 
-#: misc/e2label.c:96 misc/tune2fs.c:1585
+#: misc/e2label.c:96 misc/tune2fs.c:1590
 #, c-format
 msgid "Warning: label too long, truncating.\n"
 msgstr ""
@@ -3297,7 +3304,7 @@ msgstr ""
 msgid "e2label: error writing superblock\n"
 msgstr ""
 
-#: misc/e2label.c:116 misc/tune2fs.c:537
+#: misc/e2label.c:116 misc/tune2fs.c:541
 #, c-format
 msgid "Usage: e2label device [newlabel]\n"
 msgstr ""
@@ -3719,7 +3726,7 @@ msgid ""
 "\t%s\n"
 msgstr ""
 
-#: misc/mke2fs.c:868 misc/tune2fs.c:350
+#: misc/mke2fs.c:868 misc/tune2fs.c:353
 #, c-format
 msgid "Invalid filesystem option set: %s\n"
 msgstr ""
@@ -3803,59 +3810,59 @@ msgstr ""
 msgid "bad num inodes - %s"
 msgstr ""
 
-#: misc/mke2fs.c:1372 misc/mke2fs.c:2020
+#: misc/mke2fs.c:1373 misc/mke2fs.c:2022
 #, c-format
 msgid "while trying to open journal device %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:1378
+#: misc/mke2fs.c:1379
 #, c-format
 msgid "Journal dev blocksize (%d) smaller than minimum blocksize %d\n"
 msgstr ""
 
-#: misc/mke2fs.c:1384
+#: misc/mke2fs.c:1385
 #, c-format
 msgid "Using journal device's blocksize: %d\n"
 msgstr ""
 
-#: misc/mke2fs.c:1393
+#: misc/mke2fs.c:1394
 #, c-format
 msgid "%d-byte blocks too big for system (max %d)"
 msgstr ""
 
-#: misc/mke2fs.c:1397
+#: misc/mke2fs.c:1398
 #, c-format
 msgid ""
 "Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
 msgstr ""
 
-#: misc/mke2fs.c:1405
+#: misc/mke2fs.c:1406
 #, c-format
 msgid "invalid blocks count - %s"
 msgstr ""
 
-#: misc/mke2fs.c:1415
+#: misc/mke2fs.c:1416
 msgid "filesystem"
 msgstr ""
 
-#: misc/mke2fs.c:1437
+#: misc/mke2fs.c:1438
 #, c-format
 msgid ""
 "%s: Size of device %s too big to be expressed in 32 bits\n"
 "\tusing a blocksize of %d.\n"
 msgstr ""
 
-#: misc/mke2fs.c:1445 resize/main.c:366
+#: misc/mke2fs.c:1446 resize/main.c:371
 msgid "while trying to determine filesystem size"
 msgstr ""
 
-#: misc/mke2fs.c:1451
+#: misc/mke2fs.c:1452
 msgid ""
 "Couldn't determine device size; you must specify\n"
 "the size of the filesystem\n"
 msgstr ""
 
-#: misc/mke2fs.c:1458
+#: misc/mke2fs.c:1459
 msgid ""
 "Device size reported to be zero.  Invalid partition specified, or\n"
 "\tpartition table wasn't reread after running fdisk, due to\n"
@@ -3863,73 +3870,73 @@ msgid ""
 "\tto re-read your partition table.\n"
 msgstr ""
 
-#: misc/mke2fs.c:1476
+#: misc/mke2fs.c:1477
 msgid "Filesystem larger than apparent device size."
 msgstr ""
 
-#: misc/mke2fs.c:1482
+#: misc/mke2fs.c:1483
 #, c-format
 msgid "Failed to parse fs types list\n"
 msgstr ""
 
-#: misc/mke2fs.c:1518
+#: misc/mke2fs.c:1519
 msgid "fs_types for mke2fs.conf resolution: "
 msgstr ""
 
-#: misc/mke2fs.c:1525
+#: misc/mke2fs.c:1526
 #, c-format
 msgid "Filesystem features not supported with revision 0 filesystems\n"
 msgstr ""
 
-#: misc/mke2fs.c:1532
+#: misc/mke2fs.c:1533
 #, c-format
 msgid "Sparse superblocks not supported with revision 0 filesystems\n"
 msgstr ""
 
-#: misc/mke2fs.c:1544
+#: misc/mke2fs.c:1545
 #, c-format
 msgid "Journals not supported with revision 0 filesystems\n"
 msgstr ""
 
-#: misc/mke2fs.c:1562
+#: misc/mke2fs.c:1563
 #, c-format
 msgid ""
 "The resize_inode and meta_bg features are not compatible.\n"
 "They can not be both enabled simultaneously.\n"
 msgstr ""
 
-#: misc/mke2fs.c:1579
+#: misc/mke2fs.c:1580
 msgid "while trying to determine hardware sector size"
 msgstr ""
 
-#: misc/mke2fs.c:1637
+#: misc/mke2fs.c:1638
 msgid "reserved online resize blocks not supported on non-sparse filesystem"
 msgstr ""
 
-#: misc/mke2fs.c:1646
+#: misc/mke2fs.c:1647
 msgid "blocks per group count out of range"
 msgstr ""
 
-#: misc/mke2fs.c:1661
+#: misc/mke2fs.c:1662
 msgid "Flex_bg feature not enabled, so flex_bg size may not be specified"
 msgstr ""
 
-#: misc/mke2fs.c:1673
+#: misc/mke2fs.c:1674
 #, c-format
 msgid "invalid inode size %d (min %d/max %d)"
 msgstr ""
 
-#: misc/mke2fs.c:1687
+#: misc/mke2fs.c:1688
 #, c-format
 msgid "too many inodes (%llu), raise inode ratio?"
 msgstr ""
 
-#: misc/mke2fs.c:1692
+#: misc/mke2fs.c:1693
 #, c-format
 msgid "too many inodes (%llu), specify < 2^32 inodes"
 msgstr ""
 
-#: misc/mke2fs.c:1707
+#: misc/mke2fs.c:1708
 #, c-format
 msgid ""
 "inode_size (%u) * inodes_count (%u) too big for a\n"
@@ -3937,12 +3944,12 @@ msgid ""
 "\tor lower inode count (-N).\n"
 msgstr ""
 
-#: misc/mke2fs.c:1804 misc/tune2fs.c:1398
+#: misc/mke2fs.c:1805 misc/tune2fs.c:1402
 #, c-format
 msgid "while trying to delete %s"
 msgstr ""
 
-#: misc/mke2fs.c:1813
+#: misc/mke2fs.c:1814
 #, c-format
 msgid ""
 "Overwriting existing filesystem; this can be undone using the command:\n"
@@ -3950,67 +3957,67 @@ msgid ""
 "\n"
 msgstr ""
 
-#: misc/mke2fs.c:1860
+#: misc/mke2fs.c:1862
 msgid "while setting up superblock"
 msgstr ""
 
-#: misc/mke2fs.c:1904
+#: misc/mke2fs.c:1906
 #, c-format
 msgid "unknown os - %s"
 msgstr ""
 
-#: misc/mke2fs.c:1958
+#: misc/mke2fs.c:1960
 msgid "while trying to allocate filesystem tables"
 msgstr ""
 
-#: misc/mke2fs.c:1989
+#: misc/mke2fs.c:1991
 #, c-format
 msgid "while zeroing block %u at end of filesystem"
 msgstr ""
 
-#: misc/mke2fs.c:2002
+#: misc/mke2fs.c:2004
 msgid "while reserving blocks for online resize"
 msgstr ""
 
-#: misc/mke2fs.c:2013 misc/tune2fs.c:474
+#: misc/mke2fs.c:2015 misc/tune2fs.c:477
 msgid "journal"
 msgstr ""
 
-#: misc/mke2fs.c:2025
+#: misc/mke2fs.c:2027
 #, c-format
 msgid "Adding journal to device %s: "
 msgstr ""
 
-#: misc/mke2fs.c:2032
+#: misc/mke2fs.c:2034
 #, c-format
 msgid ""
 "\n"
 "\twhile trying to add journal to device %s"
 msgstr ""
 
-#: misc/mke2fs.c:2037 misc/mke2fs.c:2063 misc/tune2fs.c:502 misc/tune2fs.c:516
+#: misc/mke2fs.c:2039 misc/mke2fs.c:2065 misc/tune2fs.c:506 misc/tune2fs.c:520
 #, c-format
 msgid "done\n"
 msgstr ""
 
-#: misc/mke2fs.c:2051
+#: misc/mke2fs.c:2053
 #, c-format
 msgid "Creating journal (%u blocks): "
 msgstr ""
 
-#: misc/mke2fs.c:2068
+#: misc/mke2fs.c:2070
 #, c-format
 msgid "Writing superblocks and filesystem accounting information: "
 msgstr ""
 
-#: misc/mke2fs.c:2073
+#: misc/mke2fs.c:2075
 #, c-format
 msgid ""
 "\n"
 "Warning, had trouble writing out superblocks."
 msgstr ""
 
-#: misc/mke2fs.c:2076
+#: misc/mke2fs.c:2078
 #, c-format
 msgid ""
 "done\n"
@@ -4052,11 +4059,11 @@ msgstr ""
 msgid "%s: h=%3d s=%3d c=%4d   start=%8d size=%8lu end=%8d\n"
 msgstr ""
 
-#: misc/tune2fs.c:94
+#: misc/tune2fs.c:96
 msgid "Please run e2fsck on the filesystem.\n"
 msgstr ""
 
-#: misc/tune2fs.c:101
+#: misc/tune2fs.c:103
 #, c-format
 msgid ""
 "Usage: %s [-c max_mounts_count] [-e errors_behavior] [-g group]\n"
@@ -4068,197 +4075,197 @@ msgid ""
 "\t[ -I new_inode_size ] device\n"
 msgstr ""
 
-#: misc/tune2fs.c:185
+#: misc/tune2fs.c:188
 msgid "while trying to open external journal"
 msgstr ""
 
-#: misc/tune2fs.c:189
+#: misc/tune2fs.c:192
 #, c-format
 msgid "%s is not a journal device.\n"
 msgstr ""
 
-#: misc/tune2fs.c:204
+#: misc/tune2fs.c:207
 msgid "Journal superblock not found!\n"
 msgstr ""
 
-#: misc/tune2fs.c:216
+#: misc/tune2fs.c:219
 msgid "Filesystem's UUID not found on journal device.\n"
 msgstr ""
 
-#: misc/tune2fs.c:237
+#: misc/tune2fs.c:240
 msgid "Journal NOT removed\n"
 msgstr ""
 
-#: misc/tune2fs.c:243
+#: misc/tune2fs.c:246
 msgid "Journal removed\n"
 msgstr ""
 
-#: misc/tune2fs.c:283
+#: misc/tune2fs.c:286
 msgid "while reading bitmaps"
 msgstr ""
 
-#: misc/tune2fs.c:291
+#: misc/tune2fs.c:294
 msgid "while clearing journal inode"
 msgstr ""
 
-#: misc/tune2fs.c:302
+#: misc/tune2fs.c:305
 msgid "while writing journal inode"
 msgstr ""
 
-#: misc/tune2fs.c:317
+#: misc/tune2fs.c:320
 #, c-format
 msgid "Invalid mount option set: %s\n"
 msgstr ""
 
-#: misc/tune2fs.c:353
+#: misc/tune2fs.c:356
 #, c-format
 msgid "Clearing filesystem feature '%s' not supported.\n"
 msgstr ""
 
-#: misc/tune2fs.c:359
+#: misc/tune2fs.c:362
 #, c-format
 msgid "Setting filesystem feature '%s' not supported.\n"
 msgstr ""
 
-#: misc/tune2fs.c:368
+#: misc/tune2fs.c:371
 msgid ""
 "The has_journal feature may only be cleared when the filesystem is\n"
 "unmounted or mounted read-only.\n"
 msgstr ""
 
-#: misc/tune2fs.c:376
+#: misc/tune2fs.c:379
 msgid ""
 "The needs_recovery flag is set.  Please run e2fsck before clearing\n"
 "the has_journal flag.\n"
 msgstr ""
 
-#: misc/tune2fs.c:409
+#: misc/tune2fs.c:412
 msgid ""
 "Clearing the flex_bg flag would cause the the filesystem to be\n"
 "inconsistent.\n"
 msgstr ""
 
-#: misc/tune2fs.c:420
+#: misc/tune2fs.c:423
 msgid ""
 "The huge_file feature may only be cleared when the filesystem is\n"
 "unmounted or mounted read-only.\n"
 msgstr ""
 
-#: misc/tune2fs.c:448
+#: misc/tune2fs.c:451
 #, c-format
 msgid "(and reboot afterwards!)\n"
 msgstr ""
 
-#: misc/tune2fs.c:469
+#: misc/tune2fs.c:472
 msgid "The filesystem already has a journal.\n"
 msgstr ""
 
-#: misc/tune2fs.c:486
+#: misc/tune2fs.c:490
 #, c-format
 msgid ""
 "\n"
 "\twhile trying to open journal on %s\n"
 msgstr ""
 
-#: misc/tune2fs.c:490
+#: misc/tune2fs.c:494
 #, c-format
 msgid "Creating journal on device %s: "
 msgstr ""
 
-#: misc/tune2fs.c:498
+#: misc/tune2fs.c:502
 #, c-format
 msgid "while adding filesystem to journal on %s"
 msgstr ""
 
-#: misc/tune2fs.c:504
+#: misc/tune2fs.c:508
 msgid "Creating journal inode: "
 msgstr ""
 
-#: misc/tune2fs.c:513
+#: misc/tune2fs.c:517
 msgid ""
 "\n"
 "\twhile trying to create journal file"
 msgstr ""
 
-#: misc/tune2fs.c:580
+#: misc/tune2fs.c:584
 #, c-format
 msgid "Couldn't parse date/time specifier: %s"
 msgstr ""
 
-#: misc/tune2fs.c:605 misc/tune2fs.c:618
+#: misc/tune2fs.c:609 misc/tune2fs.c:622
 #, c-format
 msgid "bad mounts count - %s"
 msgstr ""
 
-#: misc/tune2fs.c:634
+#: misc/tune2fs.c:638
 #, c-format
 msgid "bad error behavior - %s"
 msgstr ""
 
-#: misc/tune2fs.c:661
+#: misc/tune2fs.c:665
 #, c-format
 msgid "bad gid/group name - %s"
 msgstr ""
 
-#: misc/tune2fs.c:694
+#: misc/tune2fs.c:698
 #, c-format
 msgid "bad interval - %s"
 msgstr ""
 
-#: misc/tune2fs.c:722
+#: misc/tune2fs.c:726
 #, c-format
 msgid "bad reserved block ratio - %s"
 msgstr ""
 
-#: misc/tune2fs.c:737
+#: misc/tune2fs.c:741
 msgid "-o may only be specified once"
 msgstr ""
 
-#: misc/tune2fs.c:747
+#: misc/tune2fs.c:751
 msgid "-O may only be specified once"
 msgstr ""
 
-#: misc/tune2fs.c:757
+#: misc/tune2fs.c:761
 #, c-format
 msgid "bad reserved blocks count - %s"
 msgstr ""
 
-#: misc/tune2fs.c:786
+#: misc/tune2fs.c:790
 #, c-format
 msgid "bad uid/user name - %s"
 msgstr ""
 
-#: misc/tune2fs.c:803
+#: misc/tune2fs.c:807
 #, c-format
 msgid "bad inode size - %s"
 msgstr ""
 
-#: misc/tune2fs.c:810
+#: misc/tune2fs.c:814
 #, c-format
 msgid "Inode size must be a power of two- %s"
 msgstr ""
 
-#: misc/tune2fs.c:897
+#: misc/tune2fs.c:901
 #, c-format
 msgid "Invalid RAID stride: %s\n"
 msgstr ""
 
-#: misc/tune2fs.c:912
+#: misc/tune2fs.c:916
 #, c-format
 msgid "Invalid RAID stripe-width: %s\n"
 msgstr ""
 
-#: misc/tune2fs.c:927
+#: misc/tune2fs.c:931
 #, c-format
 msgid "Invalid hash algorithm: %s\n"
 msgstr ""
 
-#: misc/tune2fs.c:933
+#: misc/tune2fs.c:937
 #, c-format
 msgid "Setting default hash algorithm to %s (%d)\n"
 msgstr ""
 
-#: misc/tune2fs.c:941
+#: misc/tune2fs.c:945
 #, c-format
 msgid ""
 "\n"
@@ -4275,11 +4282,11 @@ msgid ""
 "\t^test_fs\n"
 msgstr ""
 
-#: misc/tune2fs.c:1330 resize/resize2fs.c:724
+#: misc/tune2fs.c:1334 resize/resize2fs.c:724
 msgid "blocks to be moved"
 msgstr ""
 
-#: misc/tune2fs.c:1407
+#: misc/tune2fs.c:1411
 #, c-format
 msgid ""
 "To undo the tune2fs operations please run the command\n"
@@ -4287,110 +4294,110 @@ msgid ""
 "\n"
 msgstr ""
 
-#: misc/tune2fs.c:1463
+#: misc/tune2fs.c:1468
 #, c-format
 msgid "The inode size is already %d\n"
 msgstr ""
 
-#: misc/tune2fs.c:1468
+#: misc/tune2fs.c:1473
 #, c-format
 msgid "Shrinking the inode size is not supported\n"
 msgstr ""
 
-#: misc/tune2fs.c:1511
+#: misc/tune2fs.c:1516
 #, c-format
 msgid "Setting maximal mount count to %d\n"
 msgstr ""
 
-#: misc/tune2fs.c:1517
+#: misc/tune2fs.c:1522
 #, c-format
 msgid "Setting current mount count to %d\n"
 msgstr ""
 
-#: misc/tune2fs.c:1522
+#: misc/tune2fs.c:1527
 #, c-format
 msgid "Setting error behavior to %d\n"
 msgstr ""
 
-#: misc/tune2fs.c:1527
+#: misc/tune2fs.c:1532
 #, c-format
 msgid "Setting reserved blocks gid to %lu\n"
 msgstr ""
 
-#: misc/tune2fs.c:1532
+#: misc/tune2fs.c:1537
 #, c-format
 msgid "Setting interval between checks to %lu seconds\n"
 msgstr ""
 
-#: misc/tune2fs.c:1538
+#: misc/tune2fs.c:1543
 #, c-format
 msgid "Setting reserved blocks percentage to %g%% (%u blocks)\n"
 msgstr ""
 
-#: misc/tune2fs.c:1544
+#: misc/tune2fs.c:1549
 #, c-format
 msgid "reserved blocks count is too big (%lu)"
 msgstr ""
 
-#: misc/tune2fs.c:1550
+#: misc/tune2fs.c:1555
 #, c-format
 msgid "Setting reserved blocks count to %lu\n"
 msgstr ""
 
-#: misc/tune2fs.c:1556
+#: misc/tune2fs.c:1561
 msgid ""
 "\n"
 "The filesystem already has sparse superblocks.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1563
+#: misc/tune2fs.c:1568
 #, c-format
 msgid ""
 "\n"
 "Sparse superblock flag set.  %s"
 msgstr ""
 
-#: misc/tune2fs.c:1568
+#: misc/tune2fs.c:1573
 msgid ""
 "\n"
 "Clearing the sparse superflag not supported.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1575
+#: misc/tune2fs.c:1580
 #, c-format
 msgid "Setting time filesystem last checked to %s\n"
 msgstr ""
 
-#: misc/tune2fs.c:1581
+#: misc/tune2fs.c:1586
 #, c-format
 msgid "Setting reserved blocks uid to %lu\n"
 msgstr ""
 
-#: misc/tune2fs.c:1616
+#: misc/tune2fs.c:1621
 msgid "Invalid UUID format\n"
 msgstr ""
 
-#: misc/tune2fs.c:1623
+#: misc/tune2fs.c:1628
 msgid "The inode size may only be changed when the filesystem is unmounted.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1634
+#: misc/tune2fs.c:1639
 msgid ""
 "Error in resizing the inode size.\n"
 "Run e2undo to undo the file system changes. \n"
 msgstr ""
 
-#: misc/tune2fs.c:1638
+#: misc/tune2fs.c:1643
 #, c-format
 msgid "Setting inode size %lu\n"
 msgstr ""
 
-#: misc/tune2fs.c:1648
+#: misc/tune2fs.c:1653
 #, c-format
 msgid "Setting stride size to %d\n"
 msgstr ""
 
-#: misc/tune2fs.c:1653
+#: misc/tune2fs.c:1658
 #, c-format
 msgid "Setting stripe width to %d\n"
 msgstr ""
@@ -4499,69 +4506,74 @@ msgstr ""
 msgid "#\t\t %u -> %u (%d)\n"
 msgstr ""
 
-#: resize/main.c:39
+#: resize/main.c:42
 #, c-format
 msgid ""
 "Usage: %s [-d debug_flags] [-f] [-F] [-M] [-P] [-p] device [new_size]\n"
 "\n"
 msgstr ""
 
-#: resize/main.c:61
+#: resize/main.c:64
 msgid "Extending the inode table"
 msgstr ""
 
-#: resize/main.c:64
+#: resize/main.c:67
 msgid "Relocating blocks"
 msgstr ""
 
-#: resize/main.c:67
+#: resize/main.c:70
 msgid "Scanning inode table"
 msgstr ""
 
-#: resize/main.c:70
+#: resize/main.c:73
 msgid "Updating inode references"
 msgstr ""
 
-#: resize/main.c:73
+#: resize/main.c:76
 msgid "Moving inode table"
 msgstr ""
 
-#: resize/main.c:76
+#: resize/main.c:79
 msgid "Unknown pass?!?"
 msgstr ""
 
-#: resize/main.c:79
+#: resize/main.c:82
 #, c-format
 msgid "Begin pass %d (max = %lu)\n"
 msgstr ""
 
-#: resize/main.c:261
+#: resize/main.c:264
 #, c-format
 msgid "while opening %s"
 msgstr ""
 
-#: resize/main.c:273
+#: resize/main.c:276
 #, c-format
 msgid "while getting stat information for %s"
 msgstr ""
 
-#: resize/main.c:332
+#: resize/main.c:337
 #, c-format
 msgid ""
 "%s: The combination of flex_bg and\n"
 "\t!resize_inode features is not supported by resize2fs.\n"
 msgstr ""
 
-#: resize/main.c:340
+#: resize/main.c:345
 #, c-format
 msgid "Estimated minimum size of the filesystem: %u\n"
 msgstr ""
 
-#: resize/main.c:384
+#: resize/main.c:381
+#, c-format
+msgid "Invalid new size: %s\n"
+msgstr ""
+
+#: resize/main.c:394
 msgid "Invalid stride length"
 msgstr ""
 
-#: resize/main.c:408
+#: resize/main.c:418
 #, c-format
 msgid ""
 "The containing partition (or device) is only %u (%dk) blocks.\n"
@@ -4569,26 +4581,26 @@ msgid ""
 "\n"
 msgstr ""
 
-#: resize/main.c:415
+#: resize/main.c:425
 #, c-format
 msgid ""
 "The filesystem is already %u blocks long.  Nothing to do!\n"
 "\n"
 msgstr ""
 
-#: resize/main.c:426
+#: resize/main.c:436
 #, c-format
 msgid ""
 "Please run 'e2fsck -f %s' first.\n"
 "\n"
 msgstr ""
 
-#: resize/main.c:437
+#: resize/main.c:447
 #, c-format
 msgid "while trying to resize %s"
 msgstr ""
 
-#: resize/main.c:442
+#: resize/main.c:452
 #, c-format
 msgid ""
 "The filesystem on %s is now %u blocks long.\n"

commit 80875db58a6db58e3e2f01caf1adabca068d3ffb
Author: Theodore Ts'o <tytso at mit.edu>
Date:   Sun Oct 12 23:09:26 2008 -0400

    e2fsck: Offer to clear the test_fs flag if ext4 is available
    
    Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>

diff --git a/e2fsck/e2fsck.conf.5.in b/e2fsck/e2fsck.conf.5.in
index 9d12171..c66a769 100644
--- a/e2fsck/e2fsck.conf.5.in
+++ b/e2fsck/e2fsck.conf.5.in
@@ -106,6 +106,11 @@ This boolean relation controls whether or not the interval between
 filesystem checks (either based on time or number of mounts) should 
 be doubled if the system is running on battery.  It defaults to 
 true.
+.TP
+.I clear_test_fs_flag
+This boolean relation controls whether or not e2fsck will offer to clear
+the test_fs flag if the ext4 filesystem is available on the system.  It
+defaults to true.
 .SH THE [problems] STANZA
 Each tag in the
 .I [problems] 
diff --git a/e2fsck/e2fsck.h b/e2fsck/e2fsck.h
index 9833248..e94b871 100644
--- a/e2fsck/e2fsck.h
+++ b/e2fsck/e2fsck.h
@@ -481,6 +481,8 @@ extern void preenhalt(e2fsck_t ctx);
 extern char *string_copy(e2fsck_t ctx, const char *str, int len);
 extern errcode_t e2fsck_zero_blocks(ext2_filsys fs, blk_t blk, int num,
 				    blk_t *ret_blk, int *ret_count);
+extern int fs_proc_check(const char *fs_name);
+extern int check_for_modules(const char *fs_name);
 #ifdef RESOURCE_TRACK
 extern void print_resource_track(const char *desc,
 				 struct resource_track *track,
diff --git a/e2fsck/problem.c b/e2fsck/problem.c
index 5a3ef79..19e8719 100644
--- a/e2fsck/problem.c
+++ b/e2fsck/problem.c
@@ -381,6 +381,10 @@ static struct e2fsck_problem problem_table[] = {
 	  N_("Journal transaction %i was corrupt, replay was aborted.\n"),
 	  PROMPT_NONE, 0 },
 
+	{ PR_0_CLEAR_TESTFS_FLAG,
+	  N_("The test_fs flag is set (and ext4 is available).  "),
+	  PROMPT_CLEAR, PR_PREEN_OK },
+
 	/* Pass 1 errors */
 
 	/* Pass 1: Checking inodes, blocks, and sizes */
diff --git a/e2fsck/problem.h b/e2fsck/problem.h
index 24e7ed7..815b37c 100644
--- a/e2fsck/problem.h
+++ b/e2fsck/problem.h
@@ -214,6 +214,9 @@ struct problem_context {
 /* Journal transaction found corrupt */
 #define PR_0_JNL_TXN_CORRUPT			0x00003A
 
+/* The test_fs filesystem flag is set and ext4 is available */
+#define PR_0_CLEAR_TESTFS_FLAG			0x00003B
+
 /*
  * Pass 1 errors
  */
diff --git a/e2fsck/super.c b/e2fsck/super.c
index 1bacbc7..cd2b9f0 100644
--- a/e2fsck/super.c
+++ b/e2fsck/super.c
@@ -468,7 +468,7 @@ void check_super_block(e2fsck_t ctx)
 	struct problem_context	pctx;
 	blk_t	free_blocks = 0;
 	ino_t	free_inodes = 0;
-	int     csum_flag;
+	int     csum_flag, clear_test_fs_flag;
 
 	inodes_per_block = EXT2_INODES_PER_BLOCK(fs->super);
 	ipg_max = inodes_per_block * (blocks_per_group - 4);
@@ -732,6 +732,23 @@ void check_super_block(e2fsck_t ctx)
 #endif
 
 	/*
+	 * Check to see if we should disable the test_fs flag
+	 */
+	profile_get_boolean(ctx->profile, "options",
+			    "clear_test_fs_flag", 0, 1,
+			    &clear_test_fs_flag);
+	if (!(ctx->options & E2F_OPT_READONLY) &&
+	    clear_test_fs_flag &&
+	    (fs->super->s_flags & EXT2_FLAGS_TEST_FILESYS) &&
+	    (fs_proc_check("ext4") || check_for_modules("ext4"))) {
+		if (fix_problem(ctx, PR_0_CLEAR_TESTFS_FLAG, &pctx)) {
+			fs->super->s_flags &= ~EXT2_FLAGS_TEST_FILESYS;
+			ext2fs_mark_super_dirty(fs);
+			fs->flags &= ~EXT2_FLAG_MASTER_SB_ONLY;
+		}
+	}
+			
+	/*
 	 * For the Hurd, check to see if the filetype option is set,
 	 * since it doesn't support it.
 	 */
diff --git a/e2fsck/util.c b/e2fsck/util.c
index efaea4d..6fbe5fc 100644
--- a/e2fsck/util.c
+++ b/e2fsck/util.c
@@ -10,9 +10,13 @@
  */
 
 #include <stdlib.h>
+#include <stdio.h>
 #include <unistd.h>
 #include <string.h>
 #include <ctype.h>
+#ifdef __linux__
+#include <sys/utsname.h>
+#endif
 
 #ifdef HAVE_CONIO_H
 #undef HAVE_TERMIOS_H
@@ -22,7 +26,6 @@
 #ifdef HAVE_TERMIOS_H
 #include <termios.h>
 #endif
-#include <stdio.h>
 #endif
 
 #ifdef HAVE_MALLOC_H
@@ -594,3 +597,84 @@ errcode_t e2fsck_zero_blocks(ext2_filsys fs, blk_t blk, int num,
 	}
 	return 0;
 }
+
+/*
+ * Check to see if a filesystem is in /proc/filesystems.
+ * Returns 1 if found, 0 if not
+ */
+int fs_proc_check(const char *fs_name)
+{
+	FILE	*f;
+	char	buf[80], *cp, *t;
+
+	f = fopen("/proc/filesystems", "r");
+	if (!f)
+		return (0);
+	while (!feof(f)) {
+		if (!fgets(buf, sizeof(buf), f))
+			break;
+		cp = buf;
+		if (!isspace(*cp)) {
+			while (*cp && !isspace(*cp))
+				cp++;
+		}
+		while (*cp && isspace(*cp))
+			cp++;
+		if ((t = strchr(cp, '\n')) != NULL)
+			*t = 0;
+		if ((t = strchr(cp, '\t')) != NULL)
+			*t = 0;
+		if ((t = strchr(cp, ' ')) != NULL)
+			*t = 0;
+		if (!strcmp(fs_name, cp)) {
+			fclose(f);
+			return (1);
+		}
+	}
+	fclose(f);
+	return (0);
+}
+
+/*
+ * Check to see if a filesystem is available as a module
+ * Returns 1 if found, 0 if not
+ */
+int check_for_modules(const char *fs_name)
+{
+#ifdef __linux__
+	struct utsname	uts;
+	FILE		*f;
+	char		buf[1024], *cp, *t;
+	int		i;
+
+	if (uname(&uts))
+		return (0);
+	snprintf(buf, sizeof(buf), "/lib/modules/%s/modules.dep", uts.release);
+
+	f = fopen(buf, "r");
+	if (!f)
+		return (0);
+	while (!feof(f)) {
+		if (!fgets(buf, sizeof(buf), f))
+			break;
+		if ((cp = strchr(buf, ':')) != NULL)
+			*cp = 0;
+		else
+			continue;
+		if ((cp = strrchr(buf, '/')) != NULL)
+			cp++;
+		i = strlen(cp);
+		if (i > 3) {
+			t = cp + i - 3;
+			if (!strcmp(t, ".ko"))
+				*t = 0;
+		}
+		if (!strcmp(cp, fs_name)) {
+			fclose(f);
+			return (1);
+		}
+	}
+	fclose(f);
+#endif /* __linux__ */
+	return (0);
+}

commit 4758835c280082e38f0b96816ea4f60351a49053
Author: Theodore Ts'o <tytso at mit.edu>
Date:   Sat Oct 11 11:22:15 2008 -0400

    e2fsck: Print the correct inode number for uninit-bg related problem reports
    
    Fix the reporting for problem codes PR_2_INOREF_BG_INO_UNINIT and
    PR_2_INOREF_IN_UNUSED.
    
    Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>

diff --git a/e2fsck/problem.c b/e2fsck/problem.c
index 7976a70..5a3ef79 100644
--- a/e2fsck/problem.c
+++ b/e2fsck/problem.c
@@ -1269,12 +1269,12 @@ static struct e2fsck_problem problem_table[] = {
 
 	/* Inode found in group where _INODE_UNINIT is set */
 	{ PR_2_INOREF_BG_INO_UNINIT,
-	  N_("@i %i found in @g %g where _INODE_UNINIT is set.  "),
+	  N_("@E references @i %Di in @g %g where _INODE_UNINIT is set.\n"),
 	  PROMPT_FIX, PR_PREEN_OK },
 
 	/* Inode found in group unused inodes area */
 	{ PR_2_INOREF_IN_UNUSED,
-	  N_("@i %i found in @g %g unused inodes area.  "),
+	  N_("@E references @i %Di found in @g %g's unused inodes area.\n"),
 	  PROMPT_FIX, PR_PREEN_OK },
 
 	/* Pass 3 errors */

commit 6964a17720ca88acd2075b57dde9c381f093e492
Author: Theodore Ts'o <tytso at mit.edu>
Date:   Sat Oct 11 11:07:23 2008 -0400

    libblkid: Fix file descriptor leak when checking for a module
    
    Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>

diff --git a/lib/blkid/probe.c b/lib/blkid/probe.c
index 71b00f4..a55bceb 100644
--- a/lib/blkid/probe.c
+++ b/lib/blkid/probe.c
@@ -233,8 +233,10 @@ static int check_for_modules(const char *fs_name)
 			if (!strcmp(t, ".ko"))
 				*t = 0;
 		}
-		if (!strcmp(cp, fs_name))
+		if (!strcmp(cp, fs_name)) {
+			fclose(f);
 			return (1);
+		}
 	}
 	fclose(f);
 #endif

commit 79cc33628256e817610e921ddf600f72e4f879e1
Author: Eric Sandeen <sandeen at redhat.com>
Date:   Fri Oct 10 17:14:08 2008 -0500

    e2fsck: exit from preenhalt if IO errors were encountered
    
    If a block device is read-only, e2fsck -p gets into an infinite loop
    trying to preenhalt, closing and flushing the fs, which tries to flush
    the cache, which gets a write error and calls preenhalt which tries to
    close and flush the fs ... ad infinitum.
    
    Per Ted's suggestion just flag the ctx as "exiting" and short-circuit
    the infinite loop.
    
    Tested by running e2fsck -p on a block device set read-only by BLKROSET.
    
    Thanks to Vlado Potisk for reporting this.
    
    Addresses-Red-Hat-Bugzilla: #465679
    
    Signed-off-by: Eric Sandeen <sandeen at redhat.com>
    Signed-off-by: Theodore Ts'o <tytso at mit.edu>

diff --git a/e2fsck/e2fsck.h b/e2fsck/e2fsck.h
index 53c8f54..9833248 100644
--- a/e2fsck/e2fsck.h
+++ b/e2fsck/e2fsck.h
@@ -174,6 +174,7 @@ struct resource_track {
 #define E2F_FLAG_RESTARTED	0x0200 /* E2fsck has been restarted */
 #define E2F_FLAG_RESIZE_INODE	0x0400 /* Request to recreate resize inode */
 #define E2F_FLAG_GOT_DEVSIZE	0x0800 /* Device size has been fetched */
+#define E2F_FLAG_EXITING	0x1000 /* E2fsck exiting due to errors */
 
 /*
  * Defines for indicating the e2fsck pass number
diff --git a/e2fsck/ehandler.c b/e2fsck/ehandler.c
index 7bae4ab..f9021f0 100644
--- a/e2fsck/ehandler.c
+++ b/e2fsck/ehandler.c
@@ -33,7 +33,8 @@ static errcode_t e2fsck_handle_read_error(io_channel channel,
 	e2fsck_t ctx;
 
 	ctx = (e2fsck_t) fs->priv_data;
-
+	if (ctx->flags & E2F_FLAG_EXITING)
+		return 0;
 	/*
 	 * If more than one block was read, try reading each block
 	 * separately.  We could use the actual bytes read to figure
@@ -79,6 +80,8 @@ static errcode_t e2fsck_handle_write_error(io_channel channel,
 	e2fsck_t ctx;
 
 	ctx = (e2fsck_t) fs->priv_data;
+	if (ctx->flags & E2F_FLAG_EXITING)
+		return 0;
 
 	/*
 	 * If more than one block was written, try writing each block
diff --git a/e2fsck/util.c b/e2fsck/util.c
index 256100c..efaea4d 100644
--- a/e2fsck/util.c
+++ b/e2fsck/util.c
@@ -257,6 +257,7 @@ void preenhalt(e2fsck_t ctx)
 	fprintf(stderr, _("\n\n%s: UNEXPECTED INCONSISTENCY; "
 		"RUN fsck MANUALLY.\n\t(i.e., without -a or -p options)\n"),
 	       ctx->device_name);
+	ctx->flags |= E2F_FLAG_EXITING;
 	if (fs != NULL) {
 		fs->super->s_state |= EXT2_ERROR_FS;
 		ext2fs_mark_super_dirty(fs);

commit 279a000fdcfd5fa79f18c975978d1c6bfa3113a3
Author: Eric Sandeen <sandeen at redhat.com>
Date:   Fri Oct 10 17:38:15 2008 -0500

    resize2fs: check for bogus new_size
    
    If we don't check for new_size == 0, bogus values send resize2fs into
    a tailspin:
    
    resize2fs 1.41.0 (10-Jul-2008)
    Illegal block number passed to ext2fs_test_block_bitmap #1 for block bitmap for
    /tmp/tmp.lntZtMFvz8/fake-disk
    ...the same message repeated zillion times...
    
    Probably should see where that loop is, but at any rate we should
    error-check parse_num_blocks.
    
    Thanks to Petr Muller for reporting this.
    
    Addresses-Red-Hat-Bugzilla: #465984
    
    Signed-off-by: Eric Sandeen <sandeen at redhat.com>
    Signed-off-by: Theodore Ts'o <tytso at mit.edu>

diff --git a/resize/main.c b/resize/main.c
index d6ecd8b..3de333e 100644
--- a/resize/main.c
+++ b/resize/main.c
@@ -376,6 +376,11 @@ int main (int argc, char ** argv)
 	else if (new_size_str) {
 		new_size = parse_num_blocks(new_size_str,
 					    fs->super->s_log_block_size);
+		if (new_size == 0) {
+			com_err(program_name, 0,
+				_("Invalid new size: %s\n"), new_size_str);
+			exit(1);
+		}
 	} else {
 		new_size = max_size;
 		/* Round down to an even multiple of a pagesize */

commit 7ed7a4b6ed8b2fce891874a0eafdc8f77c3ffc34
Author: Eric Sandeen <sandeen at redhat.com>
Date:   Fri Oct 10 17:17:43 2008 -0500

    unix_io: check for read-only devices when opening R/W
    
    When we open a device on linux, test whether it is writable
    right away, rather than trying to proceed and clean up when
    writes start failing.
    
    Signed-off-by: Eric Sandeen <sandeen at redhat.com>
    Signed-off-by: Theodore Ts'o <tytso at mit.edu>

diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c
index d77e59d..797fce8 100644
--- a/lib/ext2fs/unix_io.c
+++ b/lib/ext2fs/unix_io.c
@@ -31,6 +31,12 @@
 #ifdef __linux__
 #include <sys/utsname.h>
 #endif
+#ifdef HAVE_SYS_IOCTL_H
+#include <sys/ioctl.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
 #if HAVE_SYS_STAT_H
 #include <sys/stat.h>
 #endif
@@ -41,6 +47,10 @@
 #include <sys/resource.h>
 #endif
 
+#if defined(__linux__) && defined(_IO) && !defined(BLKGETSIZE)
+#define BLKROGET   _IO(0x12, 94) /* Get read-only status (0 = read_write).  */
+#endif
+
 #include "ext2_fs.h"
 #include "ext2fs.h"
 
@@ -453,6 +463,21 @@ static errcode_t unix_open(const char *name, int flags, io_channel *channel)
 		goto cleanup;
 	}
 
+#ifdef BLKROGET
+	if (flags & IO_FLAG_RW) {
+		int error;
+		int readonly = 0;
+
+		/* Is the block device actually writable? */
+		error = ioctl(data->dev, BLKROGET, &readonly);
+		if (!error && readonly) {
+			close(data->dev);
+			retval = EPERM;
+			goto cleanup;
+		}
+	}
+#endif
+
 #ifdef __linux__
 #undef RLIM_INFINITY
 #if (defined(__alpha__) || ((defined(__sparc__) || defined(__mips__)) && (SIZEOF_LONG == 4)))

commit a25f0e73a7db95d6930f2af67d758be07737d044
Author: Theodore Ts'o <tytso at mit.edu>
Date:   Fri Oct 10 14:53:09 2008 -0400

    debugfs: Fix ncheck when printing pathnames for multiple hardlinks in a directory
    
    Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>

diff --git a/debugfs/ncheck.c b/debugfs/ncheck.c
index 22fa29f..abb38a8 100644
--- a/debugfs/ncheck.c
+++ b/debugfs/ncheck.c
@@ -23,7 +23,7 @@ struct inode_walk_struct {
 	int			inodes_left;
 	int			num_inodes;
 	int			position;
-	ext2_ino_t		parent;
+	char			*parent;
 };
 
 static int ncheck_proc(struct ext2_dir_entry *dirent,
@@ -42,16 +42,8 @@ static int ncheck_proc(struct ext2_dir_entry *dirent,
 		return 0;
 	for (i=0; i < iw->num_inodes; i++) {
 		if (iw->iarray[i] == dirent->inode) {
-			retval = ext2fs_get_pathname(current_fs, iw->parent,
-						     iw->iarray[i], 
-						     &pathname);
-			if (retval)
-				com_err("ncheck", retval,
-					"while resolving pathname for "
-					"inode %d (%d)", iw->parent, 
-					iw->iarray[i]);
-			else
-				printf("%u\t%s\n", iw->iarray[i], pathname);
+			printf("%u\t%s/%*s\n", iw->iarray[i], iw->parent,
+			       (dirent->name_len & 0xFF), dirent->name);
 		}
 	}
 	if (!iw->inodes_left)
@@ -124,10 +116,17 @@ void do_ncheck(int argc, char **argv)
 			goto next;
 
 		iw.position = 0;
-		iw.parent = ino;
+
+		retval = ext2fs_get_pathname(current_fs, ino, 0, &iw.parent);
+		if (retval) {
+			com_err("ncheck", retval, 
+				"while calling ext2fs_get_pathname");
+			goto next;
+		}
 
 		retval = ext2fs_dir_iterate(current_fs, ino, 0, 0,
 					    ncheck_proc, &iw);
+		ext2fs_free_mem(&iw.parent);
 		if (retval) {
 			com_err("ncheck", retval,
 				"while calling ext2_dir_iterate");

commit f0eae15c36d3334c0461ba3f2d4d401a954902ab
Author: Theodore Ts'o <tytso at mit.edu>
Date:   Fri Oct 10 14:00:46 2008 -0400

    Fix parallel build problem with util/subst
    
    Make sure util/subst is built before trying to build lib/et
    
    Addresses-Sourceforge-Bug: #2143281
    
    Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>

diff --git a/Makefile.in b/Makefile.in
index ffb1224..728d3a5 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -25,7 +25,7 @@ all:: subs
 	$(MAKE) progs
 	$(MAKE) docs
 
-subs:
+subs: $(DEP_SUBSTITUTE)
 	@for i in $(SUBS) ; do if test -d `dirname $$i` ; \
 		then $(MAKE) $$i || exit $$? ; fi ; done
 	@(if test -d lib/et ; then cd lib/et && $(MAKE) compile_et; fi)

commit 18f734301012301efbeb87a7c67f6cf82f1721d7
Author: Eric Sandeen <sandeen at redhat.com>
Date:   Wed Oct 8 13:34:09 2008 -0500

    e2fsprogs: fix blkid detection of ext4dev as ext4
    
    If only ext4 is available (as a module or in /proc/filesystems)
    blkid wasn't properly testing for it, because the time checks
    were backwards and always failed.  This caused old ext4dev
    filesystems to fail to mount as ext4.  With this patch it works
    fine.
    
    Also, don't try to check for modules on a non-Linux system.
    
    Signed-off-by: Eric Sandeen <sandeen at redhat.com>
    Signed-off-by: Theodore Ts'o <tytso at mit.edu>

diff --git a/lib/blkid/probe.c b/lib/blkid/probe.c
index 10ac803..71b00f4 100644
--- a/lib/blkid/probe.c
+++ b/lib/blkid/probe.c
@@ -26,7 +26,9 @@
 #ifdef HAVE_SYS_MKDEV_H
 #include <sys/mkdev.h>
 #endif
+#ifdef __linux__
 #include <sys/utsname.h>
+#endif
 #ifdef HAVE_ERRNO_H
 #include <errno.h>
 #endif
@@ -203,6 +205,7 @@ static int fs_proc_check(const char *fs_name)
  */
 static int check_for_modules(const char *fs_name)
 {
+#ifdef __linux__
 	struct utsname	uts;
 	FILE		*f;
 	char		buf[1024], *cp, *t;
@@ -234,6 +237,7 @@ static int check_for_modules(const char *fs_name)
 			return (1);
 	}
 	fclose(f);
+#endif
 	return (0);
 }
 
@@ -243,7 +247,7 @@ static int system_supports_ext4(void)
 	static int	ret = -1;
 	time_t		now = time(0);
 
-	if (ret != -1 || (last_check - now) < 5)
+	if (ret != -1 || (now - last_check) < 5)
 		return ret;
 	last_check = now;
 	ret = (fs_proc_check("ext4") || check_for_modules("ext4"));
@@ -256,7 +260,7 @@ static int system_supports_ext4dev(void)
 	static int	ret = -1;
 	time_t		now = time(0);
 
-	if (ret != -1 || (last_check - now) < 5)
+	if (ret != -1 || (now - last_check) < 5)
 		return ret;
 	last_check = now;
 	ret = (fs_proc_check("ext4dev") || check_for_modules("ext4dev"));

commit d58d8320e881a751cc40e3f2ab00c6e16c8447db
Author: Theodore Ts'o <tytso at mit.edu>
Date:   Thu Oct 2 08:59:09 2008 -0400

    Update Makefile depend information for crc16.o
    
    Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>

diff --git a/lib/ext2fs/Makefile.in b/lib/ext2fs/Makefile.in
index dfbcecd..c301134 100644
--- a/lib/ext2fs/Makefile.in
+++ b/lib/ext2fs/Makefile.in
@@ -448,8 +448,8 @@ closefs.o: $(srcdir)/closefs.c $(srcdir)/ext2_fs.h \
  $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/bitops.h
-crc16.o: $(srcdir)/crc16.c $(srcdir)/crc16.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h
+crc16.o: $(srcdir)/crc16.c $(top_builddir)/lib/ext2fs/ext2_types.h \
+ $(srcdir)/crc16.h
 csum.o: $(srcdir)/csum.c $(srcdir)/ext2_fs.h \
  $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \


More information about the kernel-team mailing list