Merge "android/perms.c: clean up error handling"
diff --git a/.hgignore b/.hgignore
deleted file mode 100644
index bc0bb6b..0000000
--- a/.hgignore
+++ /dev/null
@@ -1,7 +0,0 @@
-^autom4te.cache
-^build
-^FILES
-^core
-~$
-^.pc
-^patches
diff --git a/.release-checklist b/.release-checklist
index 414265c..c8a6fc2 100644
--- a/.release-checklist
+++ b/.release-checklist
@@ -11,6 +11,7 @@
 	README
 	RELEASE-NOTES
 	e2fsprogs.lsm
+	e2fsprogs.spec
 	doc/libext2fs.texinfo (three places)
 
 6)  Make source distribution
diff --git a/MCONFIG.in b/MCONFIG.in
index 22b74eb..7ca86ac 100644
--- a/MCONFIG.in
+++ b/MCONFIG.in
@@ -32,6 +32,14 @@
 infodir = @infodir@
 datadir = @datadir@
 pkgconfigdir = $(libdir)/pkgconfig
+pkglibdir = $(libdir)/e2fsprogs
+
+HAVE_UDEV = @have_udev@
+UDEV_RULES_DIR = @pkg_udev_rules_dir@
+HAVE_CROND = @have_crond@
+CROND_DIR = @crond_dir@
+HAVE_SYSTEMD = @have_systemd@
+SYSTEMD_SYSTEM_UNIT_DIR = @systemd_system_unit_dir@
 
 @SET_MAKE@
 
@@ -73,21 +81,24 @@
 @ifNotGNUmake@ CHECK_CMD=true
 @ifNotGNUmake@ CPPCHECK_CMD=true
 
+SANITIZER_CFLAGS = @lto_cflags@ @ubsan_cflags@ @addrsan_cflags@ @threadsan_cflags@
+SANITIZER_LDFLAGS = @lto_ldflags@ @ubsan_ldflags@ @addrsan_ldflags@ @threadsan_ldflags@
+
 CC = @CC@
 BUILD_CC = @BUILD_CC@
 CFLAGS = @CFLAGS@
 CFLAGS_SHLIB = @CFLAGS_SHLIB@
 CFLAGS_STLIB = @CFLAGS_STLIB@
 CPPFLAGS = @INCLUDES@
-ALL_CFLAGS = $(CPPFLAGS) $(CFLAGS) $(CFLAGS_WARN) @DEFS@ $(LOCAL_CFLAGS)
-ALL_CFLAGS_SHLIB = $(CPPFLAGS) $(CFLAGS_SHLIB) $(CFLAGS_WARN) @DEFS@ $(LOCAL_CFLAGS)
-ALL_CFLAGS_STLIB = $(CPPFLAGS) $(CFLAGS_STLIB) $(CFLAGS_WARN) @DEFS@ $(LOCAL_CFLAGS)
-LDFLAGS = @LDFLAGS@
-LDFLAGS_SHLIB = @LDFLAGS_SHLIB@
+ALL_CFLAGS = $(CPPFLAGS) $(SANITIZER_CFLAGS) $(CFLAGS) $(CFLAGS_WARN) @DEFS@ $(LOCAL_CFLAGS)
+ALL_CFLAGS_SHLIB = $(CPPFLAGS) $(SANITIZER_CFLAGS) $(CFLAGS_SHLIB) $(CFLAGS_WARN) @DEFS@ $(LOCAL_CFLAGS)
+ALL_CFLAGS_STLIB = $(CPPFLAGS) $(SANITIZER_CFLAGS) $(CFLAGS_STLIB) $(CFLAGS_WARN) @DEFS@ $(LOCAL_CFLAGS)
+LDFLAGS = $(SANITIZER_LDFLAGS) @LDFLAGS@
+LDFLAGS_SHLIB = $(SANITIZER_LDFLAGS) @LDFLAGS_SHLIB@
 ALL_LDFLAGS = $(LDFLAGS) @LDFLAG_DYNAMIC@
-LDFLAGS_STATIC = @LDFLAGS_STATIC@
-BUILD_CFLAGS = @BUILD_CFLAGS@
-BUILD_LDFLAGS = @BUILD_LDFLAGS@
+LDFLAGS_STATIC = $(SANITIZER_LDFLAGS) @LDFLAGS_STATIC@
+BUILD_CFLAGS = $(SANITIZER_CFLAGS) @BUILD_CFLAGS@
+BUILD_LDFLAGS = $(SANITIZER_LDFLAGS) @BUILD_LDFLAGS@
 RDYNAMIC = @RDYNAMIC@
 LINK_BUILD_FLAGS = @LINK_BUILD_FLAGS@
 LINK_INSTALL_FLAGS = @LINK_INSTALL_FLAGS@
@@ -110,7 +121,7 @@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
-MKINSTALLDIRS = @MKINSTALLDIRS@
+MKDIR_P = @MKDIR_P@
 
 #
 # Library definitions
diff --git a/Makefile.in b/Makefile.in
index 37b6069..b951c01 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -13,10 +13,17 @@
 @DEBUGFS_CMT@DEBUGFS_DIR= debugfs
 @UUID_CMT@UUID_LIB_SUBDIR= lib/uuid
 @BLKID_CMT@BLKID_LIB_SUBDIR= lib/blkid
-SUPPORT_LIB_SUBDIR= lib/support
+@E2SCRUB_CMT@E2SCRUB_DIR= scrub
+@ALL_CMT@SUPPORT_LIB_SUBDIR= lib/support
+@ALL_CMT@E2P_LIB_SUBDIR= lib/e2p
+@ALL_CMT@EXT2FS_LIB_SUBDIR= lib/ext2fs
 
-LIB_SUBDIRS=lib/et lib/ss lib/e2p $(UUID_LIB_SUBDIR) $(BLKID_LIB_SUBDIR) $(SUPPORT_LIB_SUBDIR) lib/ext2fs intl
-PROG_SUBDIRS=e2fsck $(DEBUGFS_DIR) misc $(RESIZE_DIR) tests/progs po
+LIB_SUBDIRS=lib/et lib/ss $(E2P_LIB_SUBDIR) $(UUID_LIB_SUBDIR) \
+	$(BLKID_LIB_SUBDIR) $(SUPPORT_LIB_SUBDIR) $(EXT2FS_LIB_SUBDIR) intl
+
+PROG_SUBDIRS=e2fsck $(DEBUGFS_DIR) misc $(RESIZE_DIR) tests/progs po \
+	$(E2SCRUB_DIR)
+
 SUBDIRS=util $(LIB_SUBDIRS) $(PROG_SUBDIRS) tests
 
 SUBS= util/subst.conf lib/config.h $(top_builddir)/lib/dirpaths.h \
@@ -26,8 +33,8 @@
 
 all:: subs
 	$(MAKE) libs
-	$(MAKE) progs
-	$(MAKE) docs
+@ALL_CMT@	$(MAKE) progs
+@ALL_CMT@	$(MAKE) docs
 
 subs: $(DEP_SUBSTITUTE)
 	@for i in $(SUBS) ; do if test -d `dirname $$i` ; \
@@ -38,12 +45,9 @@
 
 progs: all-progs-recursive
 libs: all-libs-recursive
-all-progs-recursive all-libs-recursive: subs
+all-progs-recursive all-libs-recursive:: subs
 
-e2fsprogs.spec: $(DEP_SUBSTITUTE) e2fsprogs.spec.in
-	cd $(top_builddir); CONFIG_FILES=./e2fsprogs.spec ./config.status
-
-rpm: e2fsprogs.spec
+rpm:
 	sh contrib/build-rpm
 
 docs:
@@ -63,7 +67,7 @@
 
 install: subs all-libs-recursive install-progs-recursive \
   install-shlibs-libs-recursive install-doc-libs
-	if test ! -d e2fsck && test ! -d debugfs && test ! -d misc && test ! -d ext2ed ; then $(MAKE) install-libs ; fi
+@SUBSET_CMT@	$(MAKE) install-libs
 
 install-strip: subs all-libs-recursive install-strip-progs-recursive \
   install-shlibs-strip-libs-recursive install-doc-libs
@@ -90,19 +94,23 @@
 	done
 
 all-progs-recursive install-progs-recursive install-strip-progs-recursive \
-  uninstall-progs-recursive coverage.txt-progs-recursive: all-libs-recursive
-	@for subdir in $(PROG_SUBDIRS); do \
-	  if test -d $$subdir ; then \
-	    target=`echo $@|$(SED) 's/-progs-recursive//'`; \
-	    echo making $$target in $$subdir; \
-	    (cd $$subdir && $(MAKE) $$target) || exit 1; \
-	  fi ; \
-	done
+  uninstall-progs-recursive coverage.txt-progs-recursive:: all-libs-recursive
+
+
+@ALL_CMT@all-progs-recursive install-progs-recursive install-strip-progs-recursive \
+@ALL_CMT@  uninstall-progs-recursive coverage.txt-progs-recursive:: all-libs-recursive
+@ALL_CMT@	@for subdir in $(PROG_SUBDIRS); do \
+@ALL_CMT@	  if test -d $$subdir ; then \
+@ALL_CMT@	    target=`echo $@|$(SED) 's/-progs-recursive//'`; \
+@ALL_CMT@	    echo making $$target in $$subdir; \
+@ALL_CMT@	    (cd $$subdir && $(MAKE) $$target) || exit 1; \
+@ALL_CMT@	  fi ; \
+@ALL_CMT@	done
 
 all-libs-recursive install-libs-recursive install-strip-libs-recursive \
   uninstall-libs-recursive install-shlibs-libs-recursive \
   install-shlibs-strip-libs-recursive uninstall-shlibs-libs-recursive \
-  coverage.txt-libs-recursive:
+  coverage.txt-libs-recursive::
 	@for subdir in $(LIB_SUBDIRS); do \
 	  if test -d $$subdir ; then \
 	    target=`echo $@|$(SED) 's/-libs-recursive//'`; \
@@ -117,7 +125,7 @@
 	$(RM) -f $(SUBS) 
 
 distclean: distclean-doc distclean-recursive
-	$(RM) -rf autom4te.cache e2fsprogs.spec ext2ed/Makefile po/stamp-po \
+	$(RM) -rf autom4te.cache ext2ed/Makefile po/stamp-po \
 		asm_types.h config.log public_config.h parse-types.log
 	$(MAKE) distclean-local 
 
diff --git a/README b/README
index 6612235..1d2bddd 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-	This is the new version (1.44.3) of the second extended file
+	This is the new version (1.44.4) of the second extended file
 system management programs.
 
 	From time to time, I release new versions of e2fsprogs, to fix
diff --git a/README.subset b/README.subset
deleted file mode 100644
index 70ed4b2..0000000
--- a/README.subset
+++ /dev/null
@@ -1,15 +0,0 @@
-This distribution contains a subset of the e2fsprogs package; it
-contains the base libraries (ss, et, uuid, blkid) which may be used by
-other non-ext2-related applications.
-
-This may be useful for non-Linux operating systems that need these
-libraries for GNOME, but who do not need the ext2/ext3 filesystem
-utilities.
-
-The full e2fsprogs distributions can be found at the e2fsprogs web
-page, which is:
-
-	http://e2fsprogs.sourceforge.net
-
-In case of bugs in these libraries, please contact Ted Ts'o at
-tytso@mit.edu or tytso@alum.mit.edu.
diff --git a/README.version b/README.version
index 55f9400..96ec189 100644
--- a/README.version
+++ b/README.version
@@ -1,3 +1,3 @@
-URL: https://www.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/testing/v1.44.3/e2fsprogs.1.44.3.tar.gz
-Version: 1.44.3
+URL: https://www.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/testing/v1.44.4/e2fsprogs.1.44.4.tar.gz
+Version: 1.44.4
 BugComponent: 95221
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index ab4a7c8..f32cdcd 120000
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -1 +1 @@
-doc/RelNotes/v1.44.3.txt
\ No newline at end of file
+doc/RelNotes/v1.44.4.txt
\ No newline at end of file
diff --git a/TODO b/TODO
deleted file mode 100644
index a622bec..0000000
--- a/TODO
+++ /dev/null
@@ -1,277 +0,0 @@
-Need to process the bad block inode *before* doing the inode scan.
-
-Also check to see if the first block of the inode table is not on the
-bad block scan, and fix that.  We need to check for an inaccurate
-blocks, and fix them before we start doing anything else with the
-filesystem!
-
----------------------------------------------------
-User request:
-
-BTW: Could you please add some sort of deleted and possibly corrupted file
-     and inode list to e2fsck report. There should be filenames deleted
-     from directory inodes, files with duplicate blocks e.t.c.
-     It's pretty annoying to filter this information from e2fsck output
-     by hand :-
-
-------------------------------------------
-
-Add a "answer Yes always to this class of question" response.
-
-----------------------------------
-
-ext2fs_flush() should return a different error message for primary
-versus backup superblock flushing, so that mke2fs can print an
-appropriate error message.
-
----------------------------------
-Date: Mon, 08 Mar 1999 21:46:14 +0100
-From: Sergio Polini <s.polini@mclink.it>
-
-
-I'm reading the source code of e2fsck 1.14.
-In pass2.c, lines 352-357, I read:
-
-if ((dirent->name_len & 0xFF) > EXT2_NAME_LEN) {
-        if (fix_problem(ctx, PR_2_FILENAME_LONG, &cd->pctx)) {
-                dirent->name_len = EXT2_NAME_LEN;
-                dir_modified++;
-        }
-}
-
-I think that I'll never see any messages about too long filenames,
-because "whatever & 0xFF" can never be "> 0xFF".
-Am I wrong?
---------------------------------------
-
-Add chmod command to debugfs.
-
-------------------------------------------
-
-Date: Tue, 18 Jan 2000 17:54:53 -0800 (PST)
-From: Alan Blanchard <alan@abraxas.to>
-To: tytso@MIT.EDU
-Subject: DEBUGFS - thanks and a feature idea
-Content-Type: TEXT/PLAIN; charset=US-ASCII
-
-Theodore:
-
-First, let me thank you for writing debugfs. Recently, my Linux box
-(RH 6.0, 400 MHz PIII, on a DSL line) was hacked into.  The intruder did
-an "rm -Rf" on a 34 GB drive with about 5GB of data on it.  I was able to
-restore essentially the entire thing with debugfs and a bit of C code and Perl.
-Actually, I could have done the entire thing with debugfs and Perl, but I
-thought it would be too slow.
-
-During this exercise, I noticed that one small feature was lacking that would
-have made my job a bit easier.  The length of a deleted directory is
-reported as 0, hence debugfs won't dump the contents of the directory to a
-file using the "dump" command.  The only thing that saved me was that the
-list of disk blocks is not zeroed out.  I was able to dump the contents of the
-directories by using debugfs to get the relevant block numbers, then
-using dd to get the actual data.
-
-If debugfs had a feature where it ignored the size of a directory reported by
-the inode and instead just dumped all the blocks, it would have facilitated
-things a bit. This seems like a very easy feature to add.
-
-Again, thanks for writing debugfs (and all the other Linux stuff you've written!).
-
-Cheers,
-Alan Blanchard
-alan@abraxas.to
-
-
--------------------------------------------------------------------
-
-Date: Fri, 21 Jan 2000 14:07:12 -0800
-From: "H. Peter Anvin" <hpa@www.transmeta.com>
-Subject: mkfs -cc and fsck -c
-
-b) An option to mkfs to zero the partition.  Yes, it can be done with
-dd, but it would be a nicer way of doing it.
-
-------------------------------------------------------------------
-
-Add support for in ext2fs_block_iterate() for a returning the
-compressed flag blocks to block_iterate.  Change default to not return
-EXT2_COMPRESSED_BLKADDR.  Change e2fsck to pass this flag in.
-
-(The old compression patches did this by default all the time, which
-is bad, since it meant e2fsck never saw the EXT2_COMPRESSED_BLKADDR
-flagword.
-
-------------------------------------------------------------
-
-E2fsck should offer to clear all the blocks in an indirect block, not
-the entire inode, so there's better recovery for when an indirect
-block gets trashed.
-
-
--------------------------------------------------------------
-
-From: Yann Dirson - LOGATIQUE <Yann.Dirson@France.Sun.COM>
-Date: Thu, 2 Mar 2000 13:52:13 +0100 (MET)
-
-During my experiments on the broken system, I noticed the following in
-the badblocks program (which I'm aware is not designed for IDE drives)
-- I'd probably have already fixed them if my home system was up :(
-
-* the syntax summary documents 2nd arg as blocks_count, which should
-probably read something like end_count.
-
-* testing past end of device is not detected, and lists those blocks
-as bad, whereas they simply do not exist.
-
-
-I think I'll probably add a "max count" option to findsuper(8), so
-that I do not have to wait for the whole disk to be scanned when the
-system had to be launched with "init=/bin/sh", in which case Ctrl-[CZ]
-and friends appear to be absolutely ignored.
-
-
-Somewhat unrelated, I just noticed the
-http://web.mit.edu/tytso/www/linux/ext2.html could be updated:
-
-- could mention SGI xfs (http://oss.sgi.com/projects/xfs/ - they just
-  release 0.03 snapshot)
-
-----------------------------------------------------------------
-
-Return-Path: <tytso@MIT.EDU>
-Date: Thu, 10 Feb 2000 13:20:14 -0500
-From: "Theodore Y. Ts'o" <tytso@MIT.EDU>
-To: R.E.Wolff@BitWizard.nl
-In-Reply-To: Rogier Wolff's message of Thu, 10 Feb 2000 08:46:30 +0100 (MET),
-	<200002100746.IAA24573@cave.bitwizard.nl>
-Subject: Re: e2fsck request for enhancement.
-Phone: (781) 391-3464
-
-   Date: Thu, 10 Feb 2000 08:46:30 +0100 (MET)
-   From: R.E.Wolff@BitWizard.nl (Rogier Wolff)
-
-   Lately, while trying to recover a broken disk, my system froze (twice,
-   until I tried something else) while copying the disk.
-
-   So I had a file of about 50Mb that was growing frantically at the
-   moment of the crash.
-
-   e2fsck, then finds an indirect block that is completely bogus. It
-   starts by asking me if it's ok to clear a few of the referenced
-   blocks. I say yes. Then it comes to the conclusion: 
-
-      too many invalid blocks. Clear inode?
-
-   and then I get the option to delete the whole file. Not to truncate
-   the file to a "working" size.
-
-
-   I'd MUCH rather have e2fsck say something like:
-
-      inode 1234 references an invalid block 134345454. Hmm.
-      inode 1234 references 567 out of 50176 invalid blocks, 
-			  all near the end. Truncate file to 49152 blocks?
-
-   Here you can see that of the 1024 blocks near the end of the file,
-   only 567 were detected as invalid. However now 48Mb of the file will
-   be recovered, instead of thrown away.
-
-That's a good point.  Actually, the right thing is for e2fsck to offer
-to clear all of the bad blocks in a particular indirect block.  I don't
-know how hard it would be to do that, but I'll put it on my e2fsprogs
-TODO list.
-
-							- Ted
-
----------------------------------------------------------------
-From e2fsprogs Debian TODO file as of 1.10-13.
-
-* Maybe make -dbg packages. Look at how others do it.
-
----------------------------------------------------------------
-
-Add --lba option to debian icheck command, and have ways of making it
-easier to translate LBA to filesystem block numbers.
-
--------------------------------------------------------
-
-
-
-List of projects for e2fsprogs:
-
-
-1) Make debugfs's "ncheck <inode>" command list all of the pathnames
-to an inode, not just only the first link to the inode which is found.
-(A good "intro to libext2fs programming interfaces project)
-
-	Difficulty: Low		Priority: Low
-
-2) Use a code coverage tool such as Rational's PureCoverage to see
-what kind of code coverage we have for e2fsck, and try to add test
-cases to increase the code coverage for e2fsck.
-
-	Difficulty: Medium	Priorty: Low
-
-3) Use a code coverage tool such as Rational's PureCoverage to see
-what kind of code coverage we have for resize2fs, and try to add test
-cases to increase the code coverage for resize2fs.
-
-	Difficulty: Medium	Priorty: Medium
-
-4) Create a new I/O manager (i.e., test_io.c, unix_io.c, et.al.) which
-layers on top of an existing I/O manager which provides copy-on-write
-functionality.  This COW I/O manager takes will take two open I/O
-managers, call them "base" and "changed".  The "base" I/O manager is
-opened read/only, so any changes are written instead to the "changed"
-I/O manager, in a compact, non-sparse format containing the intended
-modification to the "base" filesystem.  
-
-This will allow resize2fs to figure out what changes need to made to
-extend a filesystem, or expand the size of inodes in the inode table,
-and the changes can be pushed the filesystem in one fell swoop.  (If
-the system crashes; the program which runs the "changed" file can be
-re-run, much like a journal replay.  My assumption is that the COW
-file will contain the filesystem UUID in a the COW superblock, and the
-COW file will be stored in some place such as /var/state/e2fsprogs,
-with an init.d file to automate the replay so we can recover cleanly
-from a crash during the resize2fs process.)
-
-	Difficulty: Medium	Priority: Medium
-
-5) Create a new I/O manager (i.e., test_io.c, unix_io.c, et.al.) which
-layers on top of an existing I/O manager which provides an "undo"
-functionality.  This undo I/O manager takes will take two open I/O
-managers, call them "base" and "undo".  The "base" I/O manager is be
-opened read/write, and when any writes are sent to the I/O manager,
-the I/O manager will check the "undo" I/O manager, using a file format
-identical to the one found in (5) above.  
-
-This is useful for allowing e2fsck to create an "undo" file, which
-would make things like "e2fsck -y" much safer.
-
-	Difficulty: Low (once 5 is done)  Priority: Low
-
-6) Modify resize2fs so that it can relocate and reorganize the
-filesystem in the following ways: (1) increase the inode size, so that
-an existing filesystem can use the EA-in-inode kernel patch, (2)
-reserve blocks in the resize inode to allow for on-line resizing.  Use
-the COW I/O manager described in (5) in order to provide robustness in
-case of a crash during the resize/reorganization operation.  
-
-	Difficulty: High	Priority: Medium
-
-7) Review the EA-in-inode patches to e2fsck for correctness/code
-cleanliness.  (I will probably have to do this myself -- Ted)
-
-	Difficulty: High	Priorty: Medium
-
-8) Add support for extent maps to e2fsprogs.  I need to review the
-extent maps first/in parallel. 
-
-	Difficulty: High	Priority: Medium
-
-----------------------------------
-
-Need to deal with the case where the resize inode overlaps with the
-bad blocks inode.
-
diff --git a/acinclude.m4 b/acinclude.m4
index 912383a..e9890f7 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -133,21 +133,3 @@
         AC_SUBST(ifGNUmake)
         AC_SUBST(ifNotGNUmake)
 ] )
-# was originally from nls.m4 serial 1 (gettext-0.12)
-AC_DEFUN([AM_MKINSTALLDIRS],
-[
-  dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
-  dnl find the mkinstalldirs script in another subdir but $(top_srcdir).
-  dnl Try to locate it.
-  MKINSTALLDIRS=
-  if test -n "$ac_aux_dir"; then
-    case "$ac_aux_dir" in
-      /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;;
-      *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;;
-    esac
-  fi
-  if test -z "$MKINSTALLDIRS"; then
-    MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
-  fi
-  AC_SUBST(MKINSTALLDIRS)
-])
diff --git a/config/ltmain.sh b/config/ltmain.sh
new file mode 120000
index 0000000..8cff389
--- /dev/null
+++ b/config/ltmain.sh
@@ -0,0 +1 @@
+/usr/share/libtool/build-aux/ltmain.sh
\ No newline at end of file
diff --git a/configure b/configure
index c7853d1..af71919 100755
--- a/configure
+++ b/configure
@@ -625,12 +625,21 @@
 ac_func_list=
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
+systemd_system_unit_dir
+have_systemd
+systemd_LIBS
+systemd_CFLAGS
+crond_dir
+have_crond
+pkg_udev_rules_dir
+have_udev
+udev_LIBS
+udev_CFLAGS
 LDFLAGS_SHLIB
 CFLAGS_STLIB
 CFLAGS_SHLIB
 BUILD_LDFLAGS
 BUILD_CFLAGS
-MKINSTALLDIRS
 INCLUDES
 DO_TEST_SUITE
 LDFLAGS_STATIC
@@ -639,9 +648,24 @@
 root_sbindir
 root_bindir
 root_prefix
+E2SCRUB_CMT
 UNIX_CMT
 CYGWIN_CMT
 LINUX_CMT
+threadsan_ldflags
+threadsan_cflags
+have_threadsan
+addrsan_ldflags
+addrsan_cflags
+have_addrsan
+ubsan_ldflags
+ubsan_cflags
+have_ubsan
+lto_ldflags
+lto_cflags
+have_lto
+gcc_ranlib
+gcc_ar
 UNI_DIFF_OPTS
 SEM_INIT_LIB
 FUSE_CMT
@@ -742,6 +766,8 @@
 RESIZER_CMT
 IMAGER_CMT
 DEBUGFS_CMT
+SUBSET_CMT
+ALL_CMT
 BLKID_CMT
 DEPPROFILED_LIBBLKID
 PROFILED_LIBBLKID
@@ -795,6 +821,7 @@
 build_vendor
 build_cpu
 build
+E2FSPROGS_DATE
 E2FSPROGS_PKGVER
 E2FSPROGS_VERSION
 E2FSPROGS_DAY
@@ -869,6 +896,7 @@
 enable_testio_debug
 enable_libuuid
 enable_libblkid
+enable_subset
 enable_backtrace
 enable_debugfs
 enable_imager
@@ -891,7 +919,14 @@
 with_included_gettext
 with_libintl_prefix
 enable_fuse2fs
+enable_lto
+enable_ubsan
+enable_addrsan
+enable_threadsan
 with_multiarch
+with_udev_rules_dir
+with_crond_dir
+with_systemd_unit_dir
 '
       ac_precious_vars='build_alias
 host_alias
@@ -904,7 +939,11 @@
 CPP
 PKG_CONFIG
 PKG_CONFIG_PATH
-PKG_CONFIG_LIBDIR'
+PKG_CONFIG_LIBDIR
+udev_CFLAGS
+udev_LIBS
+systemd_CFLAGS
+systemd_LIBS'
 
 
 # Initialize some variables set by options.
@@ -1543,6 +1582,7 @@
   --disable-testio-debug  disable the use of the test I/O manager for debugging
   --enable-libuuid	  build and use private uuid library
   --enable-libblkid	  build and use private blkid library
+  --enable-subset  	  enable subset-only build
   --disable-backtrace	  disable use backtrace
   --disable-debugfs   	  disable support of debugfs program
   --disable-imager   	  disable support of e2image program
@@ -1562,6 +1602,10 @@
   --disable-threads       build without multithread safety
   --disable-rpath         do not hardcode runtime library paths
   --disable-fuse2fs	  do not build fuse2fs
+  --enable-lto		  enable link time optimization
+  --enable-ubsan	  enable undefined behavior sanitizer
+  --enable-addrsan	  enable address sanitizer
+  --enable-threadsan	  enable thread sanitizer
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -1580,6 +1624,11 @@
   --with-libintl-prefix[=DIR]  search for libintl in DIR/include and DIR/lib
   --without-libintl-prefix     don't search for libintl in includedir and libdir
   --with-multiarch=ARCH specify the multiarch triplet
+  --with-udev-rules-dir[=DIR]
+                          Install udev rules into DIR.
+  --with-crond-dir[=DIR]  Install system crontabs into DIR.
+  --with-systemd-unit-dir[=DIR]
+                          Install systemd system units into DIR.
 
 Some influential environment variables:
   CC          C compiler command
@@ -1595,6 +1644,12 @@
               directories to add to pkg-config's search path
   PKG_CONFIG_LIBDIR
               path overriding pkg-config's built-in search path
+  udev_CFLAGS C compiler flags for udev, overriding pkg-config
+  udev_LIBS   linker flags for udev, overriding pkg-config
+  systemd_CFLAGS
+              C compiler flags for systemd, overriding pkg-config
+  systemd_LIBS
+              linker flags for systemd, overriding pkg-config
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
@@ -2758,11 +2813,11 @@
 BINARY_TYPE=bin
 E2FSPROGS_VERSION=`grep E2FSPROGS_VERSION ${srcdir}/version.h  \
 	| awk '{print $3}' | tr \" " " | awk '{print $1}'`
-DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
-	| tr \" " "`
-E2FSPROGS_DAY=$(echo $DATE | awk -F- '{print $1}' | sed -e '/^[1-9]$/s/^/0/')
-MONTH=`echo $DATE | awk -F- '{print $2}'`
-YEAR=`echo $DATE | awk -F- '{print $3}'`
+E2FSPROGS_DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
+	| tr \" " " | awk '{print $1}'`
+E2FSPROGS_DAY=$(echo $E2FSPROGS_DATE | awk -F- '{print $1}' | sed -e '/^[1-9]$/s/^/0/')
+MONTH=`echo $E2FSPROGS_DATE | awk -F- '{print $2}'`
+YEAR=`echo $E2FSPROGS_DATE | awk -F- '{print $3}'`
 
 if expr $YEAR ">" 1900 > /dev/null ; then
 	E2FSPROGS_YEAR=$YEAR
@@ -2813,6 +2868,7 @@
 
 
 
+
 WITH_DIET_LIBC=
 
 # Check whether --with-diet-libc was given.
@@ -5641,6 +5697,25 @@
 
 
 
+ALL_CMT=
+SUBSET_CMT=
+# Check whether --enable-subset was given.
+if test "${enable_subset+set}" = set; then :
+  enableval=$enable_subset; if test "$enableval" = "no"
+then
+	SUBSET_CMT=#
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Disabling subset-only build" >&5
+$as_echo "Disabling subset-only build" >&6; }
+else
+	ALL_CMT=#
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Enabling subset-only-build" >&5
+$as_echo "Enabling subset-only-build" >&6; }
+fi
+
+fi
+
+
+
 
 # Check whether --enable-backtrace was given.
 if test "${enable_backtrace+set}" = set; then :
@@ -11587,6 +11662,7 @@
 fi
 
 
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
 $as_echo_n "checking whether ln -s works... " >&6; }
 LN_S=$as_ln_s
@@ -13698,6 +13774,282 @@
 
 	;;
 esac
+# Check whether --enable-lto was given.
+if test "${enable_lto+set}" = set; then :
+  enableval=$enable_lto;
+else
+  enable_lto=no
+fi
+
+if test "$enable_lto" = "yes" || test "$enable_lto" = "probe"; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if C compiler supports LTO" >&5
+$as_echo_n "checking if C compiler supports LTO... " >&6; }
+	OLD_CFLAGS="$CFLAGS"
+	OLD_LDFLAGS="$LDFLAGS"
+	LTO_FLAGS="-g -flto -ffat-lto-objects"
+	CFLAGS="$CFLAGS $LTO_FLAGS"
+	LDFLAGS="$LDFLAGS $LTO_FLAGS"
+	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+		lto_cflags=$LTO_FLAGS
+		lto_ldflags=$LTO_FLAGS
+		# Extract the first word of "gcc-ar", so it can be a program name with args.
+set dummy gcc-ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_gcc_ar+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $gcc_ar in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_gcc_ar="$gcc_ar" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_gcc_ar="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+gcc_ar=$ac_cv_path_gcc_ar
+if test -n "$gcc_ar"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_ar" >&5
+$as_echo "$gcc_ar" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+		# Extract the first word of "gcc-ranlib", so it can be a program name with args.
+set dummy gcc-ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_gcc_ranlib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $gcc_ranlib in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_gcc_ranlib="$gcc_ranlib" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_gcc_ranlib="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+gcc_ranlib=$ac_cv_path_gcc_ranlib
+if test -n "$gcc_ranlib"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_ranlib" >&5
+$as_echo "$gcc_ranlib" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	if test -x "$gcc_ar" && test -x "$gcc_ranlib"; then
+		have_lto=yes
+		AR="${gcc_ar}"
+		RANLIB="${gcc_ranlib}"
+	fi
+	CFLAGS="${OLD_CFLAGS}"
+	LDFLAGS="${OLD_LDFLAGS}"
+
+
+
+fi
+if test "$enable_lto" = "yes" && test "$have_lto" != "yes"; then
+	as_fn_error $? "LTO not supported by compiler." "$LINENO" 5
+fi
+# Check whether --enable-ubsan was given.
+if test "${enable_ubsan+set}" = set; then :
+  enableval=$enable_ubsan;
+else
+  enable_ubsan=no
+fi
+
+if test "$enable_ubsan" = "yes" || test "$enable_ubsan" = "probe"; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if C compiler supports UBSAN" >&5
+$as_echo_n "checking if C compiler supports UBSAN... " >&6; }
+	OLD_CFLAGS="$CFLAGS"
+	OLD_LDFLAGS="$LDFLAGS"
+	UBSAN_FLAGS="-fsanitize=undefined"
+	CFLAGS="$CFLAGS $UBSAN_FLAGS"
+	LDFLAGS="$LDFLAGS $UBSAN_FLAGS"
+	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+		ubsan_cflags=$UBSAN_FLAGS
+		ubsan_ldflags=$UBSAN_FLAGS
+		have_ubsan=yes
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	CFLAGS="${OLD_CFLAGS}"
+	LDFLAGS="${OLD_LDFLAGS}"
+
+
+
+fi
+if test "$enable_ubsan" = "yes" && test "$have_ubsan" != "yes"; then
+	as_fn_error $? "UBSAN not supported by compiler." "$LINENO" 5
+fi
+# Check whether --enable-addrsan was given.
+if test "${enable_addrsan+set}" = set; then :
+  enableval=$enable_addrsan;
+else
+  enable_addrsan=no
+fi
+
+if test "$enable_addrsan" = "yes" || test "$enable_addrsan" = "probe"; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if C compiler supports ADDRSAN" >&5
+$as_echo_n "checking if C compiler supports ADDRSAN... " >&6; }
+	OLD_CFLAGS="$CFLAGS"
+	OLD_LDFLAGS="$LDFLAGS"
+	ADDRSAN_FLAGS="-fsanitize=address"
+	CFLAGS="$CFLAGS $ADDRSAN_FLAGS"
+	LDFLAGS="$LDFLAGS $ADDRSAN_FLAGS"
+	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+		addrsan_cflags=$ADDRSAN_FLAGS
+		addrsan_ldflags=$ADDRSAN_FLAGS
+		have_addrsan=yes
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	CFLAGS="${OLD_CFLAGS}"
+	LDFLAGS="${OLD_LDFLAGS}"
+
+
+
+fi
+if test "$enable_addrsan" = "yes" && test "$have_addrsan" != "yes"; then
+	as_fn_error $? "ADDRSAN not supported by compiler." "$LINENO" 5
+fi
+# Check whether --enable-threadsan was given.
+if test "${enable_threadsan+set}" = set; then :
+  enableval=$enable_threadsan;
+else
+  enable_threadsan=no
+fi
+
+if test "$enable_threadsan" = "yes" || test "$enable_threadsan" = "probe"; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if C compiler supports THREADSAN" >&5
+$as_echo_n "checking if C compiler supports THREADSAN... " >&6; }
+	OLD_CFLAGS="$CFLAGS"
+	OLD_LDFLAGS="$LDFLAGS"
+	THREADSAN_FLAGS="-fsanitize=thread"
+	CFLAGS="$CFLAGS $THREADSAN_FLAGS"
+	LDFLAGS="$LDFLAGS $THREADSAN_FLAGS"
+	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+		threadsan_cflags=$THREADSAN_FLAGS
+		threadsan_ldflags=$THREADSAN_FLAGS
+		have_threadsan=yes
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	CFLAGS="${OLD_CFLAGS}"
+	LDFLAGS="${OLD_LDFLAGS}"
+
+
+
+fi
+if test "$enable_threadsan" = "yes" && test "$have_threadsan" != "yes"; then
+	as_fn_error $? "THREADSAN not supported by compiler." "$LINENO" 5
+fi
+if test "$have_threadsan" = "yes" && test "$have_addrsan" = "yes"; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ADDRSAN and THREADSAN are not known to work together." >&5
+$as_echo "$as_me: WARNING: ADDRSAN and THREADSAN are not known to work together." >&2;}
+fi
 LINUX_CMT="#"
 CYGWIN_CMT="#"
 UNIX_CMT=
@@ -13713,6 +14065,8 @@
 
 
 
+E2SCRUB_CMT="$LINUX_CMT"
+
 case "$host_os" in
 linux* | gnu* | k*bsd*-gnu)
 	if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
@@ -13789,6 +14143,7 @@
 fi
 
 fi
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can link with -static" >&5
 $as_echo_n "checking whether we can link with -static... " >&6; }
 if ${ac_cv_e2fsprogs_use_static+:} false; then :
@@ -13853,19 +14208,6 @@
 	INCLUDES="$INCLUDES -D_REENTRANT"
 fi
 
-
-        MKINSTALLDIRS=
-  if test -n "$ac_aux_dir"; then
-    case "$ac_aux_dir" in
-      /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;;
-      *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;;
-    esac
-  fi
-  if test -z "$MKINSTALLDIRS"; then
-    MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
-  fi
-
-
 if test $cross_compiling = no; then
    BUILD_CFLAGS="$CFLAGS $CPPFLAGS $INCLUDES -DHAVE_CONFIG_H"
    BUILD_LDFLAGS="$LDFLAGS"
@@ -13878,6 +14220,282 @@
 
 
 
+
+
+# Check whether --with-udev_rules_dir was given.
+if test "${with_udev_rules_dir+set}" = set; then :
+  withval=$with_udev_rules_dir;
+else
+  with_udev_rules_dir=yes
+fi
+
+if test "x${with_udev_rules_dir}" != "xno"; then :
+
+	if test "x${with_udev_rules_dir}" = "xyes"; then :
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for udev" >&5
+$as_echo_n "checking for udev... " >&6; }
+
+if test -n "$udev_CFLAGS"; then
+    pkg_cv_udev_CFLAGS="$udev_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"udev\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "udev") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_udev_CFLAGS=`$PKG_CONFIG --cflags "udev" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$udev_LIBS"; then
+    pkg_cv_udev_LIBS="$udev_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"udev\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "udev") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_udev_LIBS=`$PKG_CONFIG --libs "udev" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        udev_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "udev" 2>&1`
+        else
+	        udev_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "udev" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$udev_PKG_ERRORS" >&5
+
+
+			with_udev_rules_dir=""
+
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+			with_udev_rules_dir=""
+
+else
+	udev_CFLAGS=$pkg_cv_udev_CFLAGS
+	udev_LIBS=$pkg_cv_udev_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+			with_udev_rules_dir="$($PKG_CONFIG --variable=udevdir udev)/rules.d"
+
+fi
+
+fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for udev rules dir" >&5
+$as_echo_n "checking for udev rules dir... " >&6; }
+	pkg_udev_rules_dir="${with_udev_rules_dir}"
+	if test -n "${pkg_udev_rules_dir}"; then :
+
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${pkg_udev_rules_dir}" >&5
+$as_echo "${pkg_udev_rules_dir}" >&6; }
+		have_udev="yes"
+
+else
+
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+		have_udev="no"
+
+fi
+
+else
+
+	have_udev="disabled"
+
+fi
+
+
+
+
+# Check whether --with-crond_dir was given.
+if test "${with_crond_dir+set}" = set; then :
+  withval=$with_crond_dir;
+else
+  with_crond_dir=yes
+fi
+
+if test "x${with_crond_dir}" != "xno"; then :
+
+	if test "x${with_crond_dir}" = "xyes"; then :
+
+		if test -d "/etc/cron.d"; then :
+  with_crond_dir="/etc/cron.d"
+fi
+
+fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for system crontab dir" >&5
+$as_echo_n "checking for system crontab dir... " >&6; }
+	crond_dir="${with_crond_dir}"
+	if test -n "${crond_dir}"; then :
+
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${crond_dir}" >&5
+$as_echo "${crond_dir}" >&6; }
+		have_crond="yes"
+
+else
+
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+		have_crond="no"
+
+fi
+
+else
+
+	have_crond="disabled"
+
+fi
+
+
+
+
+# Check whether --with-systemd_unit_dir was given.
+if test "${with_systemd_unit_dir+set}" = set; then :
+  withval=$with_systemd_unit_dir;
+else
+  with_systemd_unit_dir=yes
+fi
+
+if test "x${with_systemd_unit_dir}" != "xno"; then :
+
+	if test "x${with_systemd_unit_dir}" = "xyes"; then :
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for systemd" >&5
+$as_echo_n "checking for systemd... " >&6; }
+
+if test -n "$systemd_CFLAGS"; then
+    pkg_cv_systemd_CFLAGS="$systemd_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"systemd\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "systemd") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_systemd_CFLAGS=`$PKG_CONFIG --cflags "systemd" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$systemd_LIBS"; then
+    pkg_cv_systemd_LIBS="$systemd_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"systemd\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "systemd") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_systemd_LIBS=`$PKG_CONFIG --libs "systemd" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        systemd_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "systemd" 2>&1`
+        else
+	        systemd_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "systemd" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$systemd_PKG_ERRORS" >&5
+
+
+			with_systemd_unit_dir=""
+
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+			with_systemd_unit_dir=""
+
+else
+	systemd_CFLAGS=$pkg_cv_systemd_CFLAGS
+	systemd_LIBS=$pkg_cv_systemd_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+			with_systemd_unit_dir="$($PKG_CONFIG --variable=systemdsystemunitdir systemd)"
+
+fi
+
+
+fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for systemd system unit dir" >&5
+$as_echo_n "checking for systemd system unit dir... " >&6; }
+	systemd_system_unit_dir="${with_systemd_unit_dir}"
+	if test -n "${systemd_system_unit_dir}"; then :
+
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${systemd_system_unit_dir}" >&5
+$as_echo "${systemd_system_unit_dir}" >&6; }
+		have_systemd="yes"
+
+else
+
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+		have_systemd="no"
+
+fi
+
+else
+
+	have_systemd="disabled"
+
+fi
+
+
+
 test -d lib || mkdir lib
 test -d include || mkdir include
 test -d include/linux || mkdir include/linux
@@ -13890,7 +14508,7 @@
 	blkid_out_list="lib/blkid/Makefile lib/blkid/blkid.pc \
 		lib/blkid/blkid_types.h"
 fi
-for i in MCONFIG Makefile e2fsprogs.spec \
+for i in MCONFIG Makefile \
 	util/Makefile util/subst.conf util/gen-tarball util/install-symlink \
 	lib/et/Makefile lib/ss/Makefile lib/e2p/Makefile \
 	lib/ext2fs/Makefile lib/ext2fs/ext2_types.h \
@@ -13899,7 +14517,7 @@
 	misc/Makefile ext2ed/Makefile e2fsck/Makefile \
 	debugfs/Makefile tests/Makefile tests/progs/Makefile \
 	resize/Makefile doc/Makefile intl/Makefile \
-	intl/libgnuintl.h po/Makefile.in ; do
+	intl/libgnuintl.h po/Makefile.in scrub/Makefile; do
 	if test -d `dirname ${srcdir}/$i` ; then
 		outlist="$outlist $i"
 	fi
diff --git a/configure.ac b/configure.ac
index 5e837c9..c378b81 100644
--- a/configure.ac
+++ b/configure.ac
@@ -11,11 +11,11 @@
 dnl
 E2FSPROGS_VERSION=`grep E2FSPROGS_VERSION ${srcdir}/version.h  \
 	| awk '{print $3}' | tr \" " " | awk '{print $1}'`
-DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
-	| tr \" " "`
-E2FSPROGS_DAY=$(echo $DATE | awk -F- '{print $1}' | sed -e '/^[[1-9]]$/s/^/0/')
-MONTH=`echo $DATE | awk -F- '{print $2}'`
-YEAR=`echo $DATE | awk -F- '{print $3}'`
+E2FSPROGS_DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
+	| tr \" " " | awk '{print $1}'`
+E2FSPROGS_DAY=$(echo $E2FSPROGS_DATE | awk -F- '{print $1}' | sed -e '/^[[1-9]]$/s/^/0/')
+MONTH=`echo $E2FSPROGS_DATE | awk -F- '{print $2}'`
+YEAR=`echo $E2FSPROGS_DATE | awk -F- '{print $3}'`
 
 if expr $YEAR ">" 1900 > /dev/null ; then
 	E2FSPROGS_YEAR=$YEAR
@@ -63,6 +63,7 @@
 AC_SUBST(E2FSPROGS_DAY)
 AC_SUBST(E2FSPROGS_VERSION)
 AC_SUBST(E2FSPROGS_PKGVER)
+AC_SUBST(E2FSPROGS_DATE)
 dnl
 dnl Use diet libc
 dnl 
@@ -565,6 +566,24 @@
 AC_SUBST(DEPPROFILED_LIBBLKID)
 AC_SUBST(BLKID_CMT)
 dnl
+dnl handle --enable-subset
+dnl
+ALL_CMT=
+SUBSET_CMT=
+AC_ARG_ENABLE([subset],
+[  --enable-subset  	  enable subset-only build],
+if test "$enableval" = "no"
+then
+	SUBSET_CMT=#
+	AC_MSG_RESULT([Disabling subset-only build])
+else
+	ALL_CMT=#
+	AC_MSG_RESULT([Enabling subset-only-build])
+fi
+,)
+AC_SUBST(ALL_CMT)
+AC_SUBST(SUBSET_CMT)
+dnl
 dnl handle --disable-backtrace
 dnl
 AH_TEMPLATE([DISABLE_BACKTRACE], [Define to 1 to disable use of backtrace])
@@ -862,6 +881,7 @@
 AC_PROG_MAKE_SET
 CHECK_GNU_MAKE
 AC_PATH_PROG(LN, ln, ln)
+AC_PROG_MKDIR_P
 AC_PROG_LN_S
 AC_PATH_PROG(MV, mv, mv)
 AC_PATH_PROG(CP, cp, cp)
@@ -1295,6 +1315,127 @@
 	;;
 esac
 dnl
+dnl Enable LTO for all packages
+dnl
+AC_ARG_ENABLE([lto],
+[  --enable-lto		  enable link time optimization],,
+enable_lto=no)
+if test "$enable_lto" = "yes" || test "$enable_lto" = "probe"; then
+	AC_MSG_CHECKING([if C compiler supports LTO])
+	OLD_CFLAGS="$CFLAGS"
+	OLD_LDFLAGS="$LDFLAGS"
+	LTO_FLAGS="-g -flto -ffat-lto-objects"
+	CFLAGS="$CFLAGS $LTO_FLAGS"
+	LDFLAGS="$LDFLAGS $LTO_FLAGS"
+	AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
+		[AC_MSG_RESULT([yes])]
+		[lto_cflags=$LTO_FLAGS]
+		[lto_ldflags=$LTO_FLAGS]
+		[AC_PATH_PROG(gcc_ar, gcc-ar,,)]
+		[AC_PATH_PROG(gcc_ranlib, gcc-ranlib,,)],
+		[AC_MSG_RESULT([no])])
+	if test -x "$gcc_ar" && test -x "$gcc_ranlib"; then
+		have_lto=yes
+		AR="${gcc_ar}"
+		RANLIB="${gcc_ranlib}"
+	fi
+	CFLAGS="${OLD_CFLAGS}"
+	LDFLAGS="${OLD_LDFLAGS}"
+	AC_SUBST(have_lto)
+	AC_SUBST(lto_cflags)
+	AC_SUBST(lto_ldflags)
+fi
+if test "$enable_lto" = "yes" && test "$have_lto" != "yes"; then
+	AC_MSG_ERROR([LTO not supported by compiler.])
+fi
+dnl
+dnl Enable UBSAN for all packages
+dnl
+AC_ARG_ENABLE([ubsan],
+[  --enable-ubsan	  enable undefined behavior sanitizer],,
+enable_ubsan=no)
+if test "$enable_ubsan" = "yes" || test "$enable_ubsan" = "probe"; then
+	AC_MSG_CHECKING([if C compiler supports UBSAN])
+	OLD_CFLAGS="$CFLAGS"
+	OLD_LDFLAGS="$LDFLAGS"
+	UBSAN_FLAGS="-fsanitize=undefined"
+	CFLAGS="$CFLAGS $UBSAN_FLAGS"
+	LDFLAGS="$LDFLAGS $UBSAN_FLAGS"
+	AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
+		[AC_MSG_RESULT([yes])]
+		[ubsan_cflags=$UBSAN_FLAGS]
+		[ubsan_ldflags=$UBSAN_FLAGS]
+		[have_ubsan=yes],
+		[AC_MSG_RESULT([no])])
+	CFLAGS="${OLD_CFLAGS}"
+	LDFLAGS="${OLD_LDFLAGS}"
+	AC_SUBST(have_ubsan)
+	AC_SUBST(ubsan_cflags)
+	AC_SUBST(ubsan_ldflags)
+fi
+if test "$enable_ubsan" = "yes" && test "$have_ubsan" != "yes"; then
+	AC_MSG_ERROR([UBSAN not supported by compiler.])
+fi
+dnl
+dnl Enable ADDRSAN for all packages
+dnl
+AC_ARG_ENABLE([addrsan],
+[  --enable-addrsan	  enable address sanitizer],,
+enable_addrsan=no)
+if test "$enable_addrsan" = "yes" || test "$enable_addrsan" = "probe"; then
+	AC_MSG_CHECKING([if C compiler supports ADDRSAN])
+	OLD_CFLAGS="$CFLAGS"
+	OLD_LDFLAGS="$LDFLAGS"
+	ADDRSAN_FLAGS="-fsanitize=address"
+	CFLAGS="$CFLAGS $ADDRSAN_FLAGS"
+	LDFLAGS="$LDFLAGS $ADDRSAN_FLAGS"
+	AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
+		[AC_MSG_RESULT([yes])]
+		[addrsan_cflags=$ADDRSAN_FLAGS]
+		[addrsan_ldflags=$ADDRSAN_FLAGS]
+		[have_addrsan=yes],
+		[AC_MSG_RESULT([no])])
+	CFLAGS="${OLD_CFLAGS}"
+	LDFLAGS="${OLD_LDFLAGS}"
+	AC_SUBST(have_addrsan)
+	AC_SUBST(addrsan_cflags)
+	AC_SUBST(addrsan_ldflags)
+fi
+if test "$enable_addrsan" = "yes" && test "$have_addrsan" != "yes"; then
+	AC_MSG_ERROR([ADDRSAN not supported by compiler.])
+fi
+dnl
+dnl Enable THREADSAN for all packages
+dnl
+AC_ARG_ENABLE([threadsan],
+[  --enable-threadsan	  enable thread sanitizer],,
+enable_threadsan=no)
+if test "$enable_threadsan" = "yes" || test "$enable_threadsan" = "probe"; then
+	AC_MSG_CHECKING([if C compiler supports THREADSAN])
+	OLD_CFLAGS="$CFLAGS"
+	OLD_LDFLAGS="$LDFLAGS"
+	THREADSAN_FLAGS="-fsanitize=thread"
+	CFLAGS="$CFLAGS $THREADSAN_FLAGS"
+	LDFLAGS="$LDFLAGS $THREADSAN_FLAGS"
+	AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
+		[AC_MSG_RESULT([yes])]
+		[threadsan_cflags=$THREADSAN_FLAGS]
+		[threadsan_ldflags=$THREADSAN_FLAGS]
+		[have_threadsan=yes],
+		[AC_MSG_RESULT([no])])
+	CFLAGS="${OLD_CFLAGS}"
+	LDFLAGS="${OLD_LDFLAGS}"
+	AC_SUBST(have_threadsan)
+	AC_SUBST(threadsan_cflags)
+	AC_SUBST(threadsan_ldflags)
+fi
+if test "$enable_threadsan" = "yes" && test "$have_threadsan" != "yes"; then
+	AC_MSG_ERROR([THREADSAN not supported by compiler.])
+fi
+if test "$have_threadsan" = "yes" && test "$have_addrsan" = "yes"; then
+	AC_MSG_WARN([ADDRSAN and THREADSAN are not known to work together.])
+fi
+dnl
 dnl OS-specific uncomment control
 dnl
 LINUX_CMT="#"
@@ -1313,6 +1454,11 @@
 AC_SUBST(CYGWIN_CMT)
 AC_SUBST(UNIX_CMT)
 dnl
+dnl e2scrub only builds on linux
+dnl
+E2SCRUB_CMT="$LINUX_CMT"
+AC_SUBST(E2SCRUB_CMT)
+dnl
 dnl Linux and Hurd places root files in the / by default
 dnl
 case "$host_os" in
@@ -1387,7 +1533,8 @@
     libdir=$libdir/$withval
     root_libdir=$root_libdir/$withval
 fi
-)dnl
+)
+dnl
 dnl
 dnl See if -static works.  This could fail if the linker does not
 dnl support -static, or if required external libraries are not available
@@ -1451,7 +1598,6 @@
 	INCLUDES="$INCLUDES -D_REENTRANT"
 fi
 AC_SUBST(INCLUDES)
-AM_MKINSTALLDIRS
 dnl
 dnl Build CFLAGS
 dnl
@@ -1470,6 +1616,115 @@
 AC_SUBST(CFLAGS_SHLIB)
 AC_SUBST(CFLAGS_STLIB)
 AC_SUBST(LDFLAGS_SHLIB)
+
+dnl
+dnl Where do udev rules go?
+dnl
+AC_ARG_WITH([udev_rules_dir],
+  [AS_HELP_STRING([--with-udev-rules-dir@<:@=DIR@:>@],
+	[Install udev rules into DIR.])],
+  [],
+  [with_udev_rules_dir=yes])
+AS_IF([test "x${with_udev_rules_dir}" != "xno"],
+  [
+	AS_IF([test "x${with_udev_rules_dir}" = "xyes"],
+	  [
+		PKG_CHECK_MODULES([udev], [udev],
+		  [
+			with_udev_rules_dir="$($PKG_CONFIG --variable=udevdir udev)/rules.d"
+		  ], [
+			with_udev_rules_dir=""
+		  ])
+	  ])
+	AC_MSG_CHECKING([for udev rules dir])
+	pkg_udev_rules_dir="${with_udev_rules_dir}"
+	AS_IF([test -n "${pkg_udev_rules_dir}"],
+	  [
+		AC_MSG_RESULT(${pkg_udev_rules_dir})
+		have_udev="yes"
+	  ],
+	  [
+		AC_MSG_RESULT(no)
+		have_udev="no"
+	  ])
+  ],
+  [
+	have_udev="disabled"
+  ])
+AC_SUBST(have_udev)
+AC_SUBST(pkg_udev_rules_dir)
+
+dnl
+dnl Where do cron jobs go?
+dnl
+AC_ARG_WITH([crond_dir],
+  [AS_HELP_STRING([--with-crond-dir@<:@=DIR@:>@],
+	[Install system crontabs into DIR.])],
+  [],
+  [with_crond_dir=yes])
+AS_IF([test "x${with_crond_dir}" != "xno"],
+  [
+	AS_IF([test "x${with_crond_dir}" = "xyes"],
+	  [
+		AS_IF([test -d "/etc/cron.d"],
+		  [with_crond_dir="/etc/cron.d"])
+	  ])
+	AC_MSG_CHECKING([for system crontab dir])
+	crond_dir="${with_crond_dir}"
+	AS_IF([test -n "${crond_dir}"],
+	  [
+		AC_MSG_RESULT(${crond_dir})
+		have_crond="yes"
+	  ],
+	  [
+		AC_MSG_RESULT(no)
+		have_crond="no"
+	  ])
+  ],
+  [
+	have_crond="disabled"
+  ])
+AC_SUBST(have_crond)
+AC_SUBST(crond_dir)
+
+dnl
+dnl Where do systemd services go?
+dnl
+AC_ARG_WITH([systemd_unit_dir],
+  [AS_HELP_STRING([--with-systemd-unit-dir@<:@=DIR@:>@],
+	[Install systemd system units into DIR.])],
+  [],
+  [with_systemd_unit_dir=yes])
+AS_IF([test "x${with_systemd_unit_dir}" != "xno"],
+  [
+	AS_IF([test "x${with_systemd_unit_dir}" = "xyes"],
+	  [
+		PKG_CHECK_MODULES([systemd], [systemd],
+		  [
+			with_systemd_unit_dir="$($PKG_CONFIG --variable=systemdsystemunitdir systemd)"
+		  ], [
+			with_systemd_unit_dir=""
+		  ])
+		m4_pattern_allow([^PKG_(MAJOR|MINOR|BUILD|REVISION)$])
+	  ])
+	AC_MSG_CHECKING([for systemd system unit dir])
+	systemd_system_unit_dir="${with_systemd_unit_dir}"
+	AS_IF([test -n "${systemd_system_unit_dir}"],
+	  [
+		AC_MSG_RESULT(${systemd_system_unit_dir})
+		have_systemd="yes"
+	  ],
+	  [
+		AC_MSG_RESULT(no)
+		have_systemd="no"
+	  ])
+  ],
+  [
+	have_systemd="disabled"
+  ])
+AC_SUBST(have_systemd)
+AC_SUBST(systemd_system_unit_dir)
+
 dnl
 dnl Make our output files, being sure that we create the some miscellaneous 
 dnl directories
@@ -1486,7 +1741,7 @@
 	blkid_out_list="lib/blkid/Makefile lib/blkid/blkid.pc \
 		lib/blkid/blkid_types.h"
 fi
-for i in MCONFIG Makefile e2fsprogs.spec \
+for i in MCONFIG Makefile \
 	util/Makefile util/subst.conf util/gen-tarball util/install-symlink \
 	lib/et/Makefile lib/ss/Makefile lib/e2p/Makefile \
 	lib/ext2fs/Makefile lib/ext2fs/ext2_types.h \
@@ -1495,7 +1750,7 @@
 	misc/Makefile ext2ed/Makefile e2fsck/Makefile \
 	debugfs/Makefile tests/Makefile tests/progs/Makefile \
 	resize/Makefile doc/Makefile intl/Makefile \
-	intl/libgnuintl.h po/Makefile.in ; do
+	intl/libgnuintl.h po/Makefile.in scrub/Makefile; do
 	if test -d `dirname ${srcdir}/$i` ; then
 		outlist="$outlist $i"
 	fi
diff --git a/debian/changelog b/debian/changelog
index 756d766..a7dc64a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,27 @@
+e2fsprogs (1.44.4-2) unstable; urgency=medium
+
+  * tune2fs fix dereference of freed memory after journal
+  * fix verity support
+  * Generate NEWS.gz for e2fsprogs's package documentation directory
+  * Update Debian policy compliance to 4.2.0
+  * Improve version dependency for libcom-err and ss2 for e2fsprogs
+
+ -- Theodore Y. Ts'o <tytso@mit.edu>  Wed, 22 Aug 2018 19:30:17 -0400
+
+e2fsprogs (1.44.4-1) unstable; urgency=medium
+
+  * New upstream release
+  * Add basic support for the ext4 verity (fsverity) feature
+  * E2fsck will fix file systems that have both the resize_inode
+    and meta_bg feature enabled
+  * Debugfs's ncheck command will now correctly inodes that have
+    multiple hard links
+  * Remove kilo/kibi rant (Closes: #757831)
+  * Update Danish, Spanish, and Swedish translations
+  * Fix symlink to directory conversions (Closes: #905195)
+
+ -- Theodore Y. Ts'o <tytso@mit.edu>  Sat, 18 Aug 2018 20:46:29 -0400
+
 e2fsprogs (1.44.3-1) unstable; urgency=medium
 
   * New upstream release
diff --git a/debian/comerr-dev.postinst b/debian/comerr-dev.postinst
new file mode 100644
index 0000000..aae743a
--- /dev/null
+++ b/debian/comerr-dev.postinst
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+# Abort on error.
+set -e
+
+symlink_match()
+{
+	local SYMLINK="$1"
+	local SYMLINK_TARGET="$2"
+
+	[ "$(readlink "$SYMLINK")" = "$SYMLINK_TARGET" ] || \
+	[ "$(readlink -f "$SYMLINK")" = "$SYMLINK_TARGET" ]
+}
+
+SYMLINK=/usr/share/doc/comerr-dev
+SYMLINK_TARGET=libcomerr2
+SYMLINK_TARGET2=libcom-err2
+
+if [ "$1" = "configure" ] && [ -h "${SYMLINK}.dpkg-backup" ]
+then
+    if symlink_match "${SYMLINK}.dpkg-backup" "$SYMLINK_TARGET" ||
+       symlink_match "${SYMLINK}.dpkg-backup" "$SYMLINK_TARGET2"
+    then
+	rm -f "${SYMLINK}.dpkg-backup"
+    fi
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/comerr-dev.postrm b/debian/comerr-dev.postrm
new file mode 100644
index 0000000..8f9e679
--- /dev/null
+++ b/debian/comerr-dev.postrm
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# Abort on error.
+set -e
+
+symlink_match()
+{
+	local SYMLINK="$1"
+	local SYMLINK_TARGET="$2"
+
+	[ "$(readlink "$SYMLINK")" = "$SYMLINK_TARGET" ] || \
+	[ "$(readlink -f "$SYMLINK")" = "$SYMLINK_TARGET" ]
+}
+
+SYMLINK=/usr/share/doc/comerr-dev
+SYMLINK_TARGET=libcomerr2
+SYMLINK_TARGET2=libcom-err2
+
+if [ "$1" = "purge" ] && [ -h "${SYMLINK}.dpkg-backup" ]
+then
+	rm -f "${SYMLINK}.dpkg-backup"
+fi
+if [ "$1" = "abort-install" -o "$1" = "abort-upgrade" ] &&
+   [ -n "$2" ] && [ ! -e "$SYMLINK" ] && [ -h "${SYMLINK}.dpkg-backup" ]
+then
+    if symlink_match "${SYMLINK}.dpkg-backup" "$SYMLINK_TARGET" ||
+       symlink_match "${SYMLINK}.dpkg-backup" "$SYMLINK_TARGET2"
+    then
+	echo "Restoring backup of $SYMLINK ..."
+	mv "${SYMLINK}.dpkg-backup" "$SYMLINK"
+    fi
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/comerr-dev.preinst b/debian/comerr-dev.preinst
new file mode 100644
index 0000000..5d8090a
--- /dev/null
+++ b/debian/comerr-dev.preinst
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+# Abort on error.
+set -e
+
+symlink_match()
+{
+	local SYMLINK="$1"
+	local SYMLINK_TARGET="$2"
+
+	[ "$(readlink "$SYMLINK")" = "$SYMLINK_TARGET" ] || \
+	[ "$(readlink -f "$SYMLINK")" = "$SYMLINK_TARGET" ]
+}
+
+SYMLINK=/usr/share/doc/comerr-dev
+SYMLINK_TARGET=libcomerr2
+SYMLINK_TARGET2=libcom-err2
+
+if [ "$1" = "install" -o "$1" = "upgrade" ] &&
+   [ -n "$2" ] && [ -h "$SYMLINK" ]
+then
+    if symlink_match "$SYMLINK" "$SYMLINK_TARGET" ||
+       symlink_match "$SYMLINK" "$SYMLINK_TARGET2"
+    then
+	mv -f "$SYMLINK" "${SYMLINK}.dpkg-backup"
+    fi
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/compat b/debian/compat
index ec63514..b4de394 100644
--- a/debian/compat
+++ b/debian/compat
@@ -1 +1 @@
-9
+11
diff --git a/debian/control b/debian/control
index cba82e0..e40a84b 100644
--- a/debian/control
+++ b/debian/control
@@ -3,10 +3,10 @@
 Priority: required
 Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
 Build-Depends: gettext, texinfo, pkg-config, libfuse-dev [linux-any kfreebsd-any] <!pkg.e2fsprogs.no-fuse2fs>, libattr1-dev, debhelper (>= 9.0), libblkid-dev, uuid-dev, m4
-Standards-Version: 4.1.5
+Standards-Version: 4.2.0
 Homepage: http://e2fsprogs.sourceforge.net
 Vcs-Browser: https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
-Vcs-Git: https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
+Vcs-Git: https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git -b debian/master
 
 Package: fuse2fs
 Build-Profiles: <!pkg.e2fsprogs.no-fuse2fs>
@@ -191,7 +191,7 @@
 Pre-Depends: ${shlibs:Depends}, ${misc:Depends}, libblkid1, libuuid1
 Multi-Arch: foreign
 Suggests: gpart, parted, fuse2fs, e2fsck-static
-Recommends: e2fsprogs-l10n
+Recommends: e2fsprogs-l10n, lvm2, util-linux, coreutils
 Architecture: any
 Description: ext2/ext3/ext4 file system utilities
  The ext2, ext3 and ext4 file systems are successors of the original ext
diff --git a/debian/e2fslibs-dev.postinst b/debian/e2fslibs-dev.postinst
new file mode 100644
index 0000000..def6673
--- /dev/null
+++ b/debian/e2fslibs-dev.postinst
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+# Abort on error.
+set -e
+
+symlink_match()
+{
+	local SYMLINK="$1"
+	local SYMLINK_TARGET="$2"
+
+	[ "$(readlink "$SYMLINK")" = "$SYMLINK_TARGET" ] || \
+	[ "$(readlink -f "$SYMLINK")" = "$SYMLINK_TARGET" ]
+}
+
+SYMLINK=/usr/share/doc/e2fslibs-dev
+SYMLINK_TARGET=e2fslibs
+
+if [ "$1" = "configure" ] && [ -h "${SYMLINK}.dpkg-backup" ] &&
+   symlink_match "${SYMLINK}.dpkg-backup" "$SYMLINK_TARGET"
+then
+	rm -f "${SYMLINK}.dpkg-backup"
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/e2fslibs-dev.postrm b/debian/e2fslibs-dev.postrm
new file mode 100644
index 0000000..54841af
--- /dev/null
+++ b/debian/e2fslibs-dev.postrm
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+# Abort on error.
+set -e
+
+symlink_match()
+{
+	local SYMLINK="$1"
+	local SYMLINK_TARGET="$2"
+
+	[ "$(readlink "$SYMLINK")" = "$SYMLINK_TARGET" ] || \
+	[ "$(readlink -f "$SYMLINK")" = "$SYMLINK_TARGET" ]
+}
+
+SYMLINK=/usr/share/doc/e2fslibs-dev
+SYMLINK_TARGET=e2fslibs
+
+if [ "$1" = "purge" ] && [ -h "${SYMLINK}.dpkg-backup" ]
+then
+    rm -f "${SYMLINK}.dpkg-backup"
+fi
+if [ "$1" = "abort-install" -o "$1" = "abort-upgrade" ] &&
+   [ -n "$2" ] && [ ! -e "$SYMLINK" ] && [ -h "${SYMLINK}.dpkg-backup" ] &&
+   symlink_match "${SYMLINK}.dpkg-backup" "$SYMLINK_TARGET"
+then
+    echo "Restoring backup of $SYMLINK ..."
+    mv "${SYMLINK}.dpkg-backup" "$SYMLINK"
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/e2fslibs-dev.preinst b/debian/e2fslibs-dev.preinst
new file mode 100644
index 0000000..b3f9a4b
--- /dev/null
+++ b/debian/e2fslibs-dev.preinst
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+# Abort on error.
+set -e
+
+symlink_match()
+{
+	local SYMLINK="$1"
+	local SYMLINK_TARGET="$2"
+
+	[ "$(readlink "$SYMLINK")" = "$SYMLINK_TARGET" ] || \
+	[ "$(readlink -f "$SYMLINK")" = "$SYMLINK_TARGET" ]
+}
+
+SYMLINK=/usr/share/doc/e2fslibs-dev
+SYMLINK_TARGET=e2fslibs
+
+if [ "$1" = "install" -o "$1" = "upgrade" ] &&
+   [ -n "$2" ] && [ -h "$SYMLINK" ] &&
+   symlink_match "$SYMLINK" "$SYMLINK_TARGET"
+then
+    mv -f "$SYMLINK" "${SYMLINK}.dpkg-backup"
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/e2fsprogs.docs b/debian/e2fsprogs.docs
index 7af9733..e845566 100644
--- a/debian/e2fsprogs.docs
+++ b/debian/e2fsprogs.docs
@@ -1,2 +1 @@
 README
-RELEASE-NOTES
diff --git a/debian/e2fsprogs.files b/debian/e2fsprogs.files
index 0a22f31..e0e49ce 100644
--- a/debian/e2fsprogs.files
+++ b/debian/e2fsprogs.files
@@ -1,5 +1,9 @@
 sbin
 usr/bin
+usr/lib
 usr/sbin
 usr/share/man
 etc
+lib/udev/rules.d
+lib/systemd/system
+usr/lib
diff --git a/debian/e2fsprogs.postinst.dh9 b/debian/e2fsprogs.postinst.dh9
new file mode 100644
index 0000000..e7acb0e
--- /dev/null
+++ b/debian/e2fsprogs.postinst.dh9
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+# Abort on error.
+set -e
+
+if [ -x /usr/sbin/update-initramfs -a \
+	-e /etc/initramfs-tools/initramfs.conf ]; then
+    update-initramfs -u
+fi
+
+#DEBHELPER#
+
+# debhelper doesn't know what timers are...
+update_svc() {
+	deb-systemd-helper unmask "$1" >/dev/null || true
+
+	if deb-systemd-helper --quiet was-enabled "$1"; then
+		deb-systemd-helper enable "$1" >/dev/null || true
+	else
+		deb-systemd-helper update-state "$1" >/dev/null || true
+	fi
+}
+update_svc e2scrub_all.timer
+update_svc e2scrub_reap.service
+
+# Start our new services
+if [ -d /run/systemd/system ]; then
+	systemctl --system daemon-reload >/dev/null || true
+	deb-systemd-invoke start e2scrub_all.timer >/dev/null || true
+fi
+
+exit 0
diff --git a/debian/e2fsprogs.postrm.dh9 b/debian/e2fsprogs.postrm.dh9
new file mode 100644
index 0000000..32cb642
--- /dev/null
+++ b/debian/e2fsprogs.postrm.dh9
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+update_svc() {
+	deb-systemd-helper mask "$1" >/dev/null || true
+
+	if deb-systemd-helper --quiet was-enabled "$1"; then
+		# Enables the unit on first installation, creates new
+		# symlinks on upgrades if the unit file has changed.
+		deb-systemd-helper disable "$1" >/dev/null || true
+	fi
+}
+
+if [ "$1" != "upgrade" ]; then
+	# Abort on error.
+	set -e
+
+	if [ -x /usr/sbin/update-initramfs -a \
+		-e /etc/initramfs-tools/initramfs.conf ]; then
+	    update-initramfs -u
+	fi
+
+	#DEBHELPER#
+
+	# debhelper doesn't know what timers are...
+	update_svc e2scrub_all.timer
+	update_svc e2scrub_reap.service
+
+	# Start our new services
+	if [ -d /run/systemd/system ]; then
+		deb-systemd-invoke stop e2scrub_all.timer >/dev/null || true
+	fi
+fi
+
+exit 0
+
diff --git a/debian/e2fsprogs.shlibs.local b/debian/e2fsprogs.shlibs.local
index 49d1cbb..a99d2a0 100644
--- a/debian/e2fsprogs.shlibs.local
+++ b/debian/e2fsprogs.shlibs.local
@@ -1,4 +1,2 @@
-libcom_err 2 libcom-err2 (>= 1.42~WIP-2011-10-05-1)
-libss 2 libss2 (>= 1.34-1)
 libext2fs 2 libext2fs2 (= ${binary:Version})
 libe2p 2 libext2fs2 (= ${binary:Version})
diff --git a/debian/gbp.conf b/debian/gbp.conf
new file mode 100644
index 0000000..c974add
--- /dev/null
+++ b/debian/gbp.conf
@@ -0,0 +1,4 @@
+[DEFAULT]
+pristine-tar = True
+upstream-tag='v%(version)s'
+debian-branch=debian/master
diff --git a/debian/libcom-err2.symbols b/debian/libcom-err2.symbols
index 7742e2e..3334869 100644
--- a/debian/libcom-err2.symbols
+++ b/debian/libcom-err2.symbols
@@ -1,21 +1,21 @@
 libcom_err.so.2 libcom-err2 #MINVER#
- _et_dynamic_list@Base 1.38
- _et_list@Base 1.01
- add_error_table@Base 1.34
- add_to_error_table@Base 1.34
- com_err@Base 1.01
- com_err_hook@Base 1.01
- com_err_va@Base 1.01
- com_right@Base 1.34
- com_right_r@Base 1.41.11
- error_message@Base 1.01
- error_table_name@Base 1.01
- et_list_lock@Base 1.41.2
- et_list_unlock@Base 1.41.2
- free_error_table@Base 1.34
- init_error_table@Base 1.01
- initialize_error_table_r@Base 1.34
- remove_error_table@Base 1.34
- reset_com_err_hook@Base 1.01
- set_com_err_gettext@Base 1.41.99
- set_com_err_hook@Base 1.01
+ _et_dynamic_list@Base 1.43.9
+ _et_list@Base 1.43.9
+ add_error_table@Base 1.43.9
+ add_to_error_table@Base 1.43.9
+ com_err@Base 1.43.9
+ com_err_hook@Base 1.43.9
+ com_err_va@Base 1.43.9
+ com_right@Base 1.43.9
+ com_right_r@Base 1.43.9
+ error_message@Base 1.43.9
+ error_table_name@Base 1.43.9
+ et_list_lock@Base 1.43.9
+ et_list_unlock@Base 1.43.9
+ free_error_table@Base 1.43.9
+ init_error_table@Base 1.43.9
+ initialize_error_table_r@Base 1.43.9
+ remove_error_table@Base 1.43.9
+ reset_com_err_hook@Base 1.43.9
+ set_com_err_gettext@Base 1.43.9
+ set_com_err_hook@Base 1.43.9
diff --git a/debian/rules b/debian/rules
index b6df023..d75ce76 100755
--- a/debian/rules
+++ b/debian/rules
@@ -47,6 +47,8 @@
 
 DH_VERSION := $(shell dpkg-query -W -f '$${Version}' debhelper)
 
+USE_DH9 ?= $(shell if dpkg --compare-versions $(DH_VERSION) lt 11 ; then echo yes ; fi)
+
 # USE_DBGSYM :=
 USE_DBGSYM ?= $(shell if dpkg --compare-versions $(DH_VERSION) ">=" 9.20160114 ; then echo yes ; fi)
 
@@ -99,6 +101,7 @@
 UDEB_PRIORITY	?= $(shell grep '^Package: e2fsprogs-udeb' debian/control -A 10 | grep ^Priority: | cut -d ' ' -f 2)
 
 STAMPSDIR	?= debian/stampdir
+CFGDH		?= ${STAMPSDIR}/configure-dh
 CFGSTDSTAMP	?= ${STAMPSDIR}/configure-std-stamp
 CFGBFSTAMP	?= ${STAMPSDIR}/configure-bf-stamp
 BUILDSTDSTAMP	?= ${STAMPSDIR}/build-std-stamp
@@ -164,7 +167,8 @@
 
 BACKTRACE_CONF_FLAGS ?= $(shell if ${debdir}/scripts/test-backtrace ; then echo --disable-backtrace ; fi)
 
-COMMON_CONF_FLAGS = --disable-e2initrd-helper \
+COMMON_CONF_FLAGS = --enable-lto --disable-ubsan --disable-addrsan \
+	--disable-threadsan --disable-e2initrd-helper \
 	--infodir=/usr/share/info  --enable-symlink-install \
 	--with-multiarch=$(DEB_HOST_MULTIARCH) \
 	$(BACKTRACE_CONF_FLAGS) $(UTIL_CONF_FLAGS)
@@ -195,7 +199,18 @@
 		mv debian/control.save debian/control ; \
 	fi
 
-${CFGSTDSTAMP}:
+${CFGDH}:
+ifeq ($(USE_DH9),yes)
+	mv debian/compat debian/compat.save
+	echo 9 > debian/compat
+	mv debian/e2fsprogs.postinst debian/e2fsprogs.postinst.save
+	cp debian/e2fsprogs.postinst.dh9 debian/e2fsprogs.postinst
+	cp debian/e2fsprogs.postrm.dh9 debian/e2fsprogs.postrm
+endif
+	mkdir -p ${STAMPSDIR}
+	touch ${CFGDH}
+
+${CFGSTDSTAMP}: ${CFGDH}
 	dh_testdir
 	if which dh_update_autotools_config > /dev/null 2>&1 ; then \
 		dh_update_autotools_config ;\
@@ -228,7 +243,7 @@
 	mkdir -p ${STAMPSDIR}
 	touch ${CFGSTDSTAMP}
 
-${CFGBFSTAMP}:
+${CFGBFSTAMP}: ${CFGDH}
 	dh_testdir
 	if which dh_update_autotools_config > /dev/null 2>&1 ; then \
 		dh_update_autotools_config ;\
@@ -279,6 +294,8 @@
 
 	( cd ${stdbuilddir}/doc && $(MAKE) V=1 libext2fs.html )
 	( cd ${stdbuilddir}/lib/et && $(MAKE) V=1 com_err.info com_err.html )
+	cat $(shell /bin/ls -1 ./doc/RelNotes/*.txt | tac) | \
+		gzip -9n > ${stdbuilddir}/NEWS.gz
 
 	touch ${BUILDSTDSTAMP}
 
@@ -298,6 +315,15 @@
 		mv debian/orig-gmo/* po ; \
 		rmdir debian/orig-gmo ; \
 	fi
+	if test -f debian/compat.save; then \
+		mv debian/compat.save debian/compat ; \
+	fi
+	if test -f debian/e2fsprogs.postinst.save; then \
+		mv debian/e2fsprogs.postinst.save debian/e2fsprogs.postinst ; \
+	fi
+	if test -f debian/e2fsprogs.postrm; then \
+		rm -f debian/e2fsprogs.postrm ; \
+	fi
 	rm -rf ${STAMPSDIR}
 	[ ! -f ${stdbuilddir}/Makefile ] || $(MAKE) -C ${stdbuilddir} V=1 distclean
 	[ ! -f ${bfbuilddir}/Makefile ] || $(MAKE) -C ${bfbuilddir} V=1 distclean
@@ -328,6 +354,8 @@
 	${INSTALL} -m 0644 misc/mke2fs-hurd.conf ${tmpdir}/etc/mke2fs.conf
 endif
 
+	dh_install -p e2fsprogs --sourcedir=${stdbuilddir} NEWS.gz \
+		usr/share/doc/e2fsprogs
 	dh_movefiles
 	test -z "`find ${tmpdir} -type f`"
 
@@ -377,15 +405,12 @@
 
 	mkdir -p ${debdir}/libss${SS_SOVERSION}/usr/share/doc/libss${SS_SOVERSION}
 	mkdir -p ${debdir}/ss-dev/usr/share/doc
-	ln -sf libss${SS_SOVERSION} ${debdir}/ss-dev/usr/share/doc/ss-dev
 
 	mkdir -p ${debdir}/libcom-err${COMERR_SOVERSION}/usr/share/doc/libcom-err${COMERR_SOVERSION}
 	mkdir -p ${debdir}/comerr-dev/usr/share/doc
-	ln -sf libcom-err${COMERR_SOVERSION} ${debdir}/comerr-dev/usr/share/doc/comerr-dev
 
 	mkdir -p ${debdir}/libext2fs2/usr/share/doc/libext2fs
 	mkdir -p ${debdir}/libext2fs-dev/usr/share/doc
-	ln -sf libext2fs2 ${debdir}/libext2fs-dev/usr/share/doc/libext2fs-dev
 
 	dh_installdocs -a -Ne2fsprogs-udeb
 
@@ -393,24 +418,24 @@
 	$(INSTALL) -d ${debdir}/libext2fs-dev/usr/share/doc/libext2fs/html-info/
 	$(INSTALL) -p -m 0644 ${stdbuilddir}/doc/*.html \
 	   ${debdir}/libext2fs-dev/usr/share/doc/libext2fs/html-info/
-	$(INSTALL) -d ${debdir}/comerr-dev/usr/share/doc/libcom-err${COMERR_SOVERSION}/html-info/
+	$(INSTALL) -d ${debdir}/comerr-dev/usr/share/doc/comerr-dev/html-info/
 	$(INSTALL) -p -m 0644 ${stdbuilddir}/lib/et/*.html \
-	   ${debdir}/comerr-dev/usr/share/doc/libcom-err${COMERR_SOVERSION}/html-info/
+	   ${debdir}/comerr-dev/usr/share/doc/comerr-dev/html-info/
 
   # texinfo docs
-	mkdir -p ${debdir}/comerr-dev/usr/share/doc/libcom-err${COMERR_SOVERSION}
+	mkdir -p ${debdir}/comerr-dev/usr/share/doc/comerr-dev
 	$(INSTALL) -p -m 0644 ${topdir}/doc/libext2fs.texinfo \
 	   ${debdir}/libext2fs-dev/usr/share/doc/libext2fs/libext2fs.texi
 	$(INSTALL) -p -m 0644 ${topdir}/lib/et/com_err.texinfo \
-	   ${debdir}/comerr-dev/usr/share/doc/libcom-err${COMERR_SOVERSION}/com_err.texi
+	   ${debdir}/comerr-dev/usr/share/doc/comerr-dev/com_err.texi
 
-	$(INSTALL) -d ${debdir}/comerr-dev/usr/share/doc/libcom-err${COMERR_SOVERSION}/examples
+	$(INSTALL) -d ${debdir}/comerr-dev/usr/share/doc/comerr-dev/examples
 	$(INSTALL) -p -m 0644 lib/ss/ss_err.et \
 		${stdbuilddir}/lib/ext2fs/ext2_err.et \
-		${debdir}/comerr-dev/usr/share/doc/libcom-err${COMERR_SOVERSION}/examples
-	$(INSTALL) -d ${debdir}/ss-dev/usr/share/doc/libss${SS_SOVERSION}/examples
+		${debdir}/comerr-dev/usr/share/doc/comerr-dev/examples
+	$(INSTALL) -d ${debdir}/ss-dev/usr/share/doc/ss-dev/examples
 	$(INSTALL) -p -m 0644 debugfs/debug_cmds.ct \
-		${debdir}/ss-dev/usr/share/doc/libss${SS_SOVERSION}/examples
+		${debdir}/ss-dev/usr/share/doc/ss-dev/examples
 
 	dh_installinfo -pcomerr-dev ${stdbuilddir}/lib/et/com_err.info
 	dh_installinfo -plibext2fs-dev ${stdbuilddir}/doc/libext2fs.info
@@ -439,7 +464,9 @@
 	dh_compress -a
 
 	dh_makeshlibs -a --add-udeb=e2fsprogs-udeb
-
+ifneq ($(USE_DH9),yes)
+	dh_installsystemd -p e2fsprogs
+endif
 	$(INSTALL) -D -p -m644 debian/e2fsprogs-udeb.lintian-overrides \
 	    debian/e2fsprogs-udeb/usr/share/lintian/overrides/e2fsprogs-udeb
 	dh_installdeb -a
diff --git a/debian/ss-dev.postinst b/debian/ss-dev.postinst
new file mode 100644
index 0000000..bf49c9d
--- /dev/null
+++ b/debian/ss-dev.postinst
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+# Abort on error.
+set -e
+
+symlink_match()
+{
+	local SYMLINK="$1"
+	local SYMLINK_TARGET="$2"
+
+	[ "$(readlink "$SYMLINK")" = "$SYMLINK_TARGET" ] || \
+	[ "$(readlink -f "$SYMLINK")" = "$SYMLINK_TARGET" ]
+}
+
+SYMLINK=/usr/share/doc/ss-dev
+SYMLINK_TARGET=libss2
+
+if [ "$1" = "configure" ] && [ -h "${SYMLINK}.dpkg-backup" ] &&
+   symlink_match "${SYMLINK}.dpkg-backup" "$SYMLINK_TARGET"
+then
+	rm -f "${SYMLINK}.dpkg-backup"
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/ss-dev.postrm b/debian/ss-dev.postrm
new file mode 100644
index 0000000..c625aae
--- /dev/null
+++ b/debian/ss-dev.postrm
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+# Abort on error.
+set -e
+
+symlink_match()
+{
+	local SYMLINK="$1"
+	local SYMLINK_TARGET="$2"
+
+	[ "$(readlink "$SYMLINK")" = "$SYMLINK_TARGET" ] || \
+	[ "$(readlink -f "$SYMLINK")" = "$SYMLINK_TARGET" ]
+}
+
+SYMLINK=/usr/share/doc/ss-dev
+SYMLINK_TARGET=libss2
+
+if [ "$1" = "purge" ] && [ -h "${SYMLINK}.dpkg-backup" ]
+then
+    rm -f "${SYMLINK}.dpkg-backup"
+fi
+if [ "$1" = "abort-install" -o "$1" = "abort-upgrade" ] &&
+   [ -n "$2" ] && [ ! -e "$SYMLINK" ] && [ -h "${SYMLINK}.dpkg-backup" ] &&
+   symlink_match "${SYMLINK}.dpkg-backup" "$SYMLINK_TARGET"
+then
+    echo "Restoring backup of $SYMLINK ..."
+    mv "${SYMLINK}.dpkg-backup" "$SYMLINK"
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/ss-dev.preinst b/debian/ss-dev.preinst
new file mode 100644
index 0000000..8da566e
--- /dev/null
+++ b/debian/ss-dev.preinst
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+# Abort on error.
+set -e
+
+symlink_match()
+{
+	local SYMLINK="$1"
+	local SYMLINK_TARGET="$2"
+
+	[ "$(readlink "$SYMLINK")" = "$SYMLINK_TARGET" ] || \
+	[ "$(readlink -f "$SYMLINK")" = "$SYMLINK_TARGET" ]
+}
+
+SYMLINK=/usr/share/doc/ss-dev
+SYMLINK_TARGET=libss2
+
+if [ "$1" = "install" -o "$1" = "upgrade" ] &&
+   [ -n "$2" ] && [ -h "$SYMLINK" ] &&
+   symlink_match "$SYMLINK" "$SYMLINK_TARGET"
+then
+    mv -f "$SYMLINK" "${SYMLINK}.dpkg-backup"
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debugfs/Makefile.in b/debugfs/Makefile.in
index dede068..bb4d194 100644
--- a/debugfs/Makefile.in
+++ b/debugfs/Makefile.in
@@ -117,8 +117,8 @@
 	$(Q) $(SUBSTITUTE_UPTIME) $(srcdir)/debugfs.8.in debugfs.8
 
 installdirs:
-	$(E) "	MKINSTALLDIRS $(root_sbindir) $(man8dir)"
-	$(Q) $(MKINSTALLDIRS) $(DESTDIR)$(root_sbindir) \
+	$(E) "	MKDIR_P $(root_sbindir) $(man8dir)"
+	$(Q) $(MKDIR_P) $(DESTDIR)$(root_sbindir) \
 		$(DESTDIR)$(man8dir)
 
 install: $(PROGS) $(MANPAGES) installdirs
diff --git a/debugfs/debugfs.c b/debugfs/debugfs.c
index 0b04508..e03519c 100644
--- a/debugfs/debugfs.c
+++ b/debugfs/debugfs.c
@@ -50,7 +50,7 @@
 
 ss_request_table *extra_cmds;
 const char *debug_prog_name;
-int sci_idx;
+int ss_sci_idx;
 
 ext2_filsys	current_fs;
 quota_ctx_t	current_qctx;
@@ -218,7 +218,8 @@
 		com_err(device, retval, "while trying to close filesystem");
 }
 
-void do_open_filesys(int argc, char **argv)
+void do_open_filesys(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+		     void *infop EXT2FS_ATTR((unused)))
 {
 	int	c, err;
 	int	catastrophic = 0;
@@ -294,7 +295,8 @@
 		"<device>\n", argv[0]);
 }
 
-void do_lcd(int argc, char **argv)
+void do_lcd(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+	    void *infop EXT2FS_ATTR((unused)))
 {
 	if (argc != 2) {
 		com_err(argv[0], 0, "Usage: %s %s", argv[0], "<native dir>");
@@ -331,7 +333,8 @@
 	return;
 }
 
-void do_close_filesys(int argc, char **argv)
+void do_close_filesys(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+		      void *infop EXT2FS_ATTR((unused)))
 {
 	int	c;
 
@@ -359,7 +362,8 @@
 }
 
 #ifndef READ_ONLY
-void do_init_filesys(int argc, char **argv)
+void do_init_filesys(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+		     void *infop EXT2FS_ATTR((unused)))
 {
 	struct ext2_super_block param;
 	errcode_t	retval;
@@ -419,7 +423,9 @@
 	}
 }
 
-void do_show_super_stats(int argc, char *argv[])
+void do_show_super_stats(int argc, char *argv[],
+			 int sci_idx EXT2FS_ATTR((unused)),
+			 void *infop EXT2FS_ATTR((unused)))
 {
 	const char *units ="block";
 	dgrp_t	i;
@@ -514,7 +520,9 @@
 
 #ifndef READ_ONLY
 void do_dirty_filesys(int argc EXT2FS_ATTR((unused)),
-		      char **argv EXT2FS_ATTR((unused)))
+		      char **argv EXT2FS_ATTR((unused)),
+		      int sci_idx EXT2FS_ATTR((unused)),
+		      void *infop EXT2FS_ATTR((unused)))
 {
 	if (check_fs_open(argv[0]))
 		return;
@@ -965,7 +973,8 @@
 	close_pager(out);
 }
 
-void do_stat(int argc, char *argv[])
+void do_stat(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	     void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t	inode;
 	struct ext2_inode * inode_buf;
@@ -996,7 +1005,8 @@
 	return;
 }
 
-void do_dump_extents(int argc, char **argv)
+void do_dump_extents(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+		     void *infop EXT2FS_ATTR((unused)))
 {
 	struct ext2_inode inode;
 	ext2_ino_t	ino;
@@ -1067,7 +1077,8 @@
 	return 0;
 }
 
-void do_blocks(int argc, char *argv[])
+void do_blocks(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	       void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t	inode;
 
@@ -1084,7 +1095,8 @@
 	return;
 }
 
-void do_chroot(int argc, char *argv[])
+void do_chroot(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	       void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t inode;
 	int retval;
@@ -1101,7 +1113,8 @@
 }
 
 #ifndef READ_ONLY
-void do_clri(int argc, char *argv[])
+void do_clri(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	     void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t inode;
 	struct ext2_inode inode_buf;
@@ -1116,7 +1129,8 @@
 		return;
 }
 
-void do_freei(int argc, char *argv[])
+void do_freei(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	      void *infop EXT2FS_ATTR((unused)))
 {
 	unsigned int	len = 1;
 	int		err = 0;
@@ -1146,7 +1160,8 @@
 	ext2fs_mark_ib_dirty(current_fs);
 }
 
-void do_seti(int argc, char *argv[])
+void do_seti(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	     void *infop EXT2FS_ATTR((unused)))
 {
 	unsigned int	len = 1;
 	int		err = 0;
@@ -1177,7 +1192,8 @@
 }
 #endif /* READ_ONLY */
 
-void do_testi(int argc, char *argv[])
+void do_testi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	      void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t inode;
 
@@ -1191,7 +1207,8 @@
 }
 
 #ifndef READ_ONLY
-void do_freeb(int argc, char *argv[])
+void do_freeb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	      void *infop EXT2FS_ATTR((unused)))
 {
 	blk64_t block;
 	blk64_t count = 1;
@@ -1210,7 +1227,8 @@
 	ext2fs_mark_bb_dirty(current_fs);
 }
 
-void do_setb(int argc, char *argv[])
+void do_setb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	     void *infop EXT2FS_ATTR((unused)))
 {
 	blk64_t block;
 	blk64_t count = 1;
@@ -1230,7 +1248,8 @@
 }
 #endif /* READ_ONLY */
 
-void do_testb(int argc, char *argv[])
+void do_testb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	      void *infop EXT2FS_ATTR((unused)))
 {
 	blk64_t block;
 	blk64_t count = 1;
@@ -1314,7 +1333,8 @@
 }
 
 
-void do_modify_inode(int argc, char *argv[])
+void do_modify_inode(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		     void *infop EXT2FS_ATTR((unused)))
 {
 	struct ext2_inode inode;
 	ext2_ino_t	inode_num;
@@ -1391,7 +1411,9 @@
 }
 #endif /* READ_ONLY */
 
-void do_change_working_dir(int argc, char *argv[])
+void do_change_working_dir(int argc, char *argv[],
+			   int sci_idx EXT2FS_ATTR((unused)),
+			   void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t	inode;
 	int		retval;
@@ -1408,7 +1430,9 @@
 	return;
 }
 
-void do_print_working_directory(int argc, char *argv[])
+void do_print_working_directory(int argc, char *argv[],
+				int sci_idx EXT2FS_ATTR((unused)),
+				void *infop EXT2FS_ATTR((unused)))
 {
 	int	retval;
 	char	*pathname = NULL;
@@ -1497,7 +1521,8 @@
 }
 
 
-void do_link(int argc, char *argv[])
+void do_link(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	     void *infop EXT2FS_ATTR((unused)))
 {
 	if (common_args_process(argc, argv, 3, 3, "link",
 				"<source file> <dest_name>", CHECK_FS_RW))
@@ -1519,7 +1544,8 @@
 	return 0;
 }
 
-void do_undel(int argc, char *argv[])
+void do_undel(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	      void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t	ino;
 	struct ext2_inode inode;
@@ -1582,7 +1608,8 @@
 	return;
 }
 
-void do_unlink(int argc, char *argv[])
+void do_unlink(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	       void *infop EXT2FS_ATTR((unused)))
 {
 	if (common_args_process(argc, argv, 2, 2, "link",
 				"<pathname>", CHECK_FS_RW))
@@ -1591,7 +1618,8 @@
 	unlink_file_by_name(argv[1]);
 }
 
-void do_copy_inode(int argc, char *argv[])
+void do_copy_inode(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		   void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t	src_ino, dest_ino;
 	unsigned char	buf[4096];
@@ -1619,7 +1647,9 @@
 
 #endif /* READ_ONLY */
 
-void do_find_free_block(int argc, char *argv[])
+void do_find_free_block(int argc, char *argv[],
+			int sci_idx EXT2FS_ATTR((unused)),
+			void *infop EXT2FS_ATTR((unused)))
 {
 	blk64_t	free_blk, goal, first_free = 0;
  	int		count;
@@ -1671,7 +1701,9 @@
  	printf("\n");
 }
 
-void do_find_free_inode(int argc, char *argv[])
+void do_find_free_inode(int argc, char *argv[],
+			int sci_idx EXT2FS_ATTR((unused)),
+			void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t	free_inode, dir;
 	int		mode;
@@ -1711,7 +1743,8 @@
 }
 
 #ifndef READ_ONLY
-void do_write(int argc, char *argv[])
+void do_write(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	      void *infop EXT2FS_ATTR((unused)))
 {
 	errcode_t	retval;
 
@@ -1724,7 +1757,8 @@
 		com_err(argv[0], retval, 0);
 }
 
-void do_mknod(int argc, char *argv[])
+void do_mknod(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	      void *infop EXT2FS_ATTR((unused)))
 {
 	unsigned long	major, minor;
 	errcode_t 	retval;
@@ -1774,7 +1808,8 @@
 		com_err(argv[0], retval, 0);
 }
 
-void do_mkdir(int argc, char *argv[])
+void do_mkdir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	      void *infop EXT2FS_ATTR((unused)))
 {
 	errcode_t retval;
 
@@ -1827,7 +1862,8 @@
 }
 
 
-void do_kill_file(int argc, char *argv[])
+void do_kill_file(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		  void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t inode_num;
 
@@ -1837,7 +1873,8 @@
 	kill_file_by_inode(inode_num);
 }
 
-void do_rm(int argc, char *argv[])
+void do_rm(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	   void *infop EXT2FS_ATTR((unused)))
 {
 	int retval;
 	ext2_ino_t inode_num;
@@ -1898,7 +1935,8 @@
 	return 0;
 }
 
-void do_rmdir(int argc, char *argv[])
+void do_rmdir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	      void *infop EXT2FS_ATTR((unused)))
 {
 	int retval;
 	ext2_ino_t inode_num;
@@ -1956,7 +1994,9 @@
 #endif /* READ_ONLY */
 
 void do_show_debugfs_params(int argc EXT2FS_ATTR((unused)),
-			    char *argv[] EXT2FS_ATTR((unused)))
+			    char *argv[] EXT2FS_ATTR((unused)),
+			    int sci_idx EXT2FS_ATTR((unused)),
+			    void *infop EXT2FS_ATTR((unused)))
 {
 	if (current_fs)
 		printf("Open mode: read-%s\n",
@@ -1966,7 +2006,8 @@
 }
 
 #ifndef READ_ONLY
-void do_expand_dir(int argc, char *argv[])
+void do_expand_dir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		    void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t inode;
 	int retval;
@@ -1980,7 +2021,8 @@
 	return;
 }
 
-void do_features(int argc, char *argv[])
+void do_features(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		 void *infop EXT2FS_ATTR((unused)))
 {
 	int	i;
 
@@ -2001,7 +2043,8 @@
 }
 #endif /* READ_ONLY */
 
-void do_bmap(int argc, char *argv[])
+void do_bmap(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	     void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t	ino;
 	blk64_t		blk, pblk = 0;
@@ -2064,7 +2107,8 @@
 	fputc('\n', stdout);
 }
 
-void do_imap(int argc, char *argv[])
+void do_imap(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	     void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t	ino;
 	unsigned long 	group, block, block_nr, offset;
@@ -2095,7 +2139,8 @@
 
 }
 
-void do_idump(int argc, char *argv[])
+void do_idump(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	      void *infop EXT2FS_ATTR((unused)))
 {
 	struct ext2_inode_large *inode;
 	ext2_ino_t	ino;
@@ -2165,7 +2210,9 @@
 }
 
 #ifndef READ_ONLY
-void do_set_current_time(int argc, char *argv[])
+void do_set_current_time(int argc, char *argv[],
+			 int sci_idx EXT2FS_ATTR((unused)),
+			 void *infop EXT2FS_ATTR((unused)))
 {
 	__s64 now;
 
@@ -2224,7 +2271,9 @@
 	return 0;
 }
 
-void do_supported_features(int argc, char *argv[])
+void do_supported_features(int argc, char *argv[],
+			   int sci_idx EXT2FS_ATTR((unused)),
+			   void *infop EXT2FS_ATTR((unused)))
 {
         int	ret;
 	__u32	supp[3] = { EXT2_LIB_FEATURE_COMPAT_SUPP,
@@ -2252,7 +2301,8 @@
 }
 
 #ifndef READ_ONLY
-void do_punch(int argc, char *argv[])
+void do_punch(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	      void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t	ino;
 	blk64_t		start, end;
@@ -2287,7 +2337,8 @@
 	}
 }
 
-void do_fallocate(int argc, char *argv[])
+void do_fallocate(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		  void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t	ino;
 	blk64_t		start, end;
@@ -2324,7 +2375,8 @@
 }
 #endif /* READ_ONLY */
 
-void do_symlink(int argc, char *argv[])
+void do_symlink(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		void *infop EXT2FS_ATTR((unused)))
 {
 	errcode_t	retval;
 
@@ -2339,7 +2391,9 @@
 }
 
 #if CONFIG_MMP
-void do_dump_mmp(int argc EXT2FS_ATTR((unused)), char *argv[])
+void do_dump_mmp(int argc EXT2FS_ATTR((unused)), char *argv[],
+		 int sci_idx EXT2FS_ATTR((unused)),
+		 void *infop EXT2FS_ATTR((unused)))
 {
 	struct mmp_struct *mmp_s;
 	unsigned long long mmp_block;
@@ -2399,7 +2453,9 @@
 }
 #else
 void do_dump_mmp(int argc EXT2FS_ATTR((unused)),
-		 char *argv[] EXT2FS_ATTR((unused)))
+		 char *argv[] EXT2FS_ATTR((unused)),
+		 int sci_idx EXT2FS_ATTR((unused)),
+		 void *infop EXT2FS_ATTR((unused)))
 {
 	fprintf(stdout, "MMP is unsupported, please recompile with "
 	                "--enable-mmp\n");
@@ -2557,39 +2613,39 @@
 				superblock, blocksize, catastrophic,
 				data_filename, undo_file);
 
-	sci_idx = ss_create_invocation(debug_prog_name, "0.0", (char *) NULL,
-				       &debug_cmds, &retval);
+	ss_sci_idx = ss_create_invocation(debug_prog_name, "0.0", (char *) NULL,
+					  &debug_cmds, &retval);
 	if (retval) {
-		ss_perror(sci_idx, retval, "creating invocation");
+		ss_perror(ss_sci_idx, retval, "creating invocation");
 		exit(1);
 	}
-	ss_get_readline(sci_idx);
+	ss_get_readline(ss_sci_idx);
 
-	(void) ss_add_request_table (sci_idx, &ss_std_requests, 1, &retval);
+	(void) ss_add_request_table(ss_sci_idx, &ss_std_requests, 1, &retval);
 	if (retval) {
-		ss_perror(sci_idx, retval, "adding standard requests");
+		ss_perror(ss_sci_idx, retval, "adding standard requests");
 		exit (1);
 	}
 	if (extra_cmds)
-		ss_add_request_table (sci_idx, extra_cmds, 1, &retval);
+		ss_add_request_table(ss_sci_idx, extra_cmds, 1, &retval);
 	if (retval) {
-		ss_perror(sci_idx, retval, "adding extra requests");
+		ss_perror(ss_sci_idx, retval, "adding extra requests");
 		exit (1);
 	}
 	if (request) {
 		retval = 0;
-		retval = ss_execute_line(sci_idx, request);
+		retval = ss_execute_line(ss_sci_idx, request);
 		if (retval) {
-			ss_perror(sci_idx, retval, request);
+			ss_perror(ss_sci_idx, retval, request);
 			exit_status++;
 		}
 	} else if (cmd_file) {
-		exit_status = source_file(cmd_file, sci_idx);
+		exit_status = source_file(cmd_file, ss_sci_idx);
 	} else {
-		ss_listen(sci_idx);
+		ss_listen(ss_sci_idx);
 	}
 
-	ss_delete_invocation(sci_idx);
+	ss_delete_invocation(ss_sci_idx);
 
 	if (current_fs)
 		close_filesystem();
diff --git a/debugfs/debugfs.h b/debugfs/debugfs.h
index 93f036d..d1d13b4 100644
--- a/debugfs/debugfs.h
+++ b/debugfs/debugfs.h
@@ -25,7 +25,7 @@
 extern ext2_filsys current_fs;
 extern quota_ctx_t current_qctx;
 extern ext2_ino_t	root, cwd;
-extern int sci_idx;
+extern int ss_sci_idx;
 extern ss_request_table debug_cmds, extent_cmds;
 
 extern void reset_getopt(void);
@@ -67,127 +67,127 @@
 /* ss command functions */
 
 /* dump.c */
-extern void do_dump(int argc, char **argv);
-extern void do_cat(int argc, char **argv);
-extern void do_rdump(int argc, char **argv);
+extern void do_dump(int argc, char **argv, int sci_idx, void *infop);
+extern void do_cat(int argc, char **argv, int sci_idx, void *infop);
+extern void do_rdump(int argc, char **argv, int sci_idx, void *infop);
 
 /* extent_inode.c */
-extern void do_extent_open(int argc, char **argv);
-extern void do_extent_close(int argc, char **argv);
-extern void do_current_node(int argc, char **argv);
-extern void do_root_node(int argc, char **argv);
-extern void do_last_leaf(int argc, char **argv);
-extern void do_first_sib(int argc, char **argv);
-extern void do_last_sib(int argc, char **argv);
-extern void do_next_sib(int argc, char **argv);
-extern void do_prev_sib(int argc, char **argv);
-extern void do_next_leaf(int argc, char **argv);
-extern void do_prev_leaf(int argc, char **argv);
-extern void do_next(int argc, char **argv);
-extern void do_prev(int argc, char **argv);
-extern void do_up(int argc, char **argv);
-extern void do_down(int argc, char **argv);
-extern void do_delete_node(int argc, char **argv);
-extern void do_replace_node(int argc, char **argv);
-extern void do_split_node(int argc, char **argv);
-extern void do_insert_node(int argc, char **argv);
-extern void do_set_bmap(int argc, char **argv);
-extern void do_print_all(int argc, char **argv);
-extern void do_fix_parents(int argc, char **argv);
-extern void do_info(int argc, char **argv);
-extern void do_goto_block(int argc, char **argv);
+extern void do_extent_open(int argc, char **argv, int sci_idx, void *infop);
+extern void do_extent_close(int argc, char **argv, int sci_idx, void *infop);
+extern void do_current_node(int argc, char **argv, int sci_idx, void *infop);
+extern void do_root_node(int argc, char **argv, int sci_idx, void *infop);
+extern void do_last_leaf(int argc, char **argv, int sci_idx, void *infop);
+extern void do_first_sib(int argc, char **argv, int sci_idx, void *infop);
+extern void do_last_sib(int argc, char **argv, int sci_idx, void *infop);
+extern void do_next_sib(int argc, char **argv, int sci_idx, void *infop);
+extern void do_prev_sib(int argc, char **argv, int sci_idx, void *infop);
+extern void do_next_leaf(int argc, char **argv, int sci_idx, void *infop);
+extern void do_prev_leaf(int argc, char **argv, int sci_idx, void *infop);
+extern void do_next(int argc, char **argv, int sci_idx, void *infop);
+extern void do_prev(int argc, char **argv, int sci_idx, void *infop);
+extern void do_up(int argc, char **argv, int sci_idx, void *infop);
+extern void do_down(int argc, char **argv, int sci_idx, void *infop);
+extern void do_delete_node(int argc, char **argv, int sci_idx, void *infop);
+extern void do_replace_node(int argc, char **argv, int sci_idx, void *infop);
+extern void do_split_node(int argc, char **argv, int sci_idx, void *infop);
+extern void do_insert_node(int argc, char **argv, int sci_idx, void *infop);
+extern void do_set_bmap(int argc, char **argv, int sci_idx, void *infop);
+extern void do_print_all(int argc, char **argv, int sci_idx, void *infop);
+extern void do_fix_parents(int argc, char **argv, int sci_idx, void *infop);
+extern void do_info(int argc, char **argv, int sci_idx, void *infop);
+extern void do_goto_block(int argc, char **argv, int sci_idx, void *infop);
 
 /* htree.c */
-extern void do_htree_dump(int argc, char **argv);
-extern void do_dx_hash(int argc, char **argv);
-extern void do_dirsearch(int argc, char **argv);
+extern void do_htree_dump(int argc, char **argv, int sci_idx, void *infop);
+extern void do_dx_hash(int argc, char **argv, int sci_idx, void *infop);
+extern void do_dirsearch(int argc, char **argv, int sci_idx, void *infop);
 
 /* logdump.c */
-extern void do_logdump(int argc, char **argv);
+extern void do_logdump(int argc, char **argv, int sci_idx, void *infop);
 
 /* lsdel.c */
-extern void do_lsdel(int argc, char **argv);
+extern void do_lsdel(int argc, char **argv, int sci_idx, void *infop);
 
 /* icheck.c */
-extern void do_icheck(int argc, char **argv);
+extern void do_icheck(int argc, char **argv, int sci_idx, void *infop);
 
 /* ncheck.c */
-extern void do_ncheck(int argc, char **argv);
+extern void do_ncheck(int argc, char **argv, int sci_idx, void *infop);
 
 /* set_fields.c */
-extern void do_set_super(int argc, char **);
-extern void do_set_inode(int argc, char **);
-extern void do_set_block_group_descriptor(int argc, char **);
+extern void do_set_super(int argc, char **, int sci_idx, void *infop);
+extern void do_set_inode(int argc, char **, int sci_idx, void *infop);
+extern void do_set_block_group_descriptor(int argc, char **, int sci_idx, void *infop);
 
 /* unused.c */
-extern void do_dump_unused(int argc, char **argv);
+extern void do_dump_unused(int argc, char **argv, int sci_idx, void *infop);
 
 /* debugfs.c */
 extern void internal_dump_inode(FILE *, const char *, ext2_ino_t,
 				struct ext2_inode *, int);
 
-extern void do_dirty_filesys(int argc, char **argv);
-extern void do_open_filesys(int argc, char **argv);
-extern void do_close_filesys(int argc, char **argv);
-extern void do_lcd(int argc, char **argv);
-extern void do_init_filesys(int argc, char **argv);
-extern void do_show_super_stats(int argc, char **argv);
-extern void do_kill_file(int argc, char **argv);
-extern void do_rm(int argc, char **argv);
-extern void do_link(int argc, char **argv);
-extern void do_undel(int argc, char **argv);
-extern void do_unlink(int argc, char **argv);
-extern void do_copy_inode(int argc, char *argv[]);
-extern void do_find_free_block(int argc, char **argv);
-extern void do_find_free_inode(int argc, char **argv);
-extern void do_stat(int argc, char **argv);
-extern void do_dump_extents(int argc, char **argv);
-extern void do_blocks(int argc, char *argv[]);
+extern void do_dirty_filesys(int argc, char **argv, int sci_idx, void *infop);
+extern void do_open_filesys(int argc, char **argv, int sci_idx, void *infop);
+extern void do_close_filesys(int argc, char **argv, int sci_idx, void *infop);
+extern void do_lcd(int argc, char **argv, int sci_idx, void *infop);
+extern void do_init_filesys(int argc, char **argv, int sci_idx, void *infop);
+extern void do_show_super_stats(int argc, char **argv, int sci_idx, void *infop);
+extern void do_kill_file(int argc, char **argv, int sci_idx, void *infop);
+extern void do_rm(int argc, char **argv, int sci_idx, void *infop);
+extern void do_link(int argc, char **argv, int sci_idx, void *infop);
+extern void do_undel(int argc, char **argv, int sci_idx, void *infop);
+extern void do_unlink(int argc, char **argv, int sci_idx, void *infop);
+extern void do_copy_inode(int argc, char *argv[], int sci_idx, void *infop);
+extern void do_find_free_block(int argc, char **argv, int sci_idx, void *infop);
+extern void do_find_free_inode(int argc, char **argv, int sci_idx, void *infop);
+extern void do_stat(int argc, char **argv, int sci_idx, void *infop);
+extern void do_dump_extents(int argc, char **argv, int sci_idx, void *infop);
+extern void do_blocks(int argc, char *argv[], int sci_idx, void *infop);
 
-extern void do_chroot(int argc, char **argv);
-extern void do_clri(int argc, char **argv);
-extern void do_freei(int argc, char **argv);
-extern void do_seti(int argc, char **argv);
-extern void do_testi(int argc, char **argv);
-extern void do_freeb(int argc, char **argv);
-extern void do_setb(int argc, char **argv);
-extern void do_testb(int argc, char **argv);
-extern void do_modify_inode(int argc, char **argv);
-extern void do_list_dir(int argc, char **argv);
-extern void do_change_working_dir(int argc, char **argv);
-extern void do_print_working_directory(int argc, char **argv);
-extern void do_write(int argc, char **argv);
-extern void do_mknod(int argc, char **argv);
-extern void do_mkdir(int argc, char **argv);
-extern void do_rmdir(int argc, char **argv);
-extern void do_show_debugfs_params(int argc, char **argv);
-extern void do_expand_dir(int argc, char **argv);
-extern void do_features(int argc, char **argv);
-extern void do_bmap(int argc, char **argv);
-extern void do_imap(int argc, char **argv);
-extern void do_idump(int argc, char *argv[]);
-extern void do_set_current_time(int argc, char **argv);
-extern void do_supported_features(int argc, char **argv);
-extern void do_punch(int argc, char **argv);
-extern void do_fallocate(int argc, char **argv);
-extern void do_symlink(int argc, char **argv);
+extern void do_chroot(int argc, char **argv, int sci_idx, void *infop);
+extern void do_clri(int argc, char **argv, int sci_idx, void *infop);
+extern void do_freei(int argc, char **argv, int sci_idx, void *infop);
+extern void do_seti(int argc, char **argv, int sci_idx, void *infop);
+extern void do_testi(int argc, char **argv, int sci_idx, void *infop);
+extern void do_freeb(int argc, char **argv, int sci_idx, void *infop);
+extern void do_setb(int argc, char **argv, int sci_idx, void *infop);
+extern void do_testb(int argc, char **argv, int sci_idx, void *infop);
+extern void do_modify_inode(int argc, char **argv, int sci_idx, void *infop);
+extern void do_list_dir(int argc, char **argv, int sci_idx, void *infop);
+extern void do_change_working_dir(int argc, char **argv, int sci_idx, void *infop);
+extern void do_print_working_directory(int argc, char **argv, int sci_idx, void *infop);
+extern void do_write(int argc, char **argv, int sci_idx, void *infop);
+extern void do_mknod(int argc, char **argv, int sci_idx, void *infop);
+extern void do_mkdir(int argc, char **argv, int sci_idx, void *infop);
+extern void do_rmdir(int argc, char **argv, int sci_idx, void *infop);
+extern void do_show_debugfs_params(int argc, char **argv, int sci_idx, void *infop);
+extern void do_expand_dir(int argc, char **argv, int sci_idx, void *infop);
+extern void do_features(int argc, char **argv, int sci_idx, void *infop);
+extern void do_bmap(int argc, char **argv, int sci_idx, void *infop);
+extern void do_imap(int argc, char **argv, int sci_idx, void *infop);
+extern void do_idump(int argc, char *argv[], int sci_idx, void *infop);
+extern void do_set_current_time(int argc, char **argv, int sci_idx, void *infop);
+extern void do_supported_features(int argc, char **argv, int sci_idx, void *infop);
+extern void do_punch(int argc, char **argv, int sci_idx, void *infop);
+extern void do_fallocate(int argc, char **argv, int sci_idx, void *infop);
+extern void do_symlink(int argc, char **argv, int sci_idx, void *infop);
 
-extern void do_dump_mmp(int argc, char **argv);
-extern void do_set_mmp_value(int argc, char **argv);
+extern void do_dump_mmp(int argc, char **argv, int sci_idx, void *infop);
+extern void do_set_mmp_value(int argc, char **argv, int sci_idx, void *infop);
 
-extern void do_freefrag(int argc, char **argv);
-extern void do_filefrag(int argc, char *argv[]);
+extern void do_freefrag(int argc, char **argv, int sci_idx, void *infop);
+extern void do_filefrag(int argc, char *argv[], int sci_idx, void *infop);
 
 /* do_journal.c */
 
-extern void do_journal_write(int argc, char *argv[]);
-extern void do_journal_open(int argc, char *argv[]);
-extern void do_journal_close(int argc, char *argv[]);
-extern void do_journal_run(int argc, char *argv[]);
+extern void do_journal_write(int argc, char *argv[], int sci_idx, void *infop);
+extern void do_journal_open(int argc, char *argv[], int sci_idx, void *infop);
+extern void do_journal_close(int argc, char *argv[], int sci_idx, void *infop);
+extern void do_journal_run(int argc, char *argv[], int sci_idx, void *infop);
 
 /* quota.c */
-extern void do_list_quota(int argc, char *argv[]);
-extern void do_get_quota(int argc, char *argv[]);
+extern void do_list_quota(int argc, char *argv[], int sci_idx, void *infop);
+extern void do_get_quota(int argc, char *argv[], int sci_idx, void *infop);
 
 /* util.c */
 extern __s64 string_to_time(const char *arg);
@@ -195,14 +195,14 @@
 
 /* xattrs.c */
 void dump_inode_attributes(FILE *out, ext2_ino_t ino);
-void do_get_xattr(int argc, char **argv);
-void do_set_xattr(int argc, char **argv);
-void do_rm_xattr(int argc, char **argv);
-void do_list_xattr(int argc, char **argv);
+void do_get_xattr(int argc, char **argv, int sci_idx, void *infop);
+void do_set_xattr(int argc, char **argv, int sci_idx, void *infop);
+void do_rm_xattr(int argc, char **argv, int sci_idx, void *infop);
+void do_list_xattr(int argc, char **argv, int sci_idx, void *infop);
 void raw_inode_xattr_dump(FILE *f, unsigned char *buf, unsigned int len);
 void block_xattr_dump(FILE *f, unsigned char *buf, unsigned int len);
 
 /* zap.c */
-extern void do_zap_block(int argc, char **argv);
-extern void do_block_dump(int argc, char **argv);
+extern void do_zap_block(int argc, char **argv, int sci_idx, void *infop);
+extern void do_block_dump(int argc, char **argv, int sci_idx, void *infop);
 extern void do_byte_hexdump(FILE *fp, unsigned char *buf, size_t bufsize);
diff --git a/debugfs/do_journal.c b/debugfs/do_journal.c
index d7ab916..eeb363e 100644
--- a/debugfs/do_journal.c
+++ b/debugfs/do_journal.c
@@ -534,7 +534,8 @@
 	return err;
 }
 
-void do_journal_write(int argc, char *argv[])
+void do_journal_write(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		      void *infop EXT2FS_ATTR((unused)))
 {
 	blk64_t *blist = NULL, *rlist = NULL;
 	size_t bn = 0, rn = 0;
@@ -856,7 +857,8 @@
 	jfs_set_feature_64bit(journal);
 }
 
-void do_journal_open(int argc, char *argv[])
+void do_journal_open(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		     void *infop EXT2FS_ATTR((unused)))
 {
 	int opt, enable_csum = 0, csum_ver = 3;
 	journal_t *journal;
@@ -926,7 +928,9 @@
 }
 
 void do_journal_close(int argc EXT2FS_ATTR((unused)),
-		      char *argv[] EXT2FS_ATTR((unused)))
+		      char *argv[] EXT2FS_ATTR((unused)),
+		      int sci_idx EXT2FS_ATTR((unused)),
+		      void *infop EXT2FS_ATTR((unused)))
 {
 	if (current_journal == NULL) {
 		printf("Journal not open.\n");
@@ -936,7 +940,9 @@
 	ext2fs_close_journal(current_fs, &current_journal);
 }
 
-void do_journal_run(int argc EXT2FS_ATTR((unused)), char *argv[])
+void do_journal_run(int argc EXT2FS_ATTR((unused)), char *argv[],
+		    int sci_idx EXT2FS_ATTR((unused)),
+		    void *infop EXT2FS_ATTR((unused)))
 {
 	errcode_t err;
 
diff --git a/debugfs/dump.c b/debugfs/dump.c
index 4d5daf0..fdd6619 100644
--- a/debugfs/dump.c
+++ b/debugfs/dump.c
@@ -144,7 +144,8 @@
 	return;
 }
 
-void do_dump(int argc, char **argv)
+void do_dump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+	     void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t	inode;
 	int		fd;
@@ -322,7 +323,8 @@
 	return 0;
 }
 
-void do_rdump(int argc, char **argv)
+void do_rdump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+	      void *infop EXT2FS_ATTR((unused)))
 {
 	struct stat st;
 	char *dest_dir;
@@ -366,7 +368,8 @@
 	}
 }
 
-void do_cat(int argc, char **argv)
+void do_cat(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+	    void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t	inode;
 
diff --git a/debugfs/e2freefrag.c b/debugfs/e2freefrag.c
index 268fac9..6eb4c73 100644
--- a/debugfs/e2freefrag.c
+++ b/debugfs/e2freefrag.c
@@ -371,7 +371,8 @@
 #ifdef DEBUGFS
 #include "debugfs.h"
 
-void do_freefrag(int argc, char **argv)
+void do_freefrag(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+		 void *infop EXT2FS_ATTR((unused)))
 #else
 int main(int argc, char *argv[])
 #endif
diff --git a/debugfs/extent_inode.c b/debugfs/extent_inode.c
index c7a92a7..ada1308 100644
--- a/debugfs/extent_inode.c
+++ b/debugfs/extent_inode.c
@@ -64,7 +64,8 @@
 
 static char *orig_prompt, *extent_prompt;
 
-void do_extent_open(int argc, char *argv[])
+void do_extent_open(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		    void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t	inode;
 	int		ret;
@@ -113,7 +114,8 @@
 	return;
 }
 
-void do_extent_close(int argc, char *argv[])
+void do_extent_close(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		     void *infop EXT2FS_ATTR((unused)))
 {
 	int ret;
 
@@ -158,72 +160,86 @@
 	dbg_print_extent(0, &extent);
 }
 
-void do_current_node(int argc, char *argv[])
+void do_current_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		     void *infop EXT2FS_ATTR((unused)))
 {
 	generic_goto_node("current_node", argc, argv, EXT2_EXTENT_CURRENT);
 }
 
-void do_root_node(int argc, char *argv[])
+void do_root_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		  void *infop EXT2FS_ATTR((unused)))
 {
 	generic_goto_node("root_node", argc, argv, EXT2_EXTENT_ROOT);
 }
 
-void do_last_leaf(int argc, char *argv[])
+void do_last_leaf(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		  void *infop EXT2FS_ATTR((unused)))
 {
 	generic_goto_node("last_leaf", argc, argv, EXT2_EXTENT_LAST_LEAF);
 }
 
-void do_first_sib(int argc, char *argv[])
+void do_first_sib(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		  void *infop EXT2FS_ATTR((unused)))
 {
 	generic_goto_node("first_sib", argc, argv, EXT2_EXTENT_FIRST_SIB);
 }
 
-void do_last_sib(int argc, char *argv[])
+void do_last_sib(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		 void *infop EXT2FS_ATTR((unused)))
 {
 	generic_goto_node("next_sib", argc, argv, EXT2_EXTENT_LAST_SIB);
 }
 
-void do_next_sib(int argc, char *argv[])
+void do_next_sib(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		 void *infop EXT2FS_ATTR((unused)))
 {
 	generic_goto_node("next_sib", argc, argv, EXT2_EXTENT_NEXT_SIB);
 }
 
-void do_prev_sib(int argc, char *argv[])
+void do_prev_sib(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		 void *infop EXT2FS_ATTR((unused)))
 {
 	generic_goto_node("prev_sib", argc, argv, EXT2_EXTENT_PREV_SIB);
 }
 
-void do_next_leaf(int argc, char *argv[])
+void do_next_leaf(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		 void *infop EXT2FS_ATTR((unused)))
 {
 	generic_goto_node("next_leaf", argc, argv, EXT2_EXTENT_NEXT_LEAF);
 }
 
-void do_prev_leaf(int argc, char *argv[])
+void do_prev_leaf(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		  void *infop EXT2FS_ATTR((unused)))
 {
 	generic_goto_node("prev_leaf", argc, argv, EXT2_EXTENT_PREV_LEAF);
 }
 
-void do_next(int argc, char *argv[])
+void do_next(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	     void *infop EXT2FS_ATTR((unused)))
 {
 	generic_goto_node("next", argc, argv, EXT2_EXTENT_NEXT);
 }
 
-void do_prev(int argc, char *argv[])
+void do_prev(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	     void *infop EXT2FS_ATTR((unused)))
 {
 	generic_goto_node("prev", argc, argv, EXT2_EXTENT_PREV);
 }
 
-void do_up(int argc, char *argv[])
+void do_up(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	   void *infop EXT2FS_ATTR((unused)))
 {
 	generic_goto_node("up", argc, argv, EXT2_EXTENT_UP);
 }
 
-void do_down(int argc, char *argv[])
+void do_down(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	     void *infop EXT2FS_ATTR((unused)))
 {
 	generic_goto_node("down", argc, argv, EXT2_EXTENT_DOWN);
 }
 
-void do_delete_node(int argc, char *argv[])
+void do_delete_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		    void *infop EXT2FS_ATTR((unused)))
 {
 	struct ext2fs_extent extent;
 	errcode_t	retval;
@@ -245,7 +261,8 @@
 	dbg_print_extent(0, &extent);
 }
 
-void do_replace_node(int argc, char *argv[])
+void do_replace_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		     void *infop EXT2FS_ATTR((unused)))
 {
 	const char	*usage = "[--uninit] <lblk> <len> <pblk>";
 	errcode_t	retval;
@@ -289,7 +306,8 @@
 	generic_goto_node(NULL, argc, argv, EXT2_EXTENT_CURRENT);
 }
 
-void do_split_node(int argc, char *argv[])
+void do_split_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		   void *infop EXT2FS_ATTR((unused)))
 {
 	errcode_t	retval;
 
@@ -305,7 +323,8 @@
 	generic_goto_node(NULL, argc, argv, EXT2_EXTENT_CURRENT);
 }
 
-void do_insert_node(int argc, char *argv[])
+void do_insert_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		    void *infop EXT2FS_ATTR((unused)))
 {
 	const char	*usage = "[--after] [--uninit] <lblk> <len> <pblk>";
 	errcode_t	retval;
@@ -363,7 +382,8 @@
 	generic_goto_node(NULL, argc, argv, EXT2_EXTENT_CURRENT);
 }
 
-void do_set_bmap(int argc, char **argv)
+void do_set_bmap(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+		 void *infop EXT2FS_ATTR((unused)))
 {
 	const char	*usage = "[--uninit] <lblk> <pblk>";
 	struct ext2fs_extent extent;
@@ -411,7 +431,8 @@
 	dbg_print_extent(0, &extent);
 }
 
-void do_print_all(int argc, char **argv)
+void do_print_all(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+		  void *infop EXT2FS_ATTR((unused)))
 {
 	const char	*usage = "[--leaf-only|--reverse|--reverse-leaf]";
 	struct ext2fs_extent	extent;
@@ -462,7 +483,8 @@
 	}
 }
 
-void do_fix_parents(int argc, char **argv)
+void do_fix_parents(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+		    void *infop EXT2FS_ATTR((unused)))
 {
 	errcode_t		retval;
 
@@ -477,7 +499,8 @@
 	}
 }
 
-void do_info(int argc, char **argv)
+void do_info(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+	     void *infop EXT2FS_ATTR((unused)))
 {
 	struct ext2fs_extent	extent;
 	struct ext2_extent_info	info;
@@ -510,7 +533,8 @@
 	       info.max_uninit_len);
 }
 
-void do_goto_block(int argc, char **argv)
+void do_goto_block(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+		   void *infop EXT2FS_ATTR((unused)))
 {
 	errcode_t		retval;
 	blk64_t			blk;
diff --git a/debugfs/filefrag.c b/debugfs/filefrag.c
index 128598b..961b696 100644
--- a/debugfs/filefrag.c
+++ b/debugfs/filefrag.c
@@ -260,7 +260,8 @@
 	}
 }
 
-void do_filefrag(int argc, char *argv[])
+void do_filefrag(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		 void *infop EXT2FS_ATTR((unused)))
 {
 	struct filefrag_struct fs;
 	struct ext2_inode inode;
diff --git a/debugfs/htree.c b/debugfs/htree.c
index cf7d78a..0c6a385 100644
--- a/debugfs/htree.c
+++ b/debugfs/htree.c
@@ -227,7 +227,8 @@
 
 
 
-void do_htree_dump(int argc, char *argv[])
+void do_htree_dump(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		   void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t	ino;
 	struct ext2_inode inode;
@@ -302,7 +303,8 @@
 /*
  * This function prints the hash of a given file.
  */
-void do_dx_hash(int argc, char *argv[])
+void do_dx_hash(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_dirhash_t hash, minor_hash;
 	errcode_t	err;
@@ -362,7 +364,8 @@
 			    e2_blkcnt_t blockcnt, blk64_t ref_blk,
 			    int ref_offset, void *priv_data);
 
-void do_dirsearch(int argc, char *argv[])
+void do_dirsearch(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		  void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t	inode;
 	struct process_block_struct pb;
diff --git a/debugfs/icheck.c b/debugfs/icheck.c
index 3b9bd14..71164cf 100644
--- a/debugfs/icheck.c
+++ b/debugfs/icheck.c
@@ -53,7 +53,8 @@
 	return 0;
 }
 
-void do_icheck(int argc, char **argv)
+void do_icheck(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+	       void *infop EXT2FS_ATTR((unused)))
 {
 	struct block_walk_struct bw;
 	struct block_info	*binfo;
diff --git a/debugfs/logdump.c b/debugfs/logdump.c
index 03edb44..e286ae8 100644
--- a/debugfs/logdump.c
+++ b/debugfs/logdump.c
@@ -72,7 +72,8 @@
 		blocknr -= (be32_to_cpu((jsb)->s_maxlen) -	\
 			    be32_to_cpu((jsb)->s_first));
 
-void do_logdump(int argc, char **argv)
+void do_logdump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+		    void *infop EXT2FS_ATTR((unused)))
 {
 	int		c;
 	int		retval;
diff --git a/debugfs/ls.c b/debugfs/ls.c
index bfc28cb..a1e8f4e 100644
--- a/debugfs/ls.c
+++ b/debugfs/ls.c
@@ -189,7 +189,8 @@
 	return 0;
 }
 
-void do_list_dir(int argc, char *argv[])
+void do_list_dir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		 void *infop EXT2FS_ATTR((unused)))
 {
 	struct ext2_inode inode;
 	ext2_ino_t	ino;
diff --git a/debugfs/lsdel.c b/debugfs/lsdel.c
index 946b268..c0d5890 100644
--- a/debugfs/lsdel.c
+++ b/debugfs/lsdel.c
@@ -71,7 +71,8 @@
 	return 0;
 }
 
-void do_lsdel(int argc, char **argv)
+void do_lsdel(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+	      void *infop EXT2FS_ATTR((unused)))
 {
 	struct lsdel_struct 	lsd;
 	struct deleted_info	*delarray;
diff --git a/debugfs/ncheck.c b/debugfs/ncheck.c
index dc4ab56..011f26d 100644
--- a/debugfs/ncheck.c
+++ b/debugfs/ncheck.c
@@ -28,7 +28,7 @@
 struct inode_walk_struct {
 	ext2_ino_t		dir;
 	ext2_ino_t		*iarray;
-	int			inodes_left;
+	int			names_left;
 	int			num_inodes;
 	int			position;
 	char			*parent;
@@ -81,16 +81,17 @@
 				}
 			}
 			putc('\n', stdout);
-			iw->inodes_left--;
+			iw->names_left--;
 		}
 	}
-	if (!iw->inodes_left)
+	if (!iw->names_left)
 		return DIRENT_ABORT;
 
 	return 0;
 }
 
-void do_ncheck(int argc, char **argv)
+void do_ncheck(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+	       void *infop EXT2FS_ATTR((unused)))
 {
 	struct inode_walk_struct iw;
 	int			c, i;
@@ -131,15 +132,22 @@
 	}
 	memset(iw.iarray, 0, sizeof(ext2_ino_t) * argc);
 
+	iw.names_left = 0;
 	for (i=0; i < argc; i++) {
 		iw.iarray[i] = strtol(argv[i], &tmp, 0);
 		if (*tmp) {
 			com_err("ncheck", 0, "Bad inode - %s", argv[i]);
 			goto error_out;
 		}
+		if (debugfs_read_inode(iw.iarray[i], &inode, *argv))
+			goto error_out;
+		if (LINUX_S_ISDIR(inode.i_mode))
+			iw.names_left += 1;
+		else
+			iw.names_left += inode.i_links_count;
 	}
 
-	iw.num_inodes = iw.inodes_left = argc;
+	iw.num_inodes = argc;
 
 	retval = ext2fs_open_inode_scan(current_fs, 0, &scan);
 	if (retval) {
@@ -183,7 +191,7 @@
 			goto next;
 		}
 
-		if (iw.inodes_left == 0)
+		if (iw.names_left == 0)
 			break;
 
 	next:
diff --git a/debugfs/quota.c b/debugfs/quota.c
index 0b7c2ee..f792bd7 100644
--- a/debugfs/quota.c
+++ b/debugfs/quota.c
@@ -102,7 +102,8 @@
 	return 0;
 }
 
-void do_list_quota(int argc, char *argv[])
+void do_list_quota(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		   void *infop EXT2FS_ATTR((unused)))
 {
 	errcode_t	retval;
 	int		type;
@@ -131,7 +132,8 @@
 	}
 }
 
-void do_get_quota(int argc, char *argv[])
+void do_get_quota(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		  void *infop EXT2FS_ATTR((unused)))
 {
 	int		err, type;
 	struct quota_handle *qh;
diff --git a/debugfs/set_fields.c b/debugfs/set_fields.c
index 6594906..b19d1a7 100644
--- a/debugfs/set_fields.c
+++ b/debugfs/set_fields.c
@@ -75,8 +75,10 @@
 static errcode_t parse_mmp_clear(struct field_set_info *info, char *field,
 				 char *arg);
 
+#if __GNUC_PREREQ (4, 6) || defined(__clang__)
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
 
 static struct field_set_info super_fields[] = {
 	{ "inodes_count", &set_sb.s_inodes_count, NULL, 4, parse_uint },
@@ -289,7 +291,9 @@
 	{ "checksum", &set_mmp.mmp_checksum, NULL, 4, parse_uint },
 	{ 0, 0, 0, 0 }
 };
+#if __GNUC_PREREQ (4, 6)
 #pragma GCC diagnostic pop
+#endif
 
 #ifdef UNITTEST
 
@@ -719,7 +723,8 @@
 }
 
 
-void do_set_super(int argc, char *argv[])
+void do_set_super(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		  void *infop EXT2FS_ATTR((unused)))
 {
 	const char *usage = "<field> <value>\n"
 		"\t\"set_super_value -l\" will list the names of "
@@ -746,7 +751,8 @@
 	}
 }
 
-void do_set_inode(int argc, char *argv[])
+void do_set_inode(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		  void *infop EXT2FS_ATTR((unused)))
 {
 	const char *usage = "<inode> <field> <value>\n"
 		"\t\"set_inode_field -l\" will list the names of "
@@ -784,7 +790,9 @@
 	}
 }
 
-void do_set_block_group_descriptor(int argc, char *argv[])
+void do_set_block_group_descriptor(int argc, char *argv[],
+				   int sci_idx EXT2FS_ATTR((unused)),
+				   void *infop EXT2FS_ATTR((unused)))
 {
 	const char *usage = "<bg number> <field> <value>\n"
 		"\t\"set_block_group -l\" will list the names of "
@@ -862,7 +870,8 @@
 }
 
 #ifdef CONFIG_MMP
-void do_set_mmp_value(int argc, char *argv[])
+void do_set_mmp_value(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		      void *infop EXT2FS_ATTR((unused)))
 {
 	const char *usage = "<field> <value>\n"
 		"\t\"set_mmp_value -l\" will list the names of "
@@ -921,7 +930,9 @@
 }
 #else
 void do_set_mmp_value(int argc EXT2FS_ATTR((unused)),
-		      char *argv[] EXT2FS_ATTR((unused)))
+		      char *argv[] EXT2FS_ATTR((unused)),
+		      int sci_idx EXT2FS_ATTR((unused)),
+		      void *infop EXT2FS_ATTR((unused)))
 {
 	fprintf(stdout, "MMP is unsupported, please recompile with "
 	                "--enable-mmp\n");
diff --git a/debugfs/unused.c b/debugfs/unused.c
index 4cb1191..a6b44b5 100644
--- a/debugfs/unused.c
+++ b/debugfs/unused.c
@@ -25,7 +25,9 @@
 
 #include "debugfs.h"
 
-void do_dump_unused(int argc EXT2FS_ATTR((unused)), char **argv)
+void do_dump_unused(int argc EXT2FS_ATTR((unused)), char **argv,
+		    int sci_idx EXT2FS_ATTR((unused)),
+		    void *infop EXT2FS_ATTR((unused)))
 {
 	blk64_t		blk;
 	unsigned char	buf[EXT2_MAX_BLOCK_SIZE];
diff --git a/debugfs/xattrs.c b/debugfs/xattrs.c
index c29761e..8bbaaed 100644
--- a/debugfs/xattrs.c
+++ b/debugfs/xattrs.c
@@ -117,7 +117,8 @@
 	err = ext2fs_xattrs_close(&h);
 }
 
-void do_list_xattr(int argc, char **argv)
+void do_list_xattr(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+		   void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t ino;
 
@@ -137,7 +138,8 @@
 	dump_inode_attributes(stdout, ino);
 }
 
-void do_get_xattr(int argc, char **argv)
+void do_get_xattr(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+		  void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t ino;
 	struct ext2_xattr_handle *h;
@@ -234,7 +236,8 @@
 		fclose(fp);
 }
 
-void do_set_xattr(int argc, char **argv)
+void do_set_xattr(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+		  void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t ino;
 	struct ext2_xattr_handle *h;
@@ -317,7 +320,8 @@
 	}
 }
 
-void do_rm_xattr(int argc, char **argv)
+void do_rm_xattr(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+		 void *infop EXT2FS_ATTR((unused)))
 {
 	ext2_ino_t ino;
 	struct ext2_xattr_handle *h;
diff --git a/debugfs/zap.c b/debugfs/zap.c
index a849b90..c7996b2 100644
--- a/debugfs/zap.c
+++ b/debugfs/zap.c
@@ -25,7 +25,8 @@
 
 #include "debugfs.h"
 
-void do_zap_block(int argc, char *argv[])
+void do_zap_block(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		    void *infop EXT2FS_ATTR((unused)))
 {
 	unsigned long	pattern = 0;
 	unsigned char	*buf;
@@ -167,7 +168,8 @@
 	return;
 }
 
-void do_block_dump(int argc, char *argv[])
+void do_block_dump(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+		    void *infop EXT2FS_ATTR((unused)))
 {
 	unsigned char	*buf;
 	ext2_ino_t	inode;
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 0bee4e4..dab6094 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -21,8 +21,8 @@
 
 install-doc-libs: libext2fs.info libext2fs.dvi
 	$(Q) $(RM) -rf $(DESTDIR)$(infodir)/libext2fs.info*
-	$(E) "	MKINSTALLDIRS $(infodir)"
-	$(Q) $(MKINSTALLDIRS) $(DESTDIR)$(infodir)
+	$(E) "	MKDIR_P $(infodir)"
+	$(Q) $(MKDIR_P) $(DESTDIR)$(infodir)
 	-$(Q) for i in libext2fs.info* ; do \
 		echo "	INSTALL_DATA $(infodir)/$$i" ; \
 		$(INSTALL_DATA) $$i $(DESTDIR)$(infodir)/$$i ; \
diff --git a/doc/RelNotes/v1.02.txt b/doc/RelNotes/v1.02.txt
index 83fefdc..27dce52 100644
--- a/doc/RelNotes/v1.02.txt
+++ b/doc/RelNotes/v1.02.txt
@@ -22,3 +22,4 @@
 Minor compilation fixes:
 	* Fix the order of libraries that were linked in debugfs.
 	* Allow the sources to be compiled with -ansi turned on.
+
diff --git a/doc/RelNotes/v1.34.txt b/doc/RelNotes/v1.34.txt
index 77db125..f61095c 100644
--- a/doc/RelNotes/v1.34.txt
+++ b/doc/RelNotes/v1.34.txt
@@ -127,3 +127,4 @@
 a block number to watch, respectively.  The log messages are sent to
 stderr by default, unless a filename is specified via the
 TEST_IO_LOGFILE environment variable.
+
diff --git a/doc/RelNotes/v1.35.txt b/doc/RelNotes/v1.35.txt
index ea56f74..2a4c520 100644
--- a/doc/RelNotes/v1.35.txt
+++ b/doc/RelNotes/v1.35.txt
@@ -163,3 +163,4 @@
 
 Add portability fixes for FreeBSD and for using fsctl under Darwin to
 support ext2 ioctl's.
+
diff --git a/doc/RelNotes/v1.36.txt b/doc/RelNotes/v1.36.txt
index 8268d41..912bad2 100644
--- a/doc/RelNotes/v1.36.txt
+++ b/doc/RelNotes/v1.36.txt
@@ -299,3 +299,4 @@
 than the GCC 3.4 compile code and triggers compiler warnings on
 sparc64.  Thanks to Matthias Andree for his analysis and suggestions.
 (Addresses Debian Bug #232326)
+
diff --git a/doc/RelNotes/v1.38.txt b/doc/RelNotes/v1.38.txt
index 92eb342..d8ab030 100644
--- a/doc/RelNotes/v1.38.txt
+++ b/doc/RelNotes/v1.38.txt
@@ -135,3 +135,4 @@
 (Addresses Sourceforge Bug: #1180572)
 
 Fixed gcc -Wall nits.
+
diff --git a/doc/RelNotes/v1.40.txt b/doc/RelNotes/v1.40.txt
index 4954052..08608d2 100644
--- a/doc/RelNotes/v1.40.txt
+++ b/doc/RelNotes/v1.40.txt
@@ -1040,3 +1040,4 @@
 
 Add new function to libext2fs, ext2fs_default_journal_size(), which
 returns the default journal size.
+
diff --git a/doc/RelNotes/v1.42.txt b/doc/RelNotes/v1.42.txt
index ae5c930..f0d2dd2 100644
--- a/doc/RelNotes/v1.42.txt
+++ b/doc/RelNotes/v1.42.txt
@@ -1687,3 +1687,4 @@
 posix_memalign().
 
 Fixed a namespace leak in libext2fs (tdb_null).
+
diff --git a/doc/RelNotes/v1.43.6.txt b/doc/RelNotes/v1.43.6.txt
index 8bfe25e..1050d5e 100644
--- a/doc/RelNotes/v1.43.6.txt
+++ b/doc/RelNotes/v1.43.6.txt
@@ -68,4 +68,3 @@
 
 Removed legacy entries for ext4dev in the default mke2fs.conf file.
 
-
diff --git a/doc/RelNotes/v1.43.7.txt b/doc/RelNotes/v1.43.7.txt
index 385de5a..55e434f 100644
--- a/doc/RelNotes/v1.43.7.txt
+++ b/doc/RelNotes/v1.43.7.txt
@@ -27,4 +27,3 @@
 
 Fix various tests to avoid leaving temp files in /tmp.
 
-
diff --git a/doc/RelNotes/v1.43.8.txt b/doc/RelNotes/v1.43.8.txt
index 9edd69b..cb26a16 100644
--- a/doc/RelNotes/v1.43.8.txt
+++ b/doc/RelNotes/v1.43.8.txt
@@ -46,4 +46,3 @@
 Fix compatibility problems with glibc 2.27 casued by a collision with
 copy_file_range().
 
-
diff --git a/doc/RelNotes/v1.43.9.txt b/doc/RelNotes/v1.43.9.txt
index d26003f..6dbe0db 100644
--- a/doc/RelNotes/v1.43.9.txt
+++ b/doc/RelNotes/v1.43.9.txt
@@ -13,4 +13,3 @@
 
 Fix various Debian packaging issues.  (Addresses Debian Bug #269569).
 
-
diff --git a/doc/RelNotes/v1.44.0.txt b/doc/RelNotes/v1.44.0.txt
index 5fa5299..59cd802 100644
--- a/doc/RelNotes/v1.44.0.txt
+++ b/doc/RelNotes/v1.44.0.txt
@@ -79,3 +79,4 @@
 extents for bigalloc file systems.  (Addresses Google Bug #36886699)
 
 Update Czech, Spanish, French, Malay, and Ukrainian translations.
+
diff --git a/doc/RelNotes/v1.44.1.txt b/doc/RelNotes/v1.44.1.txt
index 4716974..4503c92 100644
--- a/doc/RelNotes/v1.44.1.txt
+++ b/doc/RelNotes/v1.44.1.txt
@@ -45,3 +45,4 @@
 size.
 
 Add new regression tests.
+
diff --git a/doc/RelNotes/v1.44.2.txt b/doc/RelNotes/v1.44.2.txt
index 1dca63c..7b5c774 100644
--- a/doc/RelNotes/v1.44.2.txt
+++ b/doc/RelNotes/v1.44.2.txt
@@ -50,3 +50,4 @@
 so they uses mke2fs and ebugfs from the build tree.  They may not exist
 in the users PATH, and if they not or if they are extremely
 old/obsolete, those tests would fail.
+
diff --git a/doc/RelNotes/v1.44.3.txt b/doc/RelNotes/v1.44.3.txt
index 7312621..e68032c 100644
--- a/doc/RelNotes/v1.44.3.txt
+++ b/doc/RelNotes/v1.44.3.txt
@@ -103,3 +103,4 @@
 
 Update Czech, Dutch, Spanish, French, Polish, Swedish, Ukrainian, and
 Vietnamese translations.
+
diff --git a/doc/RelNotes/v1.44.4.txt b/doc/RelNotes/v1.44.4.txt
new file mode 100644
index 0000000..db130c6
--- /dev/null
+++ b/doc/RelNotes/v1.44.4.txt
@@ -0,0 +1,60 @@
+E2fsprogs 1.44.4 (August 18, 2018)
+==================================
+
+Updates/Fixes since v1.44.3:
+
+UI and Features
+---------------
+
+Add basic support for the ext4 verity feature (aka fsverity).  It is a
+read-only compatibility feature which uses Merkle trees to add
+functionality much like dm-verity on a per-file basis.  For this release
+we simply allow e2fsck to accept file systems with the verity feature
+enable (no special handling is needed) and mke2fs to create file systems
+with the verity feature.
+
+
+Fixes
+-----
+
+E2fsck will now properly repair a file system that has both the
+resize_inode and meta_bg features enabled simultaneously (which is never
+supposed to happen, but it could happen in versions of mke2fs before
+1.44.3 when it was given parameters where more than 75% of the block
+group was used for group descriptor tables).
+
+Avoid a floating point exception crash when libblkid tries probing a
+maliciously corrupted HFS+ superblock.
+
+Debugfs's ncheck command now properly will handle inodes that have
+multiple hard links.
+
+On platforms that don't supply strdup, the replacement function for
+strdup() had a bug which would cause it to crash if it was used.
+(Fortunately this only happens if the [scratch_files] feature in e2fsck
+is used.)
+
+Fixed support for devices which have non-512 byte block sizes on Apple
+Darwin.
+
+E2fsprogs 1.44.3 would fail to compile on very old versions of gcc.
+This is now fixed.
+
+Update and clarify man pages.  (Addresses Debian Bug: #757831)
+
+
+Performance, Internal Implementation, Development Support etc.
+--------------------------------------------------------------
+
+Synchronized changes from Android's AOSP e2fsprogs tree.
+
+Instead of building the subset e2fsprogs-libs tar file, add a new
+configure option, --enable-subset.  This along with other changes (such
+as dropping obsolete files that aren't shipped as part of
+e2fsprogs-X.YY.tar.gz) allows us to be able to build the tarball using
+the "git archive" command.
+
+Fixed various debian packaging issues (Addresses Debian Bug: #905195)
+
+Update Danish, Spanish, and Swedish translations.
+
diff --git a/doc/libext2fs.texinfo b/doc/libext2fs.texinfo
index dfc9d9d..6b37f68 100644
--- a/doc/libext2fs.texinfo
+++ b/doc/libext2fs.texinfo
@@ -1,7 +1,7 @@
 \input texinfo    @c -*-texinfo-*-
 @c %**start of header
 @setfilename libext2fs.info
-@settitle The EXT2FS Library (version 1.44.3)
+@settitle The EXT2FS Library (version 1.44.4)
 @synindex tp fn
 @comment %**end of header
 
@@ -60,8 +60,8 @@
 
 @title The EXT2FS Library
 @subtitle The EXT2FS Library
-@subtitle Version 1.44.3
-@subtitle July 2018
+@subtitle Version 1.44.4
+@subtitle August 2018
 
 @author by Theodore Ts'o
 
@@ -101,7 +101,7 @@
 
 @top The EXT2FS Library
 
-This manual documents the EXT2FS Library, version 1.44.3.
+This manual documents the EXT2FS Library, version 1.44.4.
 
 @menu
 * Introduction to the EXT2FS Library::  
diff --git a/e2fsck/Makefile.in b/e2fsck/Makefile.in
index 8fe05e0..676ab7d 100644
--- a/e2fsck/Makefile.in
+++ b/e2fsck/Makefile.in
@@ -187,8 +187,8 @@
 	$(Q) $(SUBSTITUTE_UPTIME) $(srcdir)/e2fsck.conf.5.in e2fsck.conf.5
 
 installdirs:
-	$(E) "	MKINSTALLDIRS $(root_sbindir) $(man8dir)"
-	$(Q) $(MKINSTALLDIRS) $(DESTDIR)$(root_sbindir) \
+	$(E) "	MKDIR_P $(root_sbindir) $(man8dir)"
+	$(Q) $(MKDIR_P) $(DESTDIR)$(root_sbindir) \
 		$(DESTDIR)$(man8dir) $(DESTDIR)$(man5dir)
 
 install: $(PROGS) $(MANPAGES) $(FMANPAGES) installdirs
diff --git a/e2fsck/Makefile.pq b/e2fsck/Makefile.pq
deleted file mode 100644
index 18a3cd3..0000000
--- a/e2fsck/Makefile.pq
+++ /dev/null
@@ -1,9 +0,0 @@
-TOPSRC=..
-LIBNAME=E2FSCK.LIB
-OBJFILE=E2FSCK.LST
-
-OBJS= e2fsck.obj super.obj pass1.obj pass2.obj pass3.obj \
-	pass4.obj pass5.obj dirinfo.obj
-
-!include $(TOPSRC)\powerquest\MCONFIG
-
diff --git a/e2fsck/jfs_user.h b/e2fsck/jfs_user.h
index 8289795..a1c6951 100644
--- a/e2fsck/jfs_user.h
+++ b/e2fsck/jfs_user.h
@@ -27,6 +27,7 @@
 /*
  * Pull in the definition of the e2fsck context structure
  */
+#include "config.h"
 #include "e2fsck.h"
 #endif
 
diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c
index ce43821..8abf0c3 100644
--- a/e2fsck/pass1.c
+++ b/e2fsck/pass1.c
@@ -3447,7 +3447,8 @@
 		size = EXT2_I_SIZE(inode);
 		if ((pb.last_init_lblock >= 0) &&
 		    /* Do not allow initialized allocated blocks past i_size*/
-		    (size < (__u64)pb.last_init_lblock * fs->blocksize))
+		    (size < (__u64)pb.last_init_lblock * fs->blocksize) &&
+		    !(inode->i_flags & EXT4_VERITY_FL))
 			bad_size = 3;
 		else if (!(extent_fs && (inode->i_flags & EXT4_EXTENTS_FL)) &&
 			 size > ext2_max_sizes[fs->super->s_log_block_size])
diff --git a/e2fsck/problem.c b/e2fsck/problem.c
index a0a3cfe..932cad3 100644
--- a/e2fsck/problem.c
+++ b/e2fsck/problem.c
@@ -99,8 +99,10 @@
 	"",			/* 20 */
 };
 
+#if __GNUC_PREREQ (4, 6)
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
 
 static struct e2fsck_problem problem_table[] = {
 
@@ -108,17 +110,17 @@
 
 	/* Block bitmap for group is not in group */
 	{ PR_0_BB_NOT_GROUP, N_("@b @B for @g %g is not in @g.  (@b %b)\n"),
-	  PROMPT_RELOCATE, PR_LATCH_RELOC },
+	  PROMPT_RELOCATE, PR_LATCH_RELOC, 0, 0, 0 },
 
 	/* Inode bitmap for group is not in group */
 	{ PR_0_IB_NOT_GROUP, N_("@i @B for @g %g is not in @g.  (@b %b)\n"),
-	  PROMPT_RELOCATE, PR_LATCH_RELOC },
+	  PROMPT_RELOCATE, PR_LATCH_RELOC, 0, 0, 0 },
 
 	/* Inode table for group is not in group.  (block nnnn) */
 	{ PR_0_ITABLE_NOT_GROUP,
 	  N_("@i table for @g %g is not in @g.  (@b %b)\n"
 	  "WARNING: SEVERE DATA LOSS POSSIBLE.\n"),
-	  PROMPT_RELOCATE, PR_LATCH_RELOC },
+	  PROMPT_RELOCATE, PR_LATCH_RELOC, 0, 0, 0 },
 
 	/* Superblock corrupt */
 	{ PR_0_SB_CORRUPT,
@@ -129,36 +131,36 @@
 	  "    e2fsck -b 8193 <@v>\n"
 	  " or\n"
 	  "    e2fsck -b 32768 <@v>\n\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Filesystem size is wrong */
 	{ PR_0_FS_SIZE_WRONG,
 	  N_("The @f size (according to the @S) is %b @bs\n"
 	  "The physical size of the @v is %c @bs\n"
 	  "Either the @S or the partition table is likely to be corrupt!\n"),
-	  PROMPT_ABORT, 0 },
+	  PROMPT_ABORT, 0, 0, 0, 0 },
 
 	/* Fragments not supported */
 	{ PR_0_NO_FRAGMENTS,
 	  N_("@S @b_size = %b, fragsize = %c.\n"
 	  "This version of e2fsck does not support fragment sizes different\n"
 	  "from the @b size.\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Superblock blocks_per_group = bbbb, should have been cccc */
 	{ PR_0_BLOCKS_PER_GROUP,
 	  N_("@S @bs_per_group = %b, should have been %c\n"),
-	  PROMPT_NONE, PR_AFTER_CODE, PR_0_SB_CORRUPT },
+	  PROMPT_NONE, PR_AFTER_CODE, PR_0_SB_CORRUPT, 0, 0 },
 
 	/* Superblock first_data_block = bbbb, should have been cccc */
 	{ PR_0_FIRST_DATA_BLOCK,
 	  N_("@S first_data_@b = %b, should have been %c\n"),
-	  PROMPT_NONE, PR_AFTER_CODE, PR_0_SB_CORRUPT },
+	  PROMPT_NONE, PR_AFTER_CODE, PR_0_SB_CORRUPT, 0, 0 },
 
 	/* Filesystem did not have a UUID; generating one */
 	{ PR_0_ADD_UUID,
 	  N_("@f did not have a UUID; generating one.\n\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Relocate hint */
 	{ PR_0_RELOCATE_HINT,
@@ -167,51 +169,51 @@
 	  "running e2fsck with the '-b %S' option first.  The problem\n"
 	  "may lie only with the primary block group descriptors, and\n"
 	  "the backup block group descriptors may be OK.\n\n"),
-	  PROMPT_NONE, PR_PREEN_OK | PR_NOCOLLATE },
+	  PROMPT_NONE, PR_PREEN_OK | PR_NOCOLLATE, 0, 0, 0 },
 
 	/* Miscellaneous superblock corruption */
 	{ PR_0_MISC_CORRUPT_SUPER,
 	  N_("Corruption found in @S.  (%s = %N).\n"),
-	  PROMPT_NONE, PR_AFTER_CODE, PR_0_SB_CORRUPT },
+	  PROMPT_NONE, PR_AFTER_CODE, PR_0_SB_CORRUPT, 0, 0 },
 
 	/* Error determining physical device size of filesystem */
 	{ PR_0_GETSIZE_ERROR,
 	  N_("Error determining size of the physical @v: %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Inode count in superblock is incorrect */
 	{ PR_0_INODE_COUNT_WRONG,
 	  N_("@i count in @S is %i, @s %j.\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	{ PR_0_HURD_CLEAR_FILETYPE,
 	  N_("The Hurd does not support the filetype feature.\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Superblock has an invalid journal (inode inum) */
 	{ PR_0_JOURNAL_BAD_INODE,
 	  N_("@S has an @n @j (@i %i).\n"),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* External journal has multiple filesystem users (unsupported) */
 	{ PR_0_JOURNAL_UNSUPP_MULTIFS,
 	  N_("External @j has multiple @f users (unsupported).\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Can't find external journal */
 	{ PR_0_CANT_FIND_JOURNAL,
 	  N_("Can't find external @j\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* External journal has bad superblock */
 	{ PR_0_EXT_JOURNAL_BAD_SUPER,
 	  N_("External @j has bad @S\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Superblock has a bad journal UUID */
 	{ PR_0_JOURNAL_BAD_UUID,
 	  N_("External @j does not support this @f\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Filesystem journal superblock is an unknown type */
 	{ PR_0_JOURNAL_UNSUPP_SUPER,
@@ -219,809 +221,816 @@
 	     "It is likely that your copy of e2fsck is old and/or doesn't "
 	     "support this @j format.\n"
 	     "It is also possible the @j @S is corrupt.\n"),
-	  PROMPT_ABORT, PR_NO_OK | PR_AFTER_CODE, PR_0_JOURNAL_BAD_SUPER },
+	  PROMPT_ABORT, PR_NO_OK | PR_AFTER_CODE, PR_0_JOURNAL_BAD_SUPER,
+	  0, 0 },
 
 	/* Journal superblock is corrupt */
 	{ PR_0_JOURNAL_BAD_SUPER,
 	  N_("@j @S is corrupt.\n"),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Superblock has_journal flag is clear but has a journal */
 	{ PR_0_JOURNAL_HAS_JOURNAL,
 	  N_("@S has_@j flag is clear, but a @j is present.\n"),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Superblock needs_recovery flag is set but no journal is present */
 	{ PR_0_JOURNAL_RECOVER_SET,
 	  N_("@S needs_recovery flag is set, but no @j is present.\n"),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Superblock needs_recovery flag is set, but journal has data */
 	{ PR_0_JOURNAL_RECOVERY_CLEAR,
 	  N_("@S needs_recovery flag is clear, but @j has data.\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Ask if we should clear the journal */
 	{ PR_0_JOURNAL_RESET_JOURNAL,
 	  N_("Clear @j"),
-	  PROMPT_NULL, PR_PREEN_NOMSG },
+	  PROMPT_NULL, PR_PREEN_NOMSG, 0, 0, 0 },
 
 	/* Filesystem revision is 0, but feature flags are set */
 	{ PR_0_FS_REV_LEVEL,
 	  N_("@f has feature flag(s) set, but is a revision 0 @f.  "),
-	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK },
+	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK, 0, 0, 0 },
 
 	/* Clearing orphan inode */
 	{ PR_0_ORPHAN_CLEAR_INODE,
 	  N_("%s @o @i %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Illegal block found in orphaned inode */
 	{ PR_0_ORPHAN_ILLEGAL_BLOCK_NUM,
 	   N_("@I %B (%b) found in @o @i %i.\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Already cleared block found in orphaned inode */
 	{ PR_0_ORPHAN_ALREADY_CLEARED_BLOCK,
 	   N_("Already cleared %B (%b) found in @o @i %i.\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Illegal orphan inode in superblock */
 	{ PR_0_ORPHAN_ILLEGAL_HEAD_INODE,
 	  N_("@I @o @i %i in @S.\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Illegal inode in orphaned inode list */
 	{ PR_0_ORPHAN_ILLEGAL_INODE,
 	  N_("@I @i %i in @o @i list.\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Journal superblock has an unknown read-only feature flag set */
 	{ PR_0_JOURNAL_UNSUPP_ROCOMPAT,
 	  N_("@j @S has an unknown read-only feature flag set.\n"),
-	  PROMPT_ABORT, 0 },
+	  PROMPT_ABORT, 0, 0, 0, 0 },
 
 	/* Journal superblock has an unknown incompatible feature flag set */
 	{ PR_0_JOURNAL_UNSUPP_INCOMPAT,
 	  N_("@j @S has an unknown incompatible feature flag set.\n"),
-	  PROMPT_ABORT, 0 },
+	  PROMPT_ABORT, 0, 0, 0, 0 },
 
 	/* Journal version not supported by this e2fsck */
 	{ PR_0_JOURNAL_UNSUPP_VERSION,
 	  N_("@j version not supported by this e2fsck.\n"),
-	  PROMPT_ABORT, 0 },
+	  PROMPT_ABORT, 0, 0, 0, 0 },
 
 	/* Moving journal from /file to hidden inode */
 	{ PR_0_MOVE_JOURNAL,
 	  N_("Moving @j from /%s to hidden @i.\n\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Error moving journal to hidden file */
 	{ PR_0_ERR_MOVE_JOURNAL,
 	  N_("Error moving @j: %m\n\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Found invalid V2 journal superblock fields */
 	{ PR_0_CLEAR_V2_JOURNAL,
 	  N_("Found @n V2 @j @S fields (from V1 @j).\n"
 	     "Clearing fields beyond the V1 @j @S...\n\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Ask if we should run the journal anyway */
 	{ PR_0_JOURNAL_RUN,
 	  N_("Run @j anyway"),
-	  PROMPT_NULL, 0 },
+	  PROMPT_NULL, 0, 0, 0, 0 },
 
 	/* Run the journal by default */
 	{ PR_0_JOURNAL_RUN_DEFAULT,
 	  N_("Recovery flag not set in backup @S, so running @j anyway.\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Backing up journal inode block information */
 	{ PR_0_BACKUP_JNL,
 	  N_("Backing up @j @i @b information.\n\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Filesystem does not have resize_inode enabled, but
 	 * s_reserved_gdt_blocks is nnnn; should be zero */
 	{ PR_0_NONZERO_RESERVED_GDT_BLOCKS,
 	  N_("@f does not have resize_@i enabled, but s_reserved_gdt_@bs\n"
 	     "is %N; @s zero.  "),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Resize_inode not enabled, but the resize inode is non-zero */
 	{ PR_0_CLEAR_RESIZE_INODE,
 	  N_("Resize_@i not enabled, but the resize @i is non-zero.  "),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Resize inode not valid */
 	{ PR_0_RESIZE_INODE_INVALID,
 	  N_("Resize @i not valid.  "),
-	  PROMPT_RECREATE, 0 },
+	  PROMPT_RECREATE, 0, 0, 0, 0 },
 
 	/* Superblock last mount time is in the future */
 	{ PR_0_FUTURE_SB_LAST_MOUNT,
 	  N_("@S last mount time (%t,\n\tnow = %T) is in the future.\n"),
-	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK },
+	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK, 0, 0, 0 },
 
 	/* Superblock last write time is in the future */
 	{ PR_0_FUTURE_SB_LAST_WRITE,
 	  N_("@S last write time (%t,\n\tnow = %T) is in the future.\n"),
-	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK },
+	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK, 0, 0, 0 },
 
 	/* Superblock hint for external superblock should be xxxx */
 	{ PR_0_EXTERNAL_JOURNAL_HINT,
 	  N_("@S hint for external superblock @s %X.  "),
-	     PROMPT_FIX, PR_PREEN_OK },
+	     PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Adding dirhash hint to filesystem */
 	{ PR_0_DIRHASH_HINT,
 	  N_("Adding dirhash hint to @f.\n\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* group descriptor N checksum is invalid, should be yyyy. */
 	{ PR_0_GDT_CSUM,
 	  N_("@g descriptor %g checksum is %04x, should be %04y.  "),
-	     PROMPT_FIX, PR_LATCH_BG_CHECKSUM },
+	     PROMPT_FIX, PR_LATCH_BG_CHECKSUM, 0, 0, 0 },
 
 	/* group descriptor N marked uninitialized without feature set. */
 	{ PR_0_GDT_UNINIT,
 	  N_("@g descriptor %g marked uninitialized without feature set.\n"),
-	     PROMPT_FIX, PR_PREEN_OK },
+	     PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Group descriptor N has invalid unused inodes count. */
 	{ PR_0_GDT_ITABLE_UNUSED,
 	  N_("@g descriptor %g has invalid unused inodes count %b.  "),
-	     PROMPT_FIX, PR_PREEN_OK },
+	     PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Last group block bitmap uninitialized. */
 	{ PR_0_BB_UNINIT_LAST,
 	  N_("Last @g @b @B uninitialized.  "),
-	     PROMPT_FIX, PR_PREEN_OK },
+	     PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Journal transaction was corrupt, replay was aborted */
 	{ PR_0_JNL_TXN_CORRUPT,
 	  N_("Journal transaction %i was corrupt, replay was aborted.\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* The test_fs filesystem flag is set (and ext4 is available) */
 	{ PR_0_CLEAR_TESTFS_FLAG,
 	  N_("The test_fs flag is set (and ext4 is available).  "),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Last mount time is in the future (fudged) */
 	{ PR_0_FUTURE_SB_LAST_MOUNT_FUDGED,
 	  N_("@S last mount time is in the future.\n\t(by less than a day, "
 	     "probably due to the hardware clock being incorrectly set)\n"),
-	  PROMPT_NONE, PR_PREEN_OK | PR_NO_OK },
+	  PROMPT_NONE, PR_PREEN_OK | PR_NO_OK, 0, 0, 0 },
 
 	/* Last write time is in the future (fudged) */
 	{ PR_0_FUTURE_SB_LAST_WRITE_FUDGED,
 	  N_("@S last write time is in the future.\n\t(by less than a day, "
 	     "probably due to the hardware clock being incorrectly set)\n"),
-	  PROMPT_NONE, PR_PREEN_OK | PR_NO_OK },
+	  PROMPT_NONE, PR_PREEN_OK | PR_NO_OK, 0, 0, 0 },
 
 	/* One or more block group descriptor checksums are invalid (latch) */
 	{ PR_0_GDT_CSUM_LATCH,
 	  N_("One or more @b @g descriptor checksums are invalid.  "),
-	     PROMPT_FIX, PR_PREEN_OK },
+	     PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Setting free inodes count to right (was wrong) */
 	{ PR_0_FREE_INODE_COUNT,
 	  N_("Setting free @is count to %j (was %i)\n"),
-	  PROMPT_NONE, PR_PREEN_NOMSG },
+	  PROMPT_NONE, PR_PREEN_NOMSG, 0, 0, 0 },
 
 	/* Setting free blocks count to right (was wrong) */
 	{ PR_0_FREE_BLOCK_COUNT,
 	  N_("Setting free @bs count to %c (was %b)\n"),
-	  PROMPT_NONE, PR_PREEN_NOMSG },
+	  PROMPT_NONE, PR_PREEN_NOMSG, 0, 0, 0 },
 
 	/* Making quota inode hidden */
 	{ PR_0_HIDE_QUOTA,
 	  N_("Hiding %U @q @i %i (%Q).\n"),
-	  PROMPT_NONE, PR_PREEN_OK },
+	  PROMPT_NONE, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Superblock has invalid MMP block. */
 	{ PR_0_MMP_INVALID_BLK,
 	  N_("@S has invalid MMP block.  "),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Superblock has invalid MMP magic. */
 	{ PR_0_MMP_INVALID_MAGIC,
 	  N_("@S has invalid MMP magic.  "),
-	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK},
+	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK, 0, 0, 0 },
 
 	/* Opening file system failed */
 	{ PR_0_OPEN_FAILED,
 	  N_("ext2fs_open2: %m\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Checking group descriptor failed */
 	{ PR_0_CHECK_DESC_FAILED,
 	  N_("ext2fs_check_desc: %m\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Superblock metadata_csum supersedes uninit_bg; both feature
 	 * bits cannot be set simultaneously. */
 	{ PR_0_META_AND_GDT_CSUM_SET,
 	  N_("@S metadata_csum supersedes uninit_bg; both feature "
 	     "bits cannot be set simultaneously."),
-	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK},
+	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK, 0, 0, 0 },
 
 	/* Superblock MMP block checksum does not match MMP block. */
 	{ PR_0_MMP_CSUM_INVALID,
 	  N_("@S MMP @b checksum does not match.  "),
-	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK},
+	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK, 0, 0, 0 },
 
 	/* Superblock 64bit filesystem needs extents to access the whole disk */
 	{ PR_0_64BIT_WITHOUT_EXTENTS,
 	  N_("@S 64bit @f needs extents to access the whole disk.  "),
-	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK},
+	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK, 0, 0, 0 },
 
 	/* The first_meta_bg is too big */
 	{ PR_0_FIRST_META_BG_TOO_BIG,
 	  N_("First_meta_bg is too big.  (%N, max value %g).  "),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* External journal superblock checksum does not match superblock */
 	{ PR_0_EXT_JOURNAL_SUPER_CSUM_INVALID,
 	  N_("External @j @S checksum does not match @S.  "),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Superblock metadata_csum_seed means nothing without metadata_csum */
 	{ PR_0_CSUM_SEED_WITHOUT_META_CSUM,
 	  N_("@S metadata_csum_seed is not necessary without metadata_csum."),
-	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK},
+	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK, 0, 0, 0 },
 
 	/* Error initializing quota context */
 	{ PR_0_QUOTA_INIT_CTX,
 	  N_("Error initializing quota context in support library: %m\n"),
-	  PROMPT_NULL, PR_FATAL },
+	  PROMPT_NULL, PR_FATAL, 0, 0, 0 },
 
 	/* Bad required extra isize in superblock */
 	{ PR_0_BAD_MIN_EXTRA_ISIZE,
 	  N_("Bad required extra isize in @S (%N).  "),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Bad desired extra isize in superblock */
 	{ PR_0_BAD_WANT_EXTRA_ISIZE,
 	  N_("Bad desired extra isize in @S (%N).  "),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Invalid quota inode number */
 	{ PR_0_INVALID_QUOTA_INO,
 	  N_("Invalid %U @q @i %i.  "),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Too many inodes in the filesystem */
 	{ PR_0_INODE_COUNT_BIG,
 	  N_("@S would have too many inodes (%N).\n"),
-	  PROMPT_NONE, PR_AFTER_CODE, PR_0_SB_CORRUPT },
+	  PROMPT_NONE, PR_AFTER_CODE, PR_0_SB_CORRUPT, 0, 0 },
+
+	/* Meta_bg and resize_inode are not compatible, disable resize_inode*/
+	{ PR_0_DISABLE_RESIZE_INODE,
+	  N_("Resize_@i and meta_bg features are enabled. Those features are\n"
+	     "not compatible. Resize @i should be disabled.  "),
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Pass 1 errors */
 
 	/* Pass 1: Checking inodes, blocks, and sizes */
 	{ PR_1_PASS_HEADER,
 	  N_("Pass 1: Checking @is, @bs, and sizes\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Root inode is not a directory */
 	{ PR_1_ROOT_NO_DIR, N_("@r is not a @d.  "),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Root inode has dtime set */
 	{ PR_1_ROOT_DTIME,
 	  N_("@r has dtime set (probably due to old mke2fs).  "),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Reserved inode has bad mode */
 	{ PR_1_RESERVED_BAD_MODE,
 	  N_("Reserved @i %i (%Q) has @n mode.  "),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Deleted inode inum has zero dtime */
 	{ PR_1_ZERO_DTIME,
 	  N_("@D @i %i has zero dtime.  "),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Inode inum is in use, but has dtime set */
 	{ PR_1_SET_DTIME,
 	  N_("@i %i is in use, but has dtime set.  "),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Inode inum is a zero-length directory */
 	{ PR_1_ZERO_LENGTH_DIR,
 	  N_("@i %i is a @z @d.  "),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Group block bitmap at block conflicts with some other fs block */
 	{ PR_1_BB_CONFLICT,
 	  N_("@g %g's @b @B at %b @C.\n"),
-	  PROMPT_RELOCATE, 0 },
+	  PROMPT_RELOCATE, 0, 0, 0, 0 },
 
 	/* Group inode bitmap at block conflicts with some other fs block */
 	{ PR_1_IB_CONFLICT,
 	  N_("@g %g's @i @B at %b @C.\n"),
-	  PROMPT_RELOCATE, 0 },
+	  PROMPT_RELOCATE, 0, 0, 0, 0 },
 
 	/* Group inode table at block conflicts with some other fs block */
 	{ PR_1_ITABLE_CONFLICT,
 	  N_("@g %g's @i table at %b @C.\n"),
-	  PROMPT_RELOCATE, 0 },
+	  PROMPT_RELOCATE, 0, 0, 0, 0 },
 
 	/* Group block bitmap (block) is bad */
 	{ PR_1_BB_BAD_BLOCK,
 	  N_("@g %g's @b @B (%b) is bad.  "),
-	  PROMPT_RELOCATE, 0 },
+	  PROMPT_RELOCATE, 0, 0, 0, 0 },
 
 	/* Group inode bitmap (block) is bad */
 	{ PR_1_IB_BAD_BLOCK,
 	  N_("@g %g's @i @B (%b) is bad.  "),
-	  PROMPT_RELOCATE, 0 },
+	  PROMPT_RELOCATE, 0, 0, 0, 0 },
 
 	/* Inode inum, i_size is small, should be larger */
 	{ PR_1_BAD_I_SIZE,
 	  N_("@i %i, i_size is %Is, @s %N.  "),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Inode inum, i_blocks is small, should be larger */
 	{ PR_1_BAD_I_BLOCKS,
 	  N_("@i %i, i_@bs is %Ib, @s %N.  "),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Illegal block number in inode */
 	{ PR_1_ILLEGAL_BLOCK_NUM,
 	  N_("@I %B (%b) in @i %i.  "),
-	  PROMPT_CLEAR, PR_LATCH_BLOCK },
+	  PROMPT_CLEAR, PR_LATCH_BLOCK, 0, 0, 0 },
 
 	/* Block number overlaps filesystem metadata in inode */
 	{ PR_1_BLOCK_OVERLAPS_METADATA,
 	  N_("%B (%b) overlaps @f metadata in @i %i.  "),
-	  PROMPT_CLEAR, PR_LATCH_BLOCK },
+	  PROMPT_CLEAR, PR_LATCH_BLOCK, 0, 0, 0 },
 
 	/* Inode has illegal blocks (latch question) */
 	{ PR_1_INODE_BLOCK_LATCH,
 	  N_("@i %i has illegal @b(s).  "),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Too many illegal blocks in inode */
 	{ PR_1_TOO_MANY_BAD_BLOCKS,
 	  N_("Too many illegal @bs in @i %i.\n"),
-	  PROMPT_CLEAR_INODE, PR_NO_OK },
+	  PROMPT_CLEAR_INODE, PR_NO_OK, 0, 0, 0 },
 
 	/* Illegal block number in bad block inode */
 	{ PR_1_BB_ILLEGAL_BLOCK_NUM,
 	  N_("@I %B (%b) in bad @b @i.  "),
-	  PROMPT_CLEAR, PR_LATCH_BBLOCK },
+	  PROMPT_CLEAR, PR_LATCH_BBLOCK, 0, 0, 0 },
 
 	/* Bad block inode has illegal blocks (latch question) */
 	{ PR_1_INODE_BBLOCK_LATCH,
 	  N_("Bad @b @i has illegal @b(s).  "),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Duplicate or bad blocks in use! */
 	{ PR_1_DUP_BLOCKS_PREENSTOP,
 	  N_("Duplicate or bad @b in use!\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Bad block number used as bad block inode indirect block */
 	{ PR_1_BBINODE_BAD_METABLOCK,
 	  N_("Bad @b %b used as bad @b @i indirect @b.  "),
-	  PROMPT_CLEAR, PR_LATCH_BBLOCK },
+	  PROMPT_CLEAR, PR_LATCH_BBLOCK, 0, 0, 0 },
 
 	/* Inconsistency can't be fixed prompt */
 	{ PR_1_BBINODE_BAD_METABLOCK_PROMPT,
 	  N_("\nThe bad @b @i has probably been corrupted.  You probably\n"
 	     "should stop now and run ""e2fsck -c"" to scan for bad blocks\n"
 	     "in the @f.\n"),
-	  PROMPT_CONTINUE, PR_PREEN_NOMSG },
+	  PROMPT_CONTINUE, PR_PREEN_NOMSG, 0, 0, 0 },
 
 	/* Bad primary block */
 	{ PR_1_BAD_PRIMARY_BLOCK,
 	  N_("\nIf the @b is really bad, the @f can not be fixed.\n"),
-	  PROMPT_NONE, PR_AFTER_CODE, PR_1_BAD_PRIMARY_BLOCK_PROMPT },
+	  PROMPT_NONE, PR_AFTER_CODE, PR_1_BAD_PRIMARY_BLOCK_PROMPT, 0, 0 },
 
 	/* Bad primary block prompt */
 	{ PR_1_BAD_PRIMARY_BLOCK_PROMPT,
 	  N_("You can remove this @b from the bad @b list and hope\n"
 	     "that the @b is really OK.  But there are no guarantees.\n\n"),
-	  PROMPT_CLEAR, PR_PREEN_NOMSG },
+	  PROMPT_CLEAR, PR_PREEN_NOMSG, 0, 0, 0 },
 
 	/* The primary superblock block is on the bad block list */
 	{ PR_1_BAD_PRIMARY_SUPERBLOCK,
 	  N_("The primary @S (%b) is on the bad @b list.\n"),
-	  PROMPT_NONE, PR_AFTER_CODE, PR_1_BAD_PRIMARY_BLOCK },
+	  PROMPT_NONE, PR_AFTER_CODE, PR_1_BAD_PRIMARY_BLOCK, 0, 0 },
 
 	/* Bad primary block group descriptors */
 	{ PR_1_BAD_PRIMARY_GROUP_DESCRIPTOR,
 	  N_("Block %b in the primary @g descriptors "
 	     "is on the bad @b list\n"),
-	  PROMPT_NONE, PR_AFTER_CODE, PR_1_BAD_PRIMARY_BLOCK },
+	  PROMPT_NONE, PR_AFTER_CODE, PR_1_BAD_PRIMARY_BLOCK, 0, 0 },
 
 	/* Warning: Group number's superblock (block) is bad */
 	{ PR_1_BAD_SUPERBLOCK,
 	  N_("Warning: Group %g's @S (%b) is bad.\n"),
-	  PROMPT_NONE, PR_PREEN_OK | PR_PREEN_NOMSG },
+	  PROMPT_NONE, PR_PREEN_OK | PR_PREEN_NOMSG, 0, 0, 0 },
 
 	/* Warning: Group number's copy of the group descriptors has a bad
 	 * block */
 	{ PR_1_BAD_GROUP_DESCRIPTORS,
 	  N_("Warning: Group %g's copy of the @g descriptors has a bad "
 	  "@b (%b).\n"),
-	  PROMPT_NONE, PR_PREEN_OK | PR_PREEN_NOMSG },
+	  PROMPT_NONE, PR_PREEN_OK | PR_PREEN_NOMSG, 0, 0, 0 },
 
 	/* Block number claimed for no reason in process_bad_blocks */
 	{ PR_1_PROGERR_CLAIMED_BLOCK,
 	  N_("Programming error?  @b #%b claimed for no reason in "
 	  "process_bad_@b.\n"),
-	  PROMPT_NONE, PR_PREEN_OK },
+	  PROMPT_NONE, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Allocating number contiguous block(s) in block group number */
 	{ PR_1_RELOC_BLOCK_ALLOCATE,
 	  N_("@A %N contiguous @b(s) in @b @g %g for %s: %m\n"),
-	  PROMPT_NONE, PR_PREEN_OK },
+	  PROMPT_NONE, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Allocating block buffer for relocating process */
 	{ PR_1_RELOC_MEMORY_ALLOCATE,
 	  N_("@A @b buffer for relocating %s\n"),
-	  PROMPT_NONE, PR_PREEN_OK },
+	  PROMPT_NONE, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Relocating group number's information from X to Y */
 	{ PR_1_RELOC_FROM_TO,
 	  N_("Relocating @g %g's %s from %b to %c...\n"),
-	  PROMPT_NONE, PR_PREEN_OK },
+	  PROMPT_NONE, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Relocating group number's information to X */
 	{ PR_1_RELOC_TO,
 	  N_("Relocating @g %g's %s to %c...\n"), /* xgettext:no-c-format */
-	  PROMPT_NONE, PR_PREEN_OK },
+	  PROMPT_NONE, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Warning: could not read block number of relocation process */
 	{ PR_1_RELOC_READ_ERR,
 	  N_("Warning: could not read @b %b of %s: %m\n"),
-	  PROMPT_NONE, PR_PREEN_OK },
+	  PROMPT_NONE, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Warning: could not write block number of relocation process */
 	{ PR_1_RELOC_WRITE_ERR,
 	  N_("Warning: could not write @b %b for %s: %m\n"),
-	  PROMPT_NONE, PR_PREEN_OK },
+	  PROMPT_NONE, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Error allocating inode bitmap */
 	{ PR_1_ALLOCATE_IBITMAP_ERROR,
 	  N_("@A @i @B (%N): %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Error allocating block bitmap */
 	{ PR_1_ALLOCATE_BBITMAP_ERROR,
 	  N_("@A @b @B (%N): %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Error allocating icount link information */
 	{ PR_1_ALLOCATE_ICOUNT,
 	  N_("@A icount link information: %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Error allocating directory block array */
 	{ PR_1_ALLOCATE_DBCOUNT,
 	  N_("@A @d @b array: %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Error while scanning inodes */
 	{ PR_1_ISCAN_ERROR,
 	  N_("Error while scanning @is (%i): %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Error while iterating over blocks in inode */
 	{ PR_1_BLOCK_ITERATE,
 	  N_("Error while iterating over @bs in @i %i: %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Error storing inode count information */
 	{ PR_1_ICOUNT_STORE,
 	  N_("Error storing @i count information (@i=%i, count=%N): %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Error storing directory block information */
 	{ PR_1_ADD_DBLOCK,
 	  N_("Error storing @d @b information "
 	  "(@i=%i, @b=%b, num=%N): %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Error reading inode (for clearing) */
 	{ PR_1_READ_INODE,
 	  N_("Error reading @i %i: %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Suppress messages prompt */
-	{ PR_1_SUPPRESS_MESSAGES, "", PROMPT_SUPPRESS, PR_NO_OK },
+	{ PR_1_SUPPRESS_MESSAGES, "", PROMPT_SUPPRESS, PR_NO_OK, 0, 0, 0 },
 
 	/* Imagic number has imagic flag set when fs doesn't support it */
 	{ PR_1_SET_IMAGIC,
 	  N_("@i %i has imagic flag set.  "),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Immutable flag set on a device or socket inode */
 	{ PR_1_SET_IMMUTABLE,
 	  N_("Special (@v/socket/fifo/symlink) file (@i %i) has immutable\n"
 	     "or append-only flag set.  "),
-	  PROMPT_CLEAR, PR_PREEN_OK | PR_PREEN_NO | PR_NO_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK | PR_PREEN_NO | PR_NO_OK, 0, 0, 0 },
 
 	/* Non-zero size for device, fifo or socket inode */
 	{ PR_1_SET_NONZSIZE,
 	  N_("Special (@v/socket/fifo) @i %i has non-zero size.  "),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Filesystem has feature flag(s) set, but is a revision 0 filesystem */
 	{ PR_1_FS_REV_LEVEL,
 	  N_("@f has feature flag(s) set, but is a revision 0 @f.  "),
-	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK },
+	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK, 0, 0, 0 },
 
 	/* Journal inode is not in use, but contains data */
 	{ PR_1_JOURNAL_INODE_NOT_CLEAR,
 	  N_("@j @i is not in use, but contains data.  "),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Journal is not a regular file */
 	{ PR_1_JOURNAL_BAD_MODE,
 	  N_("@j is not regular file.  "),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Inode that was part of the orphan list */
 	{ PR_1_LOW_DTIME,
 	  N_("@i %i was part of the @o @i list.  "),
-	  PROMPT_FIX, PR_LATCH_LOW_DTIME, 0 },
+	  PROMPT_FIX, PR_LATCH_LOW_DTIME, 0, 0, 0 },
 
 	/* Inodes that were part of a corrupted orphan linked list found
 	 * (latch question) */
 	{ PR_1_ORPHAN_LIST_REFUGEES,
 	  N_("@is that were part of a corrupted orphan linked list found.  "),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Error allocating refcount structure */
 	{ PR_1_ALLOCATE_REFCOUNT,
 	  N_("@A refcount structure (%N): %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Error reading extended attribute block */
 	{ PR_1_READ_EA_BLOCK,
 	  N_("Error reading @a @b %b for @i %i.  "),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Inode number has a bad extended attribute block */
 	{ PR_1_BAD_EA_BLOCK,
 	  N_("@i %i has a bad @a @b %b.  "),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Error reading Extended Attribute block while fixing refcount */
 	{ PR_1_EXTATTR_READ_ABORT,
 	  N_("Error reading @a @b %b (%m).  "),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Extended attribute number has reference count incorrect */
 	{ PR_1_EXTATTR_REFCOUNT,
 	  N_("@a @b %b has reference count %r, @s %N.  "),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Error writing Extended Attribute block while fixing refcount */
 	{ PR_1_EXTATTR_WRITE_ABORT,
 	  N_("Error writing @a @b %b (%m).  "),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Extended attribute block has h_blocks > 1 */
 	{ PR_1_EA_MULTI_BLOCK,
 	  N_("@a @b %b has h_@bs > 1.  "),
-	  PROMPT_CLEAR, 0},
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Allocating extended attribute region allocation structure */
 	{ PR_1_EA_ALLOC_REGION_ABORT,
 	  N_("@A @a region allocation structure.  "),
-	  PROMPT_NONE, PR_FATAL},
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Extended Attribute block number is corrupt (allocation collision) */
 	{ PR_1_EA_ALLOC_COLLISION,
 	  N_("@a @b %b is corrupt (allocation collision).  "),
-	  PROMPT_CLEAR, 0},
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Extended attribute block number is corrupt (invalid name) */
 	{ PR_1_EA_BAD_NAME,
 	  N_("@a @b %b is corrupt (@n name).  "),
-	  PROMPT_CLEAR, 0},
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Extended attribute block number is corrupt (invalid value) */
 	{ PR_1_EA_BAD_VALUE,
 	  N_("@a @b %b is corrupt (@n value).  "),
-	  PROMPT_CLEAR, 0},
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Inode number is too big (latch question) */
 	{ PR_1_INODE_TOOBIG,
-	  N_("@i %i is too big.  "), PROMPT_TRUNCATE, 0 },
+	  N_("@i %i is too big.  "), PROMPT_TRUNCATE, 0, 0, 0, 0 },
 
 	/* Problem causes directory to be too big */
 	{ PR_1_TOOBIG_DIR,
 	  N_("%B (%b) causes @d to be too big.  "),
-	  PROMPT_CLEAR, PR_LATCH_TOOBIG },
+	  PROMPT_CLEAR, PR_LATCH_TOOBIG, 0, 0, 0 },
 
 	/* Problem causes file to be too big */
 	{ PR_1_TOOBIG_REG,
 	  N_("%B (%b) causes file to be too big.  "),
-	  PROMPT_CLEAR, PR_LATCH_TOOBIG },
+	  PROMPT_CLEAR, PR_LATCH_TOOBIG, 0, 0, 0 },
 
 	/* Problem causes symlink to be too big */
 	{ PR_1_TOOBIG_SYMLINK,
 	  N_("%B (%b) causes symlink to be too big.  "),
-	  PROMPT_CLEAR, PR_LATCH_TOOBIG },
+	  PROMPT_CLEAR, PR_LATCH_TOOBIG, 0, 0, 0 },
 
 	/* Inode has INDEX_FL flag set on filesystem without htree support  */
 	{ PR_1_HTREE_SET,
 	  N_("@i %i has INDEX_FL flag set on @f without htree support.\n"),
-	  PROMPT_CLEAR_HTREE, PR_PREEN_OK },
+	  PROMPT_CLEAR_HTREE, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Inode number has INDEX_FL flag set but is on a directory */
 	{ PR_1_HTREE_NODIR,
 	  N_("@i %i has INDEX_FL flag set but is not a @d.\n"),
-	  PROMPT_CLEAR_HTREE, PR_PREEN_OK },
+	  PROMPT_CLEAR_HTREE, PR_PREEN_OK, 0, 0, 0 },
 
 	/* htree directory has an invalid root node */
 	{ PR_1_HTREE_BADROOT,
 	  N_("@h %i has an @n root node.\n"),
-	  PROMPT_CLEAR_HTREE, PR_PREEN_OK },
+	  PROMPT_CLEAR_HTREE, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Htree directory has an unsupported hash version */
 	{ PR_1_HTREE_HASHV,
 	  N_("@h %i has an unsupported hash version (%N)\n"),
-	  PROMPT_CLEAR_HTREE, PR_PREEN_OK },
+	  PROMPT_CLEAR_HTREE, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Htree directory uses an Incompatible htree root node flag */
 	{ PR_1_HTREE_INCOMPAT,
 	  N_("@h %i uses an incompatible htree root node flag.\n"),
-	  PROMPT_CLEAR_HTREE, PR_PREEN_OK },
+	  PROMPT_CLEAR_HTREE, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Htree directory has a tree depth which is too big */
 	{ PR_1_HTREE_DEPTH,
 	  N_("@h %i has a tree depth (%N) which is too big\n"),
-	  PROMPT_CLEAR_HTREE, PR_PREEN_OK },
+	  PROMPT_CLEAR_HTREE, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Bad block inode has an indirect block number that conflicts with
 	 * filesystem metadata */
 	{ PR_1_BB_FS_BLOCK,
 	  N_("Bad @b @i has an indirect @b (%b) that conflicts with\n"
 	     "@f metadata.  "),
-	  PROMPT_CLEAR, PR_LATCH_BBLOCK },
+	  PROMPT_CLEAR, PR_LATCH_BBLOCK, 0, 0, 0 },
 
 	/* Resize inode (re)creation failed */
 	{ PR_1_RESIZE_INODE_CREATE,
 	  N_("Resize @i (re)creation failed: %m."),
-	  PROMPT_CONTINUE, 0 },
+	  PROMPT_CONTINUE, 0, 0, 0, 0 },
 
 	/* inode has a extra size i_extra_isize which is invalid */
 	{ PR_1_EXTRA_ISIZE,
 	  N_("@i %i has a extra size (%IS) which is @n\n"),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Extended attribute in inode has a namelen which is invalid */
 	{ PR_1_ATTR_NAME_LEN,
 	  N_("@a in @i %i has a namelen (%N) which is @n\n"),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Extended attribute in inode has a value offset which is invalid */
 	{ PR_1_ATTR_VALUE_OFFSET,
 	  N_("@a in @i %i has a value offset (%N) which is @n\n"),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* extended attribute in inode has a value block which is invalid */
 	{ PR_1_ATTR_VALUE_BLOCK,
 	  N_("@a in @i %i has a value @b (%N) which is @n (must be 0)\n"),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* extended attribute in inode has a value size which is invalid */
 	{ PR_1_ATTR_VALUE_SIZE,
 	  N_("@a in @i %i has a value size (%N) which is @n\n"),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* extended attribute in inode has a hash which is invalid */
 	{ PR_1_ATTR_HASH,
 	  N_("@a in @i %i has a hash (%N) which is @n\n"),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* inode is a type but it looks like it is really a directory */
 	{ PR_1_TREAT_AS_DIRECTORY,
 	  N_("@i %i is a %It but it looks like it is really a directory.\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Error while reading extent tree in inode */
 	{ PR_1_READ_EXTENT,
 	  N_("Error while reading over @x tree in @i %i: %m\n"),
-	  PROMPT_CLEAR_INODE, 0 },
+	  PROMPT_CLEAR_INODE, 0, 0, 0, 0 },
 
 	/* Failure to iterate extents in inode */
 	{ PR_1_EXTENT_ITERATE_FAILURE,
 	  N_("Failed to iterate extents in @i %i\n"
 	     "\t(op %s, blk %b, lblk %c): %m\n"),
-	  PROMPT_CLEAR_INODE, 0 },
+	  PROMPT_CLEAR_INODE, 0, 0, 0, 0 },
 
 	/* Inode has an invalid extent starting block */
 	{ PR_1_EXTENT_BAD_START_BLK,
 	  N_("@i %i has an @n extent\n\t(logical @b %c, @n physical @b %b, len %N)\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Inode has an invalid extent that ends beyond filesystem */
 	{ PR_1_EXTENT_ENDS_BEYOND,
 	  N_("@i %i has an @n extent\n\t(logical @b %c, physical @b %b, @n len %N)\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* inode has EXTENTS_FL flag set on filesystem without extents support*/
 	{ PR_1_EXTENTS_SET,
 	  N_("@i %i has EXTENTS_FL flag set on @f without extents support.\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* inode is in extents format, but superblock is missing EXTENTS feature */
 	{ PR_1_EXTENT_FEATURE,
 	  N_("@i %i is in extent format, but @S is missing EXTENTS feature\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* inode missing EXTENTS_FL, but is an extent inode */
 	{ PR_1_UNSET_EXTENT_FL,
 	  N_("@i %i missing EXTENT_FL, but is in extents format\n"),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Fast symlink has EXTENTS_FL set */
 	{ PR_1_FAST_SYMLINK_EXTENT_FL,
 	  N_("Fast symlink %i has EXTENT_FL set.  "),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Extents are out of order */
 	{ PR_1_OUT_OF_ORDER_EXTENTS,
 	  N_("@i %i has out of order extents\n\t(@n logical @b %c, physical @b %b, len %N)\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	{ PR_1_EXTENT_HEADER_INVALID,
 	  N_("@i %i has an invalid extent node (blk %b, lblk %c)\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Failed to convert subcluster block bitmap */
 	{ PR_1_CONVERT_SUBCLUSTER,
 	  N_("Error converting subcluster @b @B: %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Quota inode is not a regular file */
 	{ PR_1_QUOTA_BAD_MODE,
 	  N_("@q @i is not a regular file.  "),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Quota inode is not in use, but contains data */
 	{ PR_1_QUOTA_INODE_NOT_CLEAR,
 	  N_("@q @i is not in use, but contains data.  "),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Quota inode is visible to the user */
 	{ PR_1_QUOTA_INODE_NOT_HIDDEN,
 	  N_("@q @i is visible to the user.  "),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* The bad block inode looks invalid */
 	{ PR_1_INVALID_BAD_INODE,
 	  N_("The bad @b @i looks @n.  "),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Extent has zero length extent */
 	{ PR_1_EXTENT_LENGTH_ZERO,
 	  N_("@i %i has zero length extent\n\t(@n logical @b %c, physical @b %b)\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* inode seems to contain garbage */
 	{ PR_1_INODE_IS_GARBAGE,
 	  N_("@i %i seems to contain garbage.  "),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* inode passes checks, but checksum does not match inode */
 	{ PR_1_INODE_ONLY_CSUM_INVALID,
 	  N_("@i %i passes checks, but checksum does not match @i.  "),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Inode extended attribute is corrupt (allocation collision) */
 	{ PR_1_INODE_EA_ALLOC_COLLISION,
 	  N_("@i %i @a is corrupt (allocation collision).  "),
-	  PROMPT_CLEAR, 0},
+	  PROMPT_CLEAR, 0, 0, 0, 0},
 
 	/*
 	 * Inode extent block passes checks, but checksum does not match
@@ -1030,7 +1039,7 @@
 	{ PR_1_EXTENT_ONLY_CSUM_INVALID,
 	  N_("@i %i extent block passes checks, but checksum does not match "
 	     "extent\n\t(logical @b %c, physical @b %b, len %N)\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/*
 	 * Inode extended attribute block passes checks, but checksum does not
@@ -1038,138 +1047,138 @@
 	 */
 	{ PR_1_EA_BLOCK_ONLY_CSUM_INVALID,
 	  N_("@i %i @a @b %b passes checks, but checksum does not match @b.  "),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Interior extent node level number of inode doesn't first node down */
 	{ PR_1_EXTENT_INDEX_START_INVALID,
 	  N_("Interior @x node level %N of @i %i:\n"
 	     "Logical start %b does not match logical start %c at next level.  "),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Inode end of extent exceeds allowed value */
 	{ PR_1_EXTENT_END_OUT_OF_BOUNDS,
 	  N_("@i %i, end of extent exceeds allowed value\n\t(logical @b %c, physical @b %b, len %N)\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Inode has inline data, but superblock is missing INLINE_DATA feature */
 	{ PR_1_INLINE_DATA_FEATURE,
 	  N_("@i %i has inline data, but @S is missing INLINE_DATA feature\n"),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* inode has INLINE_DATA_FL flag on filesystem without inline data */
 	{ PR_1_INLINE_DATA_SET,
 	  N_("@i %i has INLINE_DATA_FL flag on @f without inline data support.\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/*
 	 * Inode block conflicts with critical metadata, skipping block checks
 	 */
 	{ PR_1_CRITICAL_METADATA_COLLISION,
 	  N_("@i %i block %b conflicts with critical metadata, skipping block checks.\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Directory inode block <block> should be at block <otherblock> */
 	{ PR_1_COLLAPSE_DBLOCK,
 	  N_("@d @i %i @b %b should be at @b %c.  "),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Extents/inlinedata flag set on a device or socket inode */
 	{ PR_1_UNINIT_DBLOCK,
 	  N_("@d @i %i has @x marked uninitialized at @b %c.  "),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Inode logical block (physical block) violates cluster allocation */
 	{ PR_1_MISALIGNED_CLUSTER,
 	  N_("@i %i logical @b %b (physical @b %c) violates cluster allocation rules.\nWill fix in pass 1B.\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Inode has INLINE_DATA_FL flag but extended attribute not found */
 	{ PR_1_INLINE_DATA_NO_ATTR,
 	  N_("@i %i has INLINE_DATA_FL flag but @a not found.  "),
-	  PROMPT_TRUNCATE, 0 },
+	  PROMPT_TRUNCATE, 0, 0, 0, 0 },
 
 	/* Special (device/socket/fifo) file (inode num) has extents
 	 * or inline-data flag set */
 	{ PR_1_SPECIAL_EXTENTS_IDATA,
 	  N_("Special (@v/socket/fifo) file (@i %i) has extents\n"
 	     "or inline-data flag set.  "),
-	  PROMPT_CLEAR, PR_PREEN_OK | PR_PREEN_NO | PR_NO_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK | PR_PREEN_NO | PR_NO_OK, 0, 0, 0 },
 
 	/* Inode has extent header but inline data flag is set */
 	{ PR_1_CLEAR_INLINE_DATA_FOR_EXTENT,
 	  N_("@i %i has @x header but inline data flag is set.\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Inode seems to have inline data but extent flag is set */
 	{ PR_1_CLEAR_EXTENT_FOR_INLINE_DATA,
 	  N_("@i %i seems to have inline data but @x flag is set.\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Inode seems to have block map but inline data and extent flags set */
 	{ PR_1_CLEAR_EXTENT_INLINE_DATA_FLAGS,
 	  N_("@i %i seems to have @b map but inline data and @x flags set.\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Inode has inline data and extent flags but i_block contains junk */
 	{ PR_1_CLEAR_EXTENT_INLINE_DATA_INODE,
 	  N_("@i %i has inline data and @x flags set but i_block contains junk.\n"),
-	  PROMPT_CLEAR_INODE, 0 },
+	  PROMPT_CLEAR_INODE, 0, 0, 0, 0 },
 
 	/* Bad block list says the bad block list inode is bad */
 	{ PR_1_BADBLOCKS_IN_BADBLOCKS,
 	  N_("Bad block list says the bad block list @i is bad.  "),
-	  PROMPT_CLEAR_INODE, 0 },
+	  PROMPT_CLEAR_INODE, 0, 0, 0, 0 },
 
 	/* Error allocating extent region allocation structure */
 	{ PR_1_EXTENT_ALLOC_REGION_ABORT,
 	  N_("@A @x region allocation structure.  "),
-	  PROMPT_NONE, PR_FATAL},
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Inode leaf has a duplicate extent mapping */
 	{ PR_1_EXTENT_COLLISION,
 	  N_("@i %i has a duplicate @x mapping\n\t(logical @b %c, @n physical @b %b, len %N)\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Error allocating memory for encrypted directory list */
 	{ PR_1_ALLOCATE_ENCRYPTED_DIRLIST,
 	  N_("@A memory for encrypted @d list\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Inode extent tree could be more shallow */
 	{ PR_1_EXTENT_BAD_MAX_DEPTH,
 	  N_("@i %i @x tree could be more shallow (%b; could be <= %c)\n"),
-	  PROMPT_FIX, PR_NO_OK | PR_PREEN_NO | PR_PREEN_OK },
+	  PROMPT_FIX, PR_NO_OK | PR_PREEN_NO | PR_PREEN_OK, 0, 0, 0 },
 
 	/* inode num on bigalloc filesystem cannot be block mapped */
 	{ PR_1_NO_BIGALLOC_BLOCKMAP_FILES,
 	  N_("@i %i on bigalloc @f cannot be @b mapped.  "),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Inode has corrupt extent header */
 	{ PR_1_MISSING_EXTENT_HEADER,
 	  N_("@i %i has corrupt @x header.  "),
-	  PROMPT_CLEAR_INODE, 0 },
+	  PROMPT_CLEAR_INODE, 0, 0, 0, 0 },
 
 	/* Timestamp(s) on inode beyond 2310-04-04 are likely pre-1970. */
 	{ PR_1_EA_TIME_OUT_OF_RANGE,
 	  N_("Timestamp(s) on @i %i beyond 2310-04-04 are likely pre-1970.\n"),
-	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK },
+	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK, 0, 0, 0 },
 
 	/* Inode has illegal extended attribute value inode */
 	{ PR_1_ATTR_VALUE_EA_INODE,
 	  N_("@i %i has @I @a value @i %N.\n"),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Inode has invalid extended attribute. EA inode missing
 	 * EA_INODE flag. */
 	{ PR_1_ATTR_NO_EA_INODE_FL,
 	  N_("@i %i has @n @a. EA @i %N missing EA_INODE flag.\n"),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* EA inode for parent inode missing EA_INODE flag. */
 	{ PR_1_ATTR_SET_EA_INODE_FL,
 	  N_("EA @i %N for parent @i %i missing EA_INODE flag.\n "),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 
 	/* Pass 1b errors */
@@ -1178,890 +1187,899 @@
 	{ PR_1B_PASS_HEADER,
 	  N_("\nRunning additional passes to resolve @bs claimed by more than one @i...\n"
 	  "Pass 1B: Rescanning for @m @bs\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Duplicate/bad block(s) header */
 	{ PR_1B_DUP_BLOCK_HEADER,
 	  N_("@m @b(s) in @i %i:"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Duplicate/bad block(s) in inode */
 	{ PR_1B_DUP_BLOCK,
 	  " %b",
-	  PROMPT_NONE, PR_LATCH_DBLOCK | PR_PREEN_NOHDR },
+	  PROMPT_NONE, PR_LATCH_DBLOCK | PR_PREEN_NOHDR, 0, 0, 0 },
 
 	/* Duplicate/bad block(s) end */
 	{ PR_1B_DUP_BLOCK_END,
 	  "\n",
-	  PROMPT_NONE, PR_PREEN_NOHDR },
+	  PROMPT_NONE, PR_PREEN_NOHDR, 0, 0, 0 },
 
 	/* Error while scanning inodes */
 	{ PR_1B_ISCAN_ERROR,
 	  N_("Error while scanning inodes (%i): %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Error allocating inode bitmap */
 	{ PR_1B_ALLOCATE_IBITMAP_ERROR,
 	  N_("@A @i @B (@i_dup_map): %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Error while iterating over blocks */
 	{ PR_1B_BLOCK_ITERATE,
 	  N_("Error while iterating over @bs in @i %i (%s): %m\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Error adjusting EA refcount */
 	{ PR_1B_ADJ_EA_REFCOUNT,
 	  N_("Error adjusting refcount for @a @b %b (@i %i): %m\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Duplicate/bad block range in inode */
 	{ PR_1B_DUP_RANGE,
 	  " %b--%c",
-	  PROMPT_NONE, PR_LATCH_DBLOCK | PR_PREEN_NOHDR },
+	  PROMPT_NONE, PR_LATCH_DBLOCK | PR_PREEN_NOHDR, 0, 0, 0 },
 
 	/* Pass 1C: Scan directories for inodes with multiply-claimed blocks. */
 	{ PR_1C_PASS_HEADER,
 	  N_("Pass 1C: Scanning directories for @is with @m @bs\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 
 	/* Pass 1D: Reconciling multiply-claimed blocks */
 	{ PR_1D_PASS_HEADER,
 	  N_("Pass 1D: Reconciling @m @bs\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* File has duplicate blocks */
 	{ PR_1D_DUP_FILE,
 	  N_("File %Q (@i #%i, mod time %IM) \n"
 	  "  has %r @m @b(s), shared with %N file(s):\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* List of files sharing duplicate blocks */
 	{ PR_1D_DUP_FILE_LIST,
 	  N_("\t%Q (@i #%i, mod time %IM)\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* File sharing blocks with filesystem metadata  */
 	{ PR_1D_SHARE_METADATA,
 	  N_("\t<@f metadata>\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Report of how many duplicate/bad inodes */
 	{ PR_1D_NUM_DUP_INODES,
 	  N_("(There are %N @is containing @m @bs.)\n\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Duplicated blocks already reassigned or cloned. */
 	{ PR_1D_DUP_BLOCKS_DEALT,
 	  N_("@m @bs already reassigned or cloned.\n\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Clone duplicate/bad blocks? */
 	{ PR_1D_CLONE_QUESTION,
-	  "", PROMPT_CLONE, PR_NO_OK },
+	  "", PROMPT_CLONE, PR_NO_OK, 0, 0, 0 },
 
 	/* Delete file? */
 	{ PR_1D_DELETE_QUESTION,
-	  "", PROMPT_DELETE, 0 },
+	  "", PROMPT_DELETE, 0, 0, 0, 0 },
 
 	/* Couldn't clone file (error) */
 	{ PR_1D_CLONE_ERROR,
-	  N_("Couldn't clone file: %m\n"), PROMPT_NONE, 0 },
+	  N_("Couldn't clone file: %m\n"), PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Pass 1E Extent tree optimization	*/
 
 	/* Pass 1E: Optimizing extent trees */
 	{ PR_1E_PASS_HEADER,
 	  N_("Pass 1E: Optimizing @x trees\n"),
-	  PROMPT_NONE, PR_PREEN_NOMSG },
+	  PROMPT_NONE, PR_PREEN_NOMSG, 0, 0, 0 },
 
 	/* Failed to optimize extent tree */
 	{ PR_1E_OPTIMIZE_EXT_ERR,
 	  N_("Failed to optimize @x tree %p (%i): %m\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Optimizing extent trees */
 	{ PR_1E_OPTIMIZE_EXT_HEADER,
 	  N_("Optimizing @x trees: "),
-	  PROMPT_NONE, PR_MSG_ONLY },
+	  PROMPT_NONE, PR_MSG_ONLY, 0, 0, 0 },
 
 	/* Rebuilding extent tree %d */
 	{ PR_1E_OPTIMIZE_EXT,
 	  " %i",
-	  PROMPT_NONE, PR_LATCH_OPTIMIZE_EXT | PR_PREEN_NOHDR},
+	  PROMPT_NONE, PR_LATCH_OPTIMIZE_EXT | PR_PREEN_NOHDR, 0, 0, 0 },
 
 	/* Rebuilding extent tree end */
 	{ PR_1E_OPTIMIZE_EXT_END,
 	  "\n",
-	  PROMPT_NONE, PR_PREEN_NOHDR },
+	  PROMPT_NONE, PR_PREEN_NOHDR, 0, 0, 0 },
 
 	/* Internal error: extent tree depth too large */
 	{ PR_1E_MAX_EXTENT_TREE_DEPTH,
 	  N_("Internal error: max extent tree depth too large (%b; expected=%c).\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Inode extent tree could be shorter */
 	{ PR_1E_CAN_COLLAPSE_EXTENT_TREE,
 	  N_("@i %i @x tree (at level %b) could be shorter.  "),
-	  PROMPT_FIX, PR_NO_OK | PR_PREEN_NO | PR_PREEN_OK | PR_NOT_A_FIX },
+	  PROMPT_FIX, PR_NO_OK | PR_PREEN_NO | PR_PREEN_OK | PR_NOT_A_FIX, 0, 0, 0 },
 
 	/* Inode extent tree could be narrower */
 	{ PR_1E_CAN_NARROW_EXTENT_TREE,
 	  N_("@i %i @x tree (at level %b) could be narrower.  "),
-	  PROMPT_FIX, PR_NO_OK | PR_PREEN_NO | PR_PREEN_OK | PR_NOT_A_FIX },
+	  PROMPT_FIX, PR_NO_OK | PR_PREEN_NO | PR_PREEN_OK | PR_NOT_A_FIX, 0, 0, 0 },
 
 	/* Pass 2 errors */
 
 	/* Pass 2: Checking directory structure */
 	{ PR_2_PASS_HEADER,
 	  N_("Pass 2: Checking @d structure\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Bad inode number for '.' */
 	{ PR_2_BAD_INODE_DOT,
 	  N_("@n @i number for '.' in @d @i %i.\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Entry 'xxxx' in /a/b/c has bad inode number.*/
 	{ PR_2_BAD_INO,
 	  N_("@E has @n @i #: %Di.\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Entry 'xxxx' in /a/b/c has deleted/unused inode nnnnn.*/
 	{ PR_2_UNUSED_INODE,
 	  N_("@E has @D/unused @i %Di.  "),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Directory entry is link to '.' */
 	{ PR_2_LINK_DOT,
 	  N_("@E @L to '.'  "),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Directory entry points to inode now located in a bad block */
 	{ PR_2_BB_INODE,
 	  N_("@E points to @i (%Di) located in a bad @b.\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Directory entry contains a link to a directory */
 	{ PR_2_LINK_DIR,
 	  N_("@E @L to @d %P (%Di).\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Directory entry contains a link to the root directory */
 	{ PR_2_LINK_ROOT,
 	  N_("@E @L to the @r.\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Directory entry has illegal characters in its name */
 	{ PR_2_BAD_NAME,
 	  N_("@E has illegal characters in its name.\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Missing '.' in directory inode */
 	{ PR_2_MISSING_DOT,
 	  N_("Missing '.' in @d @i %i.\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Missing '..' in directory inode */
 	{ PR_2_MISSING_DOT_DOT,
 	  N_("Missing '..' in @d @i %i.\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* First entry in directory inode doesn't contain '.' */
 	{ PR_2_1ST_NOT_DOT,
 	  N_("First @e '%Dn' (@i=%Di) in @d @i %i (%p) @s '.'\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Second entry in directory inode doesn't contain '..' */
 	{ PR_2_2ND_NOT_DOT_DOT,
 	  N_("Second @e '%Dn' (@i=%Di) in @d @i %i @s '..'\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* i_faddr should be zero */
 	{ PR_2_FADDR_ZERO,
 	  N_("i_faddr @F %IF, @s zero.\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* i_file_acl should be zero */
 	{ PR_2_FILE_ACL_ZERO,
 	  N_("i_file_acl @F %If, @s zero.\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* i_size_high should be zero */
 	{ PR_2_DIR_SIZE_HIGH_ZERO,
 	  N_("i_size_high @F %Id, @s zero.\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* i_frag should be zero */
 	{ PR_2_FRAG_ZERO,
 	  N_("i_frag @F %N, @s zero.\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* i_fsize should be zero */
 	{ PR_2_FSIZE_ZERO,
 	  N_("i_fsize @F %N, @s zero.\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* inode has bad mode */
 	{ PR_2_BAD_MODE,
 	  N_("@i %i (%Q) has @n mode (%Im).\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* directory corrupted */
 	{ PR_2_DIR_CORRUPTED,
 	  N_("@d @i %i, %B, offset %N: @d corrupted\n"),
-	  PROMPT_SALVAGE, 0 },
+	  PROMPT_SALVAGE, 0, 0, 0, 0 },
 
 	/* filename too long */
 	{ PR_2_FILENAME_LONG,
 	  N_("@d @i %i, %B, offset %N: filename too long\n"),
-	  PROMPT_TRUNCATE, 0 },
+	  PROMPT_TRUNCATE, 0, 0, 0, 0 },
 
 	/* Directory inode has a missing block (hole) */
 	{ PR_2_DIRECTORY_HOLE,
 	  N_("@d @i %i has an unallocated %B.  "),
-	  PROMPT_ALLOCATE, 0 },
+	  PROMPT_ALLOCATE, 0, 0, 0, 0 },
 
 	/* '.' is not NULL terminated */
 	{ PR_2_DOT_NULL_TERM,
 	  N_("'.' @d @e in @d @i %i is not NULL terminated\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* '..' is not NULL terminated */
 	{ PR_2_DOT_DOT_NULL_TERM,
 	  N_("'..' @d @e in @d @i %i is not NULL terminated\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Illegal character device inode */
 	{ PR_2_BAD_CHAR_DEV,
 	  N_("@i %i (%Q) is an @I character @v.\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Illegal block device inode */
 	{ PR_2_BAD_BLOCK_DEV,
 	  N_("@i %i (%Q) is an @I @b @v.\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Duplicate '.' entry */
 	{ PR_2_DUP_DOT,
 	  N_("@E is duplicate '.' @e.\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Duplicate '..' entry */
 	{ PR_2_DUP_DOT_DOT,
 	  N_("@E is duplicate '..' @e.\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Internal error: couldn't find dir_info */
 	{ PR_2_NO_DIRINFO,
 	  N_("Internal error: couldn't find dir_info for %i.\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Final rec_len is wrong */
 	{ PR_2_FINAL_RECLEN,
 	  N_("@E has rec_len of %Dr, @s %N.\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Error allocating icount structure */
 	{ PR_2_ALLOCATE_ICOUNT,
 	  N_("@A icount structure: %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Error iterating over directory blocks */
 	{ PR_2_DBLIST_ITERATE,
 	  N_("Error iterating over @d @bs: %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Error reading directory block */
 	{ PR_2_READ_DIRBLOCK,
 	  N_("Error reading @d @b %b (@i %i): %m\n"),
-	  PROMPT_CONTINUE, 0 },
+	  PROMPT_CONTINUE, 0, 0, 0, 0 },
 
 	/* Error writing directory block */
 	{ PR_2_WRITE_DIRBLOCK,
 	  N_("Error writing @d @b %b (@i %i): %m\n"),
-	  PROMPT_CONTINUE, 0 },
+	  PROMPT_CONTINUE, 0, 0, 0, 0 },
 
 	/* Error allocating new directory block */
 	{ PR_2_ALLOC_DIRBOCK,
 	  N_("@A new @d @b for @i %i (%s): %m\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Error deallocating inode */
 	{ PR_2_DEALLOC_INODE,
 	  N_("Error deallocating @i %i: %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Directory entry for '.' is big.  Split? */
 	{ PR_2_SPLIT_DOT,
 	  N_("@d @e for '.' in %p (%i) is big.\n"),
-	  PROMPT_SPLIT, PR_NO_OK },
+	  PROMPT_SPLIT, PR_NO_OK, 0, 0, 0 },
 
 	/* Illegal FIFO inode */
 	{ PR_2_BAD_FIFO,
 	  N_("@i %i (%Q) is an @I FIFO.\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Illegal socket inode */
 	{ PR_2_BAD_SOCKET,
 	  N_("@i %i (%Q) is an @I socket.\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Directory filetype not set */
 	{ PR_2_SET_FILETYPE,
 	  N_("Setting filetype for @E to %N.\n"),
-	  PROMPT_NONE, PR_PREEN_OK | PR_NO_OK | PR_NO_NOMSG },
+	  PROMPT_NONE, PR_PREEN_OK | PR_NO_OK | PR_NO_NOMSG, 0, 0, 0 },
 
 	/* Directory filetype incorrect */
 	{ PR_2_BAD_FILETYPE,
 	  N_("@E has an incorrect filetype (was %Dt, @s %N).\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Directory filetype set on filesystem */
 	{ PR_2_CLEAR_FILETYPE,
 	  N_("@E has filetype set.\n"),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Directory filename is null */
 	{ PR_2_NULL_NAME,
 	  N_("@E has a @z name.\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Invalid symlink */
 	{ PR_2_INVALID_SYMLINK,
 	  N_("Symlink %Q (@i #%i) is @n.\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* i_file_acl (extended attribute block) is bad */
 	{ PR_2_FILE_ACL_BAD,
 	  N_("@a @b @F @n (%If).\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Filesystem contains large files, but has no such flag in sb */
 	{ PR_2_FEATURE_LARGE_FILES,
 	  N_("@f contains large files, but lacks LARGE_FILE flag in @S.\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Node in HTREE directory not referenced */
 	{ PR_2_HTREE_NOTREF,
 	  N_("@p @h %d: %B not referenced\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Node in HTREE directory referenced twice */
 	{ PR_2_HTREE_DUPREF,
 	  N_("@p @h %d: %B referenced twice\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Node in HTREE directory has bad min hash */
 	{ PR_2_HTREE_MIN_HASH,
 	  N_("@p @h %d: %B has bad min hash\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Node in HTREE directory has bad max hash */
 	{ PR_2_HTREE_MAX_HASH,
 	  N_("@p @h %d: %B has bad max hash\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Clear invalid HTREE directory */
 	{ PR_2_HTREE_CLEAR,
-	  N_("@n @h %d (%q).  "), PROMPT_CLEAR_HTREE, 0 },
+	  N_("@n @h %d (%q).  "), PROMPT_CLEAR_HTREE, 0, 0, 0, 0 },
 
 	/* Bad block in htree interior node */
 	{ PR_2_HTREE_BADBLK,
 	  N_("@p @h %d (%q): bad @b number %b.\n"),
-	  PROMPT_CLEAR_HTREE, 0 },
+	  PROMPT_CLEAR_HTREE, 0, 0, 0, 0 },
 
 	/* Error adjusting EA refcount */
 	{ PR_2_ADJ_EA_REFCOUNT,
 	  N_("Error adjusting refcount for @a @b %b (@i %i): %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Invalid HTREE root node */
 	{ PR_2_HTREE_BAD_ROOT,
 	  N_("@p @h %d: root node is @n\n"),
-	  PROMPT_CLEAR_HTREE, PR_PREEN_OK },
+	  PROMPT_CLEAR_HTREE, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Invalid HTREE limit */
 	{ PR_2_HTREE_BAD_LIMIT,
 	  N_("@p @h %d: %B has @n limit (%N)\n"),
-	  PROMPT_CLEAR_HTREE, PR_PREEN_OK },
+	  PROMPT_CLEAR_HTREE, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Invalid HTREE count */
 	{ PR_2_HTREE_BAD_COUNT,
 	  N_("@p @h %d: %B has @n count (%N)\n"),
-	  PROMPT_CLEAR_HTREE, PR_PREEN_OK },
+	  PROMPT_CLEAR_HTREE, PR_PREEN_OK, 0, 0, 0 },
 
 	/* HTREE interior node has out-of-order hashes in table */
 	{ PR_2_HTREE_HASH_ORDER,
 	  N_("@p @h %d: %B has an unordered hash table\n"),
-	  PROMPT_CLEAR_HTREE, PR_PREEN_OK },
+	  PROMPT_CLEAR_HTREE, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Node in HTREE directory has invalid depth */
 	{ PR_2_HTREE_BAD_DEPTH,
 	  N_("@p @h %d: %B has @n depth (%N)\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Duplicate directory entry found */
 	{ PR_2_DUPLICATE_DIRENT,
 	  N_("Duplicate @E found.  "),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Non-unique filename found */
 	{ PR_2_NON_UNIQUE_FILE, /* xgettext: no-c-format */
 	  N_("@E has a non-unique filename.\nRename to %s"),
-	  PROMPT_NULL, 0 },
+	  PROMPT_NULL, 0, 0, 0, 0 },
 
 	/* Duplicate directory entry found */
 	{ PR_2_REPORT_DUP_DIRENT,
 	  N_("Duplicate @e '%Dn' found.\n\tMarking %p (%i) to be rebuilt.\n\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* i_blocks_hi should be zero */
 	{ PR_2_BLOCKS_HI_ZERO,
 	  N_("i_blocks_hi @F %N, @s zero.\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Unexpected HTREE block */
 	{ PR_2_UNEXPECTED_HTREE_BLOCK,
-	  N_("Unexpected @b in @h %d (%q).\n"), PROMPT_CLEAR_HTREE, 0 },
+	  N_("Unexpected @b in @h %d (%q).\n"), PROMPT_CLEAR_HTREE, 0,
+	  0, 0, 0 },
 
 	/* Inode found in group where _INODE_UNINIT is set */
 	{ PR_2_INOREF_BG_INO_UNINIT,
 	  N_("@E references @i %Di in @g %g where _INODE_UNINIT is set.\n"),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Inode found in group unused inodes area */
 	{ PR_2_INOREF_IN_UNUSED,
 	  N_("@E references @i %Di found in @g %g's unused inodes area.\n"),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* i_blocks_hi should be zero */
 	{ PR_2_I_FILE_ACL_HI_ZERO,
 	  N_("i_file_acl_hi @F %N, @s zero.\n"),
-	  PROMPT_CLEAR, PR_PREEN_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
 
 	/* htree root node fails checksum */
 	{ PR_2_HTREE_ROOT_CSUM_INVALID,
 	  N_("@p @h %d: root node fails checksum.\n"),
-	  PROMPT_CLEAR_HTREE, PR_PREEN_OK },
+	  PROMPT_CLEAR_HTREE, PR_PREEN_OK, 0, 0, 0 },
 
 	/* htree internal node fails checksum */
 	{ PR_2_HTREE_NODE_CSUM_INVALID,
 	  N_("@p @h %d: internal node fails checksum.\n"),
-	  PROMPT_CLEAR_HTREE, PR_PREEN_OK },
+	  PROMPT_CLEAR_HTREE, PR_PREEN_OK, 0, 0, 0 },
 
 	/* leaf node has no checksum */
 	{ PR_2_LEAF_NODE_MISSING_CSUM,
 	  N_("@d @i %i, %B, offset %N: @d has no checksum.\n"),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* leaf node passes checks but fails checksum */
 	{ PR_2_LEAF_NODE_ONLY_CSUM_INVALID,
 	  N_("@d @i %i, %B: @d passes checks but fails checksum.\n"),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* inline directory inode size must be a multiple of 4 */
 	{ PR_2_BAD_INLINE_DIR_SIZE,
 	  N_("Inline @d @i %i size (%N) must be a multiple of 4.\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* fixing size of inline directory inode failed */
 	{ PR_2_FIX_INLINE_DIR_FAILED,
 	  N_("Fixing size of inline @d @i %i failed.\n"),
-	  PROMPT_TRUNCATE, 0 },
+	  PROMPT_TRUNCATE, 0, 0, 0, 0 },
 
 	/* Encrypted directory entry is too short */
 	{ PR_2_BAD_ENCRYPTED_NAME,
 	  N_("Encrypted @E is too short.\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Pass 3 errors */
 
 	/* Pass 3: Checking directory connectivity */
 	{ PR_3_PASS_HEADER,
 	  N_("Pass 3: Checking @d connectivity\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Root inode not allocated */
 	{ PR_3_NO_ROOT_INODE,
 	  N_("@r not allocated.  "),
-	  PROMPT_ALLOCATE, 0 },
+	  PROMPT_ALLOCATE, 0, 0, 0, 0 },
 
 	/* No room in lost+found */
 	{ PR_3_EXPAND_LF_DIR,
 	  N_("No room in @l @d.  "),
-	  PROMPT_EXPAND, 0 },
+	  PROMPT_EXPAND, 0, 0, 0, 0 },
 
 	/* Unconnected directory inode */
 	{ PR_3_UNCONNECTED_DIR,
 	  N_("Unconnected @d @i %i (%p)\n"),
-	  PROMPT_CONNECT, 0 },
+	  PROMPT_CONNECT, 0, 0, 0, 0 },
 
 	/* /lost+found not found */
 	{ PR_3_NO_LF_DIR,
 	  N_("/@l not found.  "),
-	  PROMPT_CREATE, PR_PREEN_OK },
+	  PROMPT_CREATE, PR_PREEN_OK, 0, 0, 0 },
 
 	/* .. entry is incorrect */
 	{ PR_3_BAD_DOT_DOT,
 	  N_("'..' in %Q (%i) is %P (%j), @s %q (%d).\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Bad or non-existent /lost+found.  Cannot reconnect */
 	{ PR_3_NO_LPF,
 	  N_("Bad or non-existent /@l.  Cannot reconnect.\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Could not expand /lost+found */
 	{ PR_3_CANT_EXPAND_LPF,
 	  N_("Could not expand /@l: %m\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Could not reconnect inode */
 	{ PR_3_CANT_RECONNECT,
 	  N_("Could not reconnect %i: %m\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Error while trying to find /lost+found */
 	{ PR_3_ERR_FIND_LPF,
 	  N_("Error while trying to find /@l: %m\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Error in ext2fs_new_block while creating /lost+found */
 	{ PR_3_ERR_LPF_NEW_BLOCK,
 	  N_("ext2fs_new_@b: %m while trying to create /@l @d\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Error in ext2fs_new_inode while creating /lost+found */
 	{ PR_3_ERR_LPF_NEW_INODE,
 	  N_("ext2fs_new_@i: %m while trying to create /@l @d\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Error in ext2fs_new_dir_block while creating /lost+found */
 	{ PR_3_ERR_LPF_NEW_DIR_BLOCK,
 	  N_("ext2fs_new_dir_@b: %m while creating new @d @b\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Error while writing directory block for /lost+found */
 	{ PR_3_ERR_LPF_WRITE_BLOCK,
 	  N_("ext2fs_write_dir_@b: %m while writing the @d @b for /@l\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Error while adjusting inode count */
 	{ PR_3_ADJUST_INODE,
 	  N_("Error while adjusting @i count on @i %i\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Couldn't fix parent directory -- error */
 	{ PR_3_FIX_PARENT_ERR,
 	  N_("Couldn't fix parent of @i %i: %m\n\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Couldn't fix parent directory -- couldn't find it */
 	{ PR_3_FIX_PARENT_NOFIND,
 	  N_("Couldn't fix parent of @i %i: Couldn't find parent @d @e\n\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Error allocating inode bitmap */
 	{ PR_3_ALLOCATE_IBITMAP_ERROR,
 	  N_("@A @i @B (%N): %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Error creating root directory */
 	{ PR_3_CREATE_ROOT_ERROR,
 	  N_("Error creating root @d (%s): %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Error creating lost and found directory */
 	{ PR_3_CREATE_LPF_ERROR,
 	  N_("Error creating /@l @d (%s): %m\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Root inode is not directory; aborting */
 	{ PR_3_ROOT_NOT_DIR_ABORT,
 	  N_("@r is not a @d; aborting.\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Cannot proceed without a root inode. */
 	{ PR_3_NO_ROOT_INODE_ABORT,
 	  N_("Cannot proceed without a @r.\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Internal error: couldn't find dir_info */
 	{ PR_3_NO_DIRINFO,
 	  N_("Internal error: couldn't find dir_info for %i.\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Lost+found not a directory */
 	{ PR_3_LPF_NOTDIR,
 	  N_("/@l is not a @d (ino=%i)\n"),
-	  PROMPT_UNLINK, 0 },
+	  PROMPT_UNLINK, 0, 0, 0, 0 },
 
 	/* Lost+found has inline data */
 	{ PR_3_LPF_INLINE_DATA,
 	  N_("/@l has inline data\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Cannot allocate /lost+found. */
 	{ PR_3_LPF_NO_SPACE,
 	  N_("Cannot allocate space for /@l.\nPlace lost files in root directory instead"),
-	  PROMPT_NULL, 0 },
+	  PROMPT_NULL, 0, 0, 0, 0 },
 
 	/* Delete some files and re-run e2fsck. */
 	{ PR_3_NO_SPACE_TO_RECOVER,
 	  N_("Insufficient space to recover lost files!\nMove data off the @f and re-run e2fsck.\n\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Lost+found is encrypted */
 	{ PR_3_LPF_ENCRYPTED,
 	  N_("/@l is encrypted\n"),
-	  PROMPT_CLEAR, 0 },
+	  PROMPT_CLEAR, 0, 0, 0, 0 },
 
 	/* Pass 3A Directory Optimization	*/
 
 	/* Pass 3A: Optimizing directories */
 	{ PR_3A_PASS_HEADER,
 	  N_("Pass 3A: Optimizing directories\n"),
-	  PROMPT_NONE, PR_PREEN_NOMSG },
+	  PROMPT_NONE, PR_PREEN_NOMSG, 0, 0, 0 },
 
 	/* Error iterating over directories */
 	{ PR_3A_OPTIMIZE_ITER,
 	  N_("Failed to create dirs_to_hash iterator: %m\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Error rehash directory */
 	{ PR_3A_OPTIMIZE_DIR_ERR,
 	  N_("Failed to optimize directory %q (%d): %m\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Rehashing dir header */
 	{ PR_3A_OPTIMIZE_DIR_HEADER,
 	  N_("Optimizing directories: "),
-	  PROMPT_NONE, PR_MSG_ONLY },
+	  PROMPT_NONE, PR_MSG_ONLY, 0, 0, 0 },
 
 	/* Rehashing directory %d */
 	{ PR_3A_OPTIMIZE_DIR,
 	  " %d",
-	  PROMPT_NONE, PR_LATCH_OPTIMIZE_DIR | PR_PREEN_NOHDR},
+	  PROMPT_NONE, PR_LATCH_OPTIMIZE_DIR | PR_PREEN_NOHDR, 0, 0, 0 },
 
 	/* Rehashing dir end */
 	{ PR_3A_OPTIMIZE_DIR_END,
 	  "\n",
-	  PROMPT_NONE, PR_PREEN_NOHDR },
+	  PROMPT_NONE, PR_PREEN_NOHDR, 0, 0, 0 },
 
 	/* Pass 4 errors */
 
 	/* Pass 4: Checking reference counts */
 	{ PR_4_PASS_HEADER,
 	  N_("Pass 4: Checking reference counts\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Unattached zero-length inode */
 	{ PR_4_ZERO_LEN_INODE,
 	  N_("@u @z @i %i.  "),
-	  PROMPT_CLEAR, PR_PREEN_OK|PR_NO_OK },
+	  PROMPT_CLEAR, PR_PREEN_OK|PR_NO_OK, 0, 0, 0 },
 
 	/* Unattached inode */
 	{ PR_4_UNATTACHED_INODE,
 	  N_("@u @i %i\n"),
-	  PROMPT_CONNECT, 0 },
+	  PROMPT_CONNECT, 0, 0, 0, 0 },
 
 	/* Inode ref count wrong */
 	{ PR_4_BAD_REF_COUNT,
 	  N_("@i %i ref count is %Il, @s %N.  "),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	{ PR_4_INCONSISTENT_COUNT,
 	  N_("WARNING: PROGRAMMING BUG IN E2FSCK!\n"
 	  "\tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n"
 	  "@i_link_info[%i] is %N, @i.i_links_count is %Il.  "
 	  "They @s the same!\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	{ PR_4_EA_INODE_REF_COUNT,
 	  N_("@a @i %i ref count is %N, @s %n. "),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* directory exceeds max links, but no DIR_NLINK feature in superblock*/
 	{ PR_4_DIR_NLINK_FEATURE,
 	  N_("@d exceeds max links, but no DIR_NLINK feature in @S.\n"),
-	  PROMPT_FIX, 0 },
+	  PROMPT_FIX, 0, 0, 0, 0 },
 
 	/* Pass 5 errors */
 
 	/* Pass 5: Checking group summary information */
 	{ PR_5_PASS_HEADER,
 	  N_("Pass 5: Checking @g summary information\n"),
-	  PROMPT_NONE, 0 },
+	  PROMPT_NONE, 0, 0, 0, 0 },
 
 	/* Padding at end of inode bitmap is not set. */
 	{ PR_5_INODE_BMAP_PADDING,
 	  N_("Padding at end of @i @B is not set. "),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Padding at end of block bitmap is not set. */
 	{ PR_5_BLOCK_BMAP_PADDING,
 	  N_("Padding at end of @b @B is not set. "),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Block bitmap differences header */
 	{ PR_5_BLOCK_BITMAP_HEADER,
 	  N_("@b @B differences: "),
-	  PROMPT_NONE, PR_PREEN_OK | PR_PREEN_NOMSG},
+	  PROMPT_NONE, PR_PREEN_OK | PR_PREEN_NOMSG, 0, 0, 0 },
 
 	/* Block not used, but marked in bitmap */
 	{ PR_5_BLOCK_UNUSED,
 	  " -%b",
-	  PROMPT_NONE, PR_LATCH_BBITMAP | PR_PREEN_OK | PR_PREEN_NOMSG },
+	  PROMPT_NONE, PR_LATCH_BBITMAP | PR_PREEN_OK | PR_PREEN_NOMSG,
+	  0, 0, 0 },
 
 	/* Block used, but not marked used in bitmap */
 	{ PR_5_BLOCK_USED,
 	  " +%b",
-	  PROMPT_NONE, PR_LATCH_BBITMAP | PR_PREEN_OK | PR_PREEN_NOMSG },
+	  PROMPT_NONE, PR_LATCH_BBITMAP | PR_PREEN_OK | PR_PREEN_NOMSG,
+	  0, 0, 0 },
 
 	/* Block bitmap differences end */
 	{ PR_5_BLOCK_BITMAP_END,
 	  "\n",
-	  PROMPT_FIX, PR_PREEN_OK | PR_PREEN_NOMSG },
+	  PROMPT_FIX, PR_PREEN_OK | PR_PREEN_NOMSG, 0, 0, 0 },
 
 	/* Inode bitmap differences header */
 	{ PR_5_INODE_BITMAP_HEADER,
 	  N_("@i @B differences: "),
-	  PROMPT_NONE, PR_PREEN_OK | PR_PREEN_NOMSG },
+	  PROMPT_NONE, PR_PREEN_OK | PR_PREEN_NOMSG, 0, 0, 0 },
 
 	/* Inode not used, but marked in bitmap */
 	{ PR_5_INODE_UNUSED,
 	  " -%i",
-	  PROMPT_NONE, PR_LATCH_IBITMAP | PR_PREEN_OK | PR_PREEN_NOMSG },
+	  PROMPT_NONE, PR_LATCH_IBITMAP | PR_PREEN_OK | PR_PREEN_NOMSG,
+	  0, 0, 0 },
 
 	/* Inode used, but not marked used in bitmap */
 	{ PR_5_INODE_USED,
 	  " +%i",
-	  PROMPT_NONE, PR_LATCH_IBITMAP | PR_PREEN_OK | PR_PREEN_NOMSG },
+	  PROMPT_NONE, PR_LATCH_IBITMAP | PR_PREEN_OK | PR_PREEN_NOMSG,
+	  0, 0, 0 },
 
 	/* Inode bitmap differences end */
 	{ PR_5_INODE_BITMAP_END,
 	  "\n",
-	  PROMPT_FIX, PR_PREEN_OK | PR_PREEN_NOMSG },
+	  PROMPT_FIX, PR_PREEN_OK | PR_PREEN_NOMSG, 0, 0, 0 },
 
 	/* Free inodes count for group wrong */
 	{ PR_5_FREE_INODE_COUNT_GROUP,
 	  N_("Free @is count wrong for @g #%g (%i, counted=%j).\n"),
-	  PROMPT_FIX, PR_PREEN_OK | PR_PREEN_NOMSG },
+	  PROMPT_FIX, PR_PREEN_OK | PR_PREEN_NOMSG, 0, 0, 0 },
 
 	/* Directories count for group wrong */
 	{ PR_5_FREE_DIR_COUNT_GROUP,
 	  N_("Directories count wrong for @g #%g (%i, counted=%j).\n"),
-	  PROMPT_FIX, PR_PREEN_OK | PR_PREEN_NOMSG },
+	  PROMPT_FIX, PR_PREEN_OK | PR_PREEN_NOMSG, 0, 0, 0 },
 
 	/* Free inodes count wrong */
 	{ PR_5_FREE_INODE_COUNT,
 	  N_("Free @is count wrong (%i, counted=%j).\n"),
-	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK | PR_PREEN_NOMSG },
+	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK | PR_PREEN_NOMSG, 0, 0, 0 },
 
 	/* Free blocks count for group wrong */
 	{ PR_5_FREE_BLOCK_COUNT_GROUP,
 	  N_("Free @bs count wrong for @g #%g (%b, counted=%c).\n"),
-	  PROMPT_FIX, PR_PREEN_OK | PR_PREEN_NOMSG },
+	  PROMPT_FIX, PR_PREEN_OK | PR_PREEN_NOMSG, 0, 0, 0 },
 
 	/* Free blocks count wrong */
 	{ PR_5_FREE_BLOCK_COUNT,
 	  N_("Free @bs count wrong (%b, counted=%c).\n"),
-	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK | PR_PREEN_NOMSG },
+	  PROMPT_FIX, PR_PREEN_OK | PR_NO_OK | PR_PREEN_NOMSG, 0, 0, 0 },
 
 	/* Programming error: bitmap endpoints don't match */
 	{ PR_5_BMAP_ENDPOINTS,
 	  N_("PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't "
 	  "match calculated @B endpoints (%i, %j)\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Internal error: fudging end of bitmap */
 	{ PR_5_FUDGE_BITMAP_ERROR,
 	  N_("Internal error: fudging end of bitmap (%N)\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Error copying in replacement inode bitmap */
 	{ PR_5_COPY_IBITMAP_ERROR,
 	  N_("Error copying in replacement @i @B: %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Error copying in replacement block bitmap */
 	{ PR_5_COPY_BBITMAP_ERROR,
 	  N_("Error copying in replacement @b @B: %m\n"),
-	  PROMPT_NONE, PR_FATAL },
+	  PROMPT_NONE, PR_FATAL, 0, 0, 0 },
 
 	/* Block range not used, but marked in bitmap */
 	{ PR_5_BLOCK_RANGE_UNUSED,
 	  " -(%b--%c)",
-	  PROMPT_NONE, PR_LATCH_BBITMAP | PR_PREEN_OK | PR_PREEN_NOMSG },
+	  PROMPT_NONE, PR_LATCH_BBITMAP | PR_PREEN_OK | PR_PREEN_NOMSG,
+	  0, 0, 0 },
 
 	/* Block range used, but not marked used in bitmap */
 	{ PR_5_BLOCK_RANGE_USED,
 	  " +(%b--%c)",
-	  PROMPT_NONE, PR_LATCH_BBITMAP | PR_PREEN_OK | PR_PREEN_NOMSG },
+	  PROMPT_NONE, PR_LATCH_BBITMAP | PR_PREEN_OK | PR_PREEN_NOMSG,
+	  0, 0, 0 },
 
 	/* Inode range not used, but marked in bitmap */
 	{ PR_5_INODE_RANGE_UNUSED,
 	  " -(%i--%j)",
-	  PROMPT_NONE, PR_LATCH_IBITMAP | PR_PREEN_OK | PR_PREEN_NOMSG },
+	  PROMPT_NONE, PR_LATCH_IBITMAP | PR_PREEN_OK | PR_PREEN_NOMSG,
+	  0, 0, 0 },
 
 	/* Inode range used, but not marked used in bitmap */
 	{ PR_5_INODE_RANGE_USED,
 	  " +(%i--%j)",
-	  PROMPT_NONE, PR_LATCH_IBITMAP | PR_PREEN_OK | PR_PREEN_NOMSG },
+	  PROMPT_NONE, PR_LATCH_IBITMAP | PR_PREEN_OK | PR_PREEN_NOMSG,
+	  0, 0, 0 },
 
 	/* Group N block(s) in use but group is marked BLOCK_UNINIT */
 	{ PR_5_BLOCK_UNINIT,
 	  N_("@g %g @b(s) in use but @g is marked BLOCK_UNINIT\n"),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Group N inode(s) in use but group is marked INODE_UNINIT */
 	{ PR_5_INODE_UNINIT,
 	  N_("@g %g @i(s) in use but @g is marked INODE_UNINIT\n"),
-	  PROMPT_FIX, PR_PREEN_OK },
+	  PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Group N inode bitmap does not match checksum */
 	{ PR_5_INODE_BITMAP_CSUM_INVALID,
 	  N_("@g %g @i @B does not match checksum.\n"),
-	  PROMPT_FIX, PR_LATCH_IBITMAP | PR_PREEN_OK },
+	  PROMPT_FIX, PR_LATCH_IBITMAP | PR_PREEN_OK, 0, 0, 0 },
 
 	/* Group N block bitmap does not match checksum */
 	{ PR_5_BLOCK_BITMAP_CSUM_INVALID,
 	  N_("@g %g @b @B does not match checksum.\n"),
-	  PROMPT_FIX, PR_LATCH_BBITMAP | PR_PREEN_OK },
+	  PROMPT_FIX, PR_LATCH_BBITMAP | PR_PREEN_OK, 0, 0, 0 },
 
 	/* Post-Pass 5 errors */
 
 	/* Recreate journal if E2F_FLAG_JOURNAL_INODE flag is set */
 	{ PR_6_RECREATE_JOURNAL,
 	  N_("Recreate @j"),
-	  PROMPT_NULL, PR_PREEN_OK | PR_NO_OK },
+	  PROMPT_NULL, PR_PREEN_OK | PR_NO_OK, 0, 0, 0 },
 
 	/* Update quota information if it is inconsistent */
 	{ PR_6_UPDATE_QUOTAS,
 	  N_("Update quota info for quota type %N"),
-	  PROMPT_NULL, PR_PREEN_OK },
+	  PROMPT_NULL, PR_PREEN_OK, 0, 0, 0 },
 
 	/* Error setting block group checksum info */
 	{ PR_6_SET_BG_CHECKSUM,
 	  N_("Error setting @b @g checksum info: %m\n"),
-	  PROMPT_NULL, PR_FATAL },
+	  PROMPT_NULL, PR_FATAL, 0, 0, 0 },
 
 	/* Error writing file system info */
 	{ PR_6_FLUSH_FILESYSTEM,
 	  N_("Error writing file system info: %m\n"),
-	  PROMPT_NULL, PR_FATAL },
+	  PROMPT_NULL, PR_FATAL, 0, 0, 0 },
 
 	/* Error flushing writes to storage device */
 	{ PR_6_IO_FLUSH,
 	  N_("Error flushing writes to storage device: %m\n"),
-	  PROMPT_NULL, PR_FATAL },
+	  PROMPT_NULL, PR_FATAL, 0, 0, 0 },
 
 	/* Error writing quota information */
 	{ PR_6_WRITE_QUOTAS,
 	  N_("Error writing quota info for quota type %N: %m\n"),
-	  PROMPT_NULL, 0 },
+	  PROMPT_NULL, 0, 0, 0, 0 },
 
 	{ 0 }
 };
@@ -2073,20 +2091,22 @@
  * problems will be either fixed or not fixed.
  */
 static struct latch_descr pr_latch_info[] = {
-	{ PR_LATCH_BLOCK, PR_1_INODE_BLOCK_LATCH, 0 },
-	{ PR_LATCH_BBLOCK, PR_1_INODE_BBLOCK_LATCH, 0 },
-	{ PR_LATCH_IBITMAP, PR_5_INODE_BITMAP_HEADER, PR_5_INODE_BITMAP_END },
-	{ PR_LATCH_BBITMAP, PR_5_BLOCK_BITMAP_HEADER, PR_5_BLOCK_BITMAP_END },
-	{ PR_LATCH_RELOC, PR_0_RELOCATE_HINT, 0 },
-	{ PR_LATCH_DBLOCK, PR_1B_DUP_BLOCK_HEADER, PR_1B_DUP_BLOCK_END },
-	{ PR_LATCH_LOW_DTIME, PR_1_ORPHAN_LIST_REFUGEES, 0 },
-	{ PR_LATCH_TOOBIG, PR_1_INODE_TOOBIG, 0 },
-	{ PR_LATCH_OPTIMIZE_DIR, PR_3A_OPTIMIZE_DIR_HEADER, PR_3A_OPTIMIZE_DIR_END },
-	{ PR_LATCH_BG_CHECKSUM, PR_0_GDT_CSUM_LATCH, 0 },
-	{ PR_LATCH_OPTIMIZE_EXT, PR_1E_OPTIMIZE_EXT_HEADER, PR_1E_OPTIMIZE_EXT_END },
-	{ -1, 0, 0 },
+	{ PR_LATCH_BLOCK, PR_1_INODE_BLOCK_LATCH, 0, 0 },
+	{ PR_LATCH_BBLOCK, PR_1_INODE_BBLOCK_LATCH, 0, 0 },
+	{ PR_LATCH_IBITMAP, PR_5_INODE_BITMAP_HEADER, PR_5_INODE_BITMAP_END, 0 },
+	{ PR_LATCH_BBITMAP, PR_5_BLOCK_BITMAP_HEADER, PR_5_BLOCK_BITMAP_END, 0 },
+	{ PR_LATCH_RELOC, PR_0_RELOCATE_HINT, 0, 0 },
+	{ PR_LATCH_DBLOCK, PR_1B_DUP_BLOCK_HEADER, PR_1B_DUP_BLOCK_END, 0 },
+	{ PR_LATCH_LOW_DTIME, PR_1_ORPHAN_LIST_REFUGEES, 0, 0 },
+	{ PR_LATCH_TOOBIG, PR_1_INODE_TOOBIG, 0, 0 },
+	{ PR_LATCH_OPTIMIZE_DIR, PR_3A_OPTIMIZE_DIR_HEADER, PR_3A_OPTIMIZE_DIR_END, 0 },
+	{ PR_LATCH_BG_CHECKSUM, PR_0_GDT_CSUM_LATCH, 0, 0 },
+	{ PR_LATCH_OPTIMIZE_EXT, PR_1E_OPTIMIZE_EXT_HEADER, PR_1E_OPTIMIZE_EXT_END, 0 },
+	{ -1, 0, 0, 0 },
 };
+#if __GNUC_PREREQ (4, 6)
 #pragma GCC diagnostic pop
+#endif
 
 static struct e2fsck_problem *find_problem(problem_t code)
 {
diff --git a/e2fsck/problem.h b/e2fsck/problem.h
index 7db122a..2c79169 100644
--- a/e2fsck/problem.h
+++ b/e2fsck/problem.h
@@ -285,6 +285,9 @@
 /* Inode count in the superblock incorrect */
 #define PR_0_INODE_COUNT_BIG			0x000050
 
+/* Meta_bg and resize_inode are not compatible, remove resize_inode*/
+#define PR_0_DISABLE_RESIZE_INODE		0x000051
+
 /*
  * Pass 1 errors
  */
diff --git a/e2fsck/super.c b/e2fsck/super.c
index eb7ab0d..e5932be 100644
--- a/e2fsck/super.c
+++ b/e2fsck/super.c
@@ -436,6 +436,14 @@
 
 	clear_problem_context(&pctx);
 
+	if (ext2fs_has_feature_resize_inode(fs->super) &&
+	    ext2fs_has_feature_meta_bg(fs->super) &&
+	    fix_problem(ctx, PR_0_DISABLE_RESIZE_INODE, &pctx)) {
+		ext2fs_clear_feature_resize_inode(fs->super);
+		fs->super->s_reserved_gdt_blocks = 0;
+		ext2fs_mark_super_dirty(fs);
+	}
+
 	/*
 	 * If the resize inode feature isn't set, then
 	 * s_reserved_gdt_blocks must be zero.
diff --git a/e2fsck/unix.c b/e2fsck/unix.c
index 90065b3..2df22b1 100644
--- a/e2fsck/unix.c
+++ b/e2fsck/unix.c
@@ -617,9 +617,10 @@
 			fprintf(stderr, _("ERROR: Couldn't open "
 				"/dev/null (%s)\n"),
 				strerror(errno));
-			break;
+			return;
 		}
 	}
+	(void) close(fd);
 }
 
 #ifdef HAVE_SIGNAL_H
diff --git a/e2fsprogs.lsm b/e2fsprogs.lsm
index 40788ce..94828f8 100644
--- a/e2fsprogs.lsm
+++ b/e2fsprogs.lsm
@@ -1,16 +1,15 @@
 Begin3
 Title:          EXT2 Filesystem utilities
-Version:        1.44.3
-Entered-date:   2018-07-10
+Version:        1.44.4
+Entered-date:   2018-08-18
 Description:    The filesystem utilities for the EXT2, EXT3, and EXT4
 		filesystems, including e2fsck, mke2fs, dumpe2fs, and others.
 Keywords:       utilities, filesystem, Ext2fs, ext3, ext4
 Author:         tytso@mit.edu (Theodore Tso)
 Maintained-by:  tytso@mit.edu (Theodore Tso)
 Primary-site:   ftp.kernel.org /pub/linux/kernel/people/tytso/e2fsprogs
-                7396kB e2fsprogs-1.44.3.tar.gz
-                700kB  e2fsprogs-libs-1.44.3.tar.gz
-                1kB    e2fsprogs-1.44.3.lsm
+                7420kB e2fsprogs-1.44.4.tar.gz
+                1kB    e2fsprogs-1.44.4.lsm
 Alternate-site: download.sourceforge.net /pub/sourceforge/e2fsprogs
 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/3.x/4.x
 Copying-policy: GPL-2/LGPL-2
diff --git a/e2fsprogs.spec.in b/e2fsprogs.spec
similarity index 99%
rename from e2fsprogs.spec.in
rename to e2fsprogs.spec
index f42c4be..0765918 100644
--- a/e2fsprogs.spec.in
+++ b/e2fsprogs.spec
@@ -5,7 +5,7 @@
 
 Summary: Utilities for managing ext2/ext3/ext4 filesystems
 Name: e2fsprogs
-Version: @E2FSPROGS_PKGVER@
+Version: 1.44.4
 Release: 0
 License: GPLv2
 Group: System Environment/Base
diff --git a/intl/Makefile.in b/intl/Makefile.in
index 70d7834..e037e23 100644
--- a/intl/Makefile.in
+++ b/intl/Makefile.in
@@ -40,8 +40,8 @@
 
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = @MKINSTALLDIRS@
-mkinstalldirs = $(SHELL) $(MKINSTALLDIRS)
+MKDIR_P = @MKDIR_P@
+mkinstalldirs = $(SHELL) $(MKDIR_P)
 
 @SET_MAKE@
 
diff --git a/lib/Makefile.elf-lib b/lib/Makefile.elf-lib
index 4e88c05..bd7b2b3 100644
--- a/lib/Makefile.elf-lib
+++ b/lib/Makefile.elf-lib
@@ -35,8 +35,8 @@
 	$(Q) (cd ..; $(LN) $(LINK_BUILD_FLAGS) $(ELF_LIB) $(ELF_SONAME))
 
 installdirs-elf-lib::
-	$(E) "	MKINSTALLDIRS $(ELF_INSTALL_DIR) $(libdir)"
-	$(Q) $(MKINSTALLDIRS) $(DESTDIR)$(ELF_INSTALL_DIR) \
+	$(E) "	MKDIR_P $(ELF_INSTALL_DIR) $(libdir)"
+	$(Q) $(MKDIR_P) $(DESTDIR)$(ELF_INSTALL_DIR) \
 		$(DESTDIR)$(libdir)
 
 installdirs:: installdirs-elf-lib
diff --git a/lib/Makefile.solaris-lib b/lib/Makefile.solaris-lib
index a3d395e..304df7d 100644
--- a/lib/Makefile.solaris-lib
+++ b/lib/Makefile.solaris-lib
@@ -35,7 +35,7 @@
 	$(Q) (cd ..; $(LN) $(LINK_BUILD_FLAGS) $(ELF_LIB) $(ELF_SONAME))
 
 installdirs-elf-lib::
-	$(MKINSTALLDIRS) $(DESTDIR)$(ELF_INSTALL_DIR) \
+	$(MKDIR_P) $(DESTDIR)$(ELF_INSTALL_DIR) \
 		$(DESTDIR)$(libdir)
 
 installdirs:: installdirs-elf-lib
diff --git a/lib/blkid/Makefile.in b/lib/blkid/Makefile.in
index 0be2da5..850d688 100644
--- a/lib/blkid/Makefile.in
+++ b/lib/blkid/Makefile.in
@@ -146,8 +146,8 @@
 	$(Q) cd $(top_builddir); CONFIG_FILES=lib/blkid/blkid.pc ./config.status
 
 installdirs::
-	$(E) "	MKINSTALLDIRS $(libdir) $(includedir)/blkid"
-	$(Q) $(MKINSTALLDIRS) $(DESTDIR)$(libdir) \
+	$(E) "	MKDIR_P $(libdir) $(includedir)/blkid"
+	$(Q) $(MKDIR_P) $(DESTDIR)$(libdir) \
 		$(DESTDIR)$(includedir)/blkid $(DESTDIR)$(pkgconfigdir)
 
 install:: all installdirs 
diff --git a/lib/blkid/getsize.c b/lib/blkid/getsize.c
index 4e2835f..75f21d5 100644
--- a/lib/blkid/getsize.c
+++ b/lib/blkid/getsize.c
@@ -78,12 +78,15 @@
 	unsigned long long size64;
 	blkid_loff_t high, low;
 
-#ifdef DKIOCGETBLOCKCOUNT	/* For Apple Darwin */
-	if (ioctl(fd, DKIOCGETBLOCKCOUNT, &size64) >= 0) {
+#if defined DKIOCGETBLOCKCOUNT && defined DKIOCGETBLOCKSIZE	/* For Apple Darwin */
+	unsigned int size;
+
+	if (ioctl(fd, DKIOCGETBLOCKCOUNT, &size64) >= 0 &&
+	    ioctl(fd, DKIOCGETBLOCKSIZE, &size) >= 0) {
 		if (sizeof(blkid_loff_t) < sizeof(unsigned long long) &&
-		    (size64 << 9) > 0xFFFFFFFF)
+		    (size64 * size) > 0xFFFFFFFF)
 			return 0; /* EFBIG */
-		return (blkid_loff_t)size64 << 9;
+		return (blkid_loff_t)size64 * size;
 	}
 #endif
 
diff --git a/lib/blkid/probe.c b/lib/blkid/probe.c
index 0293b90..2e92344 100644
--- a/lib/blkid/probe.c
+++ b/lib/blkid/probe.c
@@ -1215,6 +1215,8 @@
 }
 
 
+#define HFSPLUS_SECTOR_SIZE        512
+
 static int probe_hfsplus(struct blkid_probe *probe,
 			 struct blkid_magic *id,
 			 unsigned char *buf)
@@ -1278,6 +1280,9 @@
 	}
 
 	blocksize = blkid_be32(hfsplus->blocksize);
+	if (blocksize < HFSPLUS_SECTOR_SIZE)
+		return 1;
+
 	memcpy(extents, hfsplus->cat_file.extents, sizeof(extents));
 	cat_block = blkid_be32(extents[0].start_block);
 
diff --git a/lib/e2p/Makefile.in b/lib/e2p/Makefile.in
index 534d229..2b0aa19 100644
--- a/lib/e2p/Makefile.in
+++ b/lib/e2p/Makefile.in
@@ -80,8 +80,8 @@
 	./tst_feature
 
 installdirs::
-	$(E) "	MKINSTALLDIRS $(libdir) $(includedir)/e2p"
-	$(Q) $(MKINSTALLDIRS) $(DESTDIR)$(libdir) \
+	$(E) "	MKDIR_P $(libdir) $(includedir)/e2p"
+	$(Q) $(MKDIR_P) $(DESTDIR)$(libdir) \
 		$(DESTDIR)$(includedir)/e2p $(DESTDIR)$(pkgconfigdir)
 
 install:: all installdirs 
diff --git a/lib/e2p/feature.c b/lib/e2p/feature.c
index 0fab9c7..e3b0dab 100644
--- a/lib/e2p/feature.c
+++ b/lib/e2p/feature.c
@@ -74,6 +74,8 @@
 			"project"},
 	{	E2P_FEATURE_RO_INCOMPAT, EXT4_FEATURE_RO_COMPAT_SHARED_BLOCKS,
 			"shared_blocks"},
+	{	E2P_FEATURE_RO_INCOMPAT, EXT4_FEATURE_RO_COMPAT_VERITY,
+			"verity"},
 
 	{	E2P_FEATURE_INCOMPAT, EXT2_FEATURE_INCOMPAT_COMPRESSION,
 			"compression" },
diff --git a/lib/e2p/ljs.c b/lib/e2p/ljs.c
index 0b1bead..c99126b 100644
--- a/lib/e2p/ljs.c
+++ b/lib/e2p/ljs.c
@@ -101,10 +101,10 @@
 			e2p_be32(jsb->s_checksum));
 	if ((nr_users > 1) ||
 	    !e2p_is_null_uuid(&jsb->s_users[0])) {
-		for (i=0; i < nr_users; i++) {
+		for (i=0; i < nr_users && i < JFS_USERS_MAX; i++) {
 			printf(i ? "                          %s\n"
 			       : "Journal users:            %s\n",
-			       e2p_uuid2str(&jsb->s_users[i*16]));
+			       e2p_uuid2str(&jsb->s_users[i * UUID_SIZE]));
 		}
 	}
 	if (jsb->s_errno != 0)
diff --git a/lib/e2p/pf.c b/lib/e2p/pf.c
index f93f22f..884f167 100644
--- a/lib/e2p/pf.c
+++ b/lib/e2p/pf.c
@@ -46,6 +46,7 @@
 	{ FS_NOCOW_FL, "C", "No_COW" },
 	{ EXT4_INLINE_DATA_FL, "N", "Inline_Data" },
 	{ EXT4_PROJINHERIT_FL, "P", "Project_Hierarchy" },
+	{ EXT4_VERITY_FL, "V", "Verity" },
 	{ 0, NULL, NULL }
 };
 
diff --git a/lib/et/Makefile.in b/lib/et/Makefile.in
index 0344679..16e29ea 100644
--- a/lib/et/Makefile.in
+++ b/lib/et/Makefile.in
@@ -100,8 +100,8 @@
 	$(TAGS) $(SRCS)
 
 installdirs::
-	$(E) "	MKINSTALLDIRS $(libdir) $(includedir)/et $(datadir)/et $(bindir) $(man1dir) $(man3dir)"
-	$(Q) $(MKINSTALLDIRS) $(DESTDIR)$(libdir) \
+	$(E) "	MKDIR_P $(libdir) $(includedir)/et $(datadir)/et $(bindir) $(man1dir) $(man3dir)"
+	$(Q) $(MKDIR_P) $(DESTDIR)$(libdir) \
 		$(DESTDIR)$(includedir)/et $(DESTDIR)$(datadir)/et \
 		$(DESTDIR)$(bindir) $(DESTDIR)$(man1dir) \
 		$(DESTDIR)$(man3dir) $(DESTDIR)$(pkgconfigdir)
diff --git a/lib/et/compile_et.sh.in b/lib/et/compile_et.sh.in
index 4c4ba17..3cba7c7 100644
--- a/lib/et/compile_et.sh.in
+++ b/lib/et/compile_et.sh.in
@@ -2,7 +2,6 @@
 #
 #
 
-datarootdir=@datarootdir@
 AWK=@AWK@
 DIR=@datadir@/et
 
diff --git a/lib/ext2fs/Makefile.in b/lib/ext2fs/Makefile.in
index 25dc450..5472a76 100644
--- a/lib/ext2fs/Makefile.in
+++ b/lib/ext2fs/Makefile.in
@@ -551,8 +551,8 @@
 	$(TESTENV) ./tst_digest_encode
 
 installdirs::
-	$(E) "	MKINSTALLDIRS $(libdir) $(includedir)/ext2fs"
-	$(Q) $(MKINSTALLDIRS) $(DESTDIR)$(libdir) \
+	$(E) "	MKDIR_P $(libdir) $(includedir)/ext2fs"
+	$(Q) $(MKDIR_P) $(DESTDIR)$(libdir) \
 		$(DESTDIR)$(includedir)/ext2fs $(DESTDIR)$(pkgconfigdir)
 
 install:: all $(HFILES) $(HFILES_IN) installdirs ext2fs.pc
diff --git a/lib/ext2fs/Makefile.pq b/lib/ext2fs/Makefile.pq
deleted file mode 100644
index 89082a7..0000000
--- a/lib/ext2fs/Makefile.pq
+++ /dev/null
@@ -1,50 +0,0 @@
-TOPSRC=..\..
-LIBNAME=EXT2.LIB
-OBJFILE=EXT2.LST
-
-OBJS= 	alloc.obj \
-	alloc_tables.obj \
-	badblocks.obj \
-	bb_compat.obj \
-	bb_inode.obj \
-	bitmaps.obj \
-	bitops.obj \
-	block.obj \
-	bmap.obj \
-	bmove.obj \
-	check_desc.obj \
-	closefs.obj \
-	cmp_bitmaps.obj \
-	dblist.obj \
-	dblist_dir.obj \
-	dirblock.obj \
-	dir_iterate.obj \
-	dupfs.obj \
-	expanddir.obj \
-	fileio.obj \
-	freefs.obj \
-	get_pathname.obj \
-	icount.obj \
-	initialize.obj \
-	inline.obj \
-	inline_data.obj \
-	inode.obj \
-	ismounted.obj \
-	link.obj \
-	lookup.obj \
-	mkdir.obj \
-	namei.obj \
-	native.obj \
-	newdir.obj \
-	openfs.obj \
-	read_bb.obj \
-	read_bb_file.obj \
-	rs_bitmap.obj \
-	rw_bitmaps.obj \
-	swapfs.obj \
-	unlink.obj \
-	valid_blk.obj \
-	version.obj
-
-!include $(TOPSRC)\powerquest\MCONFIG
-
diff --git a/lib/ext2fs/bitmaps.c b/lib/ext2fs/bitmaps.c
index 8402191..e25db2c 100644
--- a/lib/ext2fs/bitmaps.c
+++ b/lib/ext2fs/bitmaps.c
@@ -125,6 +125,7 @@
 {
 	__u64			start, end, real_end;
 	ext2fs_generic_bitmap	bmap;
+	ext2fs_generic_bitmap_64 bmap64;
 	errcode_t		retval;
 
 	EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
@@ -147,14 +148,15 @@
 					   end, real_end, descr, &bmap);
 	if (retval)
 		return retval;
-	bmap->cluster_bits = 0;
+	bmap64 = (ext2fs_generic_bitmap_64) bmap;
+	bmap64->cluster_bits = 0;
 	*ret = bmap;
 	return 0;
 }
 
 int ext2fs_get_bitmap_granularity(ext2fs_block_bitmap bitmap)
 {
-	ext2fs_generic_bitmap bmap = bitmap;
+	ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) bitmap;
 
 	if (!EXT2FS_IS_64_BITMAP(bmap))
 		return 0;
diff --git a/lib/ext2fs/blkmap64_ba.c b/lib/ext2fs/blkmap64_ba.c
index 3707a61..85cb38d 100644
--- a/lib/ext2fs/blkmap64_ba.c
+++ b/lib/ext2fs/blkmap64_ba.c
@@ -40,7 +40,7 @@
 
 typedef struct ext2fs_ba_private_struct *ext2fs_ba_private;
 
-static errcode_t ba_alloc_private_data (ext2fs_generic_bitmap bitmap)
+static errcode_t ba_alloc_private_data (ext2fs_generic_bitmap_64 bitmap)
 {
 	ext2fs_ba_private bp;
 	errcode_t	retval;
@@ -69,7 +69,7 @@
 }
 
 static errcode_t ba_new_bmap(ext2_filsys fs EXT2FS_ATTR((unused)),
-			     ext2fs_generic_bitmap bitmap)
+			     ext2fs_generic_bitmap_64 bitmap)
 {
 	ext2fs_ba_private bp;
 	errcode_t	retval;
@@ -86,7 +86,7 @@
 	return 0;
 }
 
-static void ba_free_bmap(ext2fs_generic_bitmap bitmap)
+static void ba_free_bmap(ext2fs_generic_bitmap_64 bitmap)
 {
 	ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private;
 
@@ -101,8 +101,8 @@
 	bp = 0;
 }
 
-static errcode_t ba_copy_bmap(ext2fs_generic_bitmap src,
-			      ext2fs_generic_bitmap dest)
+static errcode_t ba_copy_bmap(ext2fs_generic_bitmap_64 src,
+			      ext2fs_generic_bitmap_64 dest)
 {
 	ext2fs_ba_private src_bp = (ext2fs_ba_private) src->private;
 	ext2fs_ba_private dest_bp;
@@ -121,7 +121,7 @@
 	return 0;
 }
 
-static errcode_t ba_resize_bmap(ext2fs_generic_bitmap bmap,
+static errcode_t ba_resize_bmap(ext2fs_generic_bitmap_64 bmap,
 				__u64 new_end, __u64 new_real_end)
 {
 	ext2fs_ba_private bp = (ext2fs_ba_private) bmap->private;
@@ -162,7 +162,7 @@
 
 }
 
-static int ba_mark_bmap(ext2fs_generic_bitmap bitmap, __u64 arg)
+static int ba_mark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg)
 {
 	ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private;
 	blk64_t bitno = (blk64_t) arg;
@@ -170,7 +170,7 @@
 	return ext2fs_set_bit64(bitno - bitmap->start, bp->bitarray);
 }
 
-static int ba_unmark_bmap(ext2fs_generic_bitmap bitmap, __u64 arg)
+static int ba_unmark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg)
 {
 	ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private;
 	blk64_t bitno = (blk64_t) arg;
@@ -178,7 +178,7 @@
 	return ext2fs_clear_bit64(bitno - bitmap->start, bp->bitarray);
 }
 
-static int ba_test_bmap(ext2fs_generic_bitmap bitmap, __u64 arg)
+static int ba_test_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg)
 {
 	ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private;
 	blk64_t bitno = (blk64_t) arg;
@@ -186,7 +186,7 @@
 	return ext2fs_test_bit64(bitno - bitmap->start, bp->bitarray);
 }
 
-static void ba_mark_bmap_extent(ext2fs_generic_bitmap bitmap, __u64 arg,
+static void ba_mark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg,
 				unsigned int num)
 {
 	ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private;
@@ -197,7 +197,7 @@
 		ext2fs_fast_set_bit64(bitno + i - bitmap->start, bp->bitarray);
 }
 
-static void ba_unmark_bmap_extent(ext2fs_generic_bitmap bitmap, __u64 arg,
+static void ba_unmark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg,
 				  unsigned int num)
 {
 	ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private;
@@ -208,7 +208,7 @@
 		ext2fs_fast_clear_bit64(bitno + i - bitmap->start, bp->bitarray);
 }
 
-static int ba_test_clear_bmap_extent(ext2fs_generic_bitmap bitmap,
+static int ba_test_clear_bmap_extent(ext2fs_generic_bitmap_64 bitmap,
 				     __u64 start, unsigned int len)
 {
 	ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private;
@@ -282,7 +282,7 @@
 }
 
 
-static errcode_t ba_set_bmap_range(ext2fs_generic_bitmap bitmap,
+static errcode_t ba_set_bmap_range(ext2fs_generic_bitmap_64 bitmap,
 				     __u64 start, size_t num, void *in)
 {
 	ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private;
@@ -292,7 +292,7 @@
 	return 0;
 }
 
-static errcode_t ba_get_bmap_range(ext2fs_generic_bitmap bitmap,
+static errcode_t ba_get_bmap_range(ext2fs_generic_bitmap_64 bitmap,
 				     __u64 start, size_t num, void *out)
 {
 	ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private;
@@ -302,7 +302,7 @@
 	return 0;
 }
 
-static void ba_clear_bmap(ext2fs_generic_bitmap bitmap)
+static void ba_clear_bmap(ext2fs_generic_bitmap_64 bitmap)
 {
 	ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private;
 
@@ -311,20 +311,20 @@
 }
 
 #ifdef ENABLE_BMAP_STATS
-static void ba_print_stats(ext2fs_generic_bitmap bitmap)
+static void ba_print_stats(ext2fs_generic_bitmap_64 bitmap)
 {
 	fprintf(stderr, "%16llu Bytes used by bitarray\n",
 		((bitmap->real_end - bitmap->start) >> 3) + 1 +
 		sizeof(struct ext2fs_ba_private_struct));
 }
 #else
-static void ba_print_stats(ext2fs_generic_bitmap bitmap EXT2FS_ATTR((unused)))
+static void ba_print_stats(ext2fs_generic_bitmap_64 bitmap EXT2FS_ATTR((unused)))
 {
 }
 #endif
 
 /* Find the first zero bit between start and end, inclusive. */
-static errcode_t ba_find_first_zero(ext2fs_generic_bitmap bitmap,
+static errcode_t ba_find_first_zero(ext2fs_generic_bitmap_64 bitmap,
 				    __u64 start, __u64 end, __u64 *out)
 {
 	ext2fs_ba_private bp = (ext2fs_ba_private)bitmap->private;
@@ -398,7 +398,7 @@
 }
 
 /* Find the first one bit between start and end, inclusive. */
-static errcode_t ba_find_first_set(ext2fs_generic_bitmap bitmap,
+static errcode_t ba_find_first_set(ext2fs_generic_bitmap_64 bitmap,
 				    __u64 start, __u64 end, __u64 *out)
 {
 	ext2fs_ba_private bp = (ext2fs_ba_private)bitmap->private;
diff --git a/lib/ext2fs/blkmap64_rb.c b/lib/ext2fs/blkmap64_rb.c
index 4cbfb1e..1fd5527 100644
--- a/lib/ext2fs/blkmap64_rb.c
+++ b/lib/ext2fs/blkmap64_rb.c
@@ -177,7 +177,7 @@
 	ext2fs_free_mem(&ext);
 }
 
-static errcode_t rb_alloc_private_data (ext2fs_generic_bitmap bitmap)
+static errcode_t rb_alloc_private_data (ext2fs_generic_bitmap_64 bitmap)
 {
 	struct ext2fs_rb_private *bp;
 	errcode_t	retval;
@@ -201,7 +201,7 @@
 }
 
 static errcode_t rb_new_bmap(ext2_filsys fs EXT2FS_ATTR((unused)),
-			     ext2fs_generic_bitmap bitmap)
+			     ext2fs_generic_bitmap_64 bitmap)
 {
 	errcode_t	retval;
 
@@ -225,7 +225,7 @@
 	}
 }
 
-static void rb_free_bmap(ext2fs_generic_bitmap bitmap)
+static void rb_free_bmap(ext2fs_generic_bitmap_64 bitmap)
 {
 	struct ext2fs_rb_private *bp;
 
@@ -236,8 +236,8 @@
 	bp = 0;
 }
 
-static errcode_t rb_copy_bmap(ext2fs_generic_bitmap src,
-			      ext2fs_generic_bitmap dest)
+static errcode_t rb_copy_bmap(ext2fs_generic_bitmap_64 src,
+			      ext2fs_generic_bitmap_64 dest)
 {
 	struct ext2fs_rb_private *src_bp, *dest_bp;
 	struct bmap_rb_extent *src_ext, *dest_ext;
@@ -302,7 +302,7 @@
 	}
 }
 
-static errcode_t rb_resize_bmap(ext2fs_generic_bitmap bmap,
+static errcode_t rb_resize_bmap(ext2fs_generic_bitmap_64 bmap,
 				__u64 new_end, __u64 new_real_end)
 {
 	struct ext2fs_rb_private *bp;
@@ -575,7 +575,7 @@
 	return retval;
 }
 
-static int rb_mark_bmap(ext2fs_generic_bitmap bitmap, __u64 arg)
+static int rb_mark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg)
 {
 	struct ext2fs_rb_private *bp;
 	int retval;
@@ -588,7 +588,7 @@
 	return retval;
 }
 
-static int rb_unmark_bmap(ext2fs_generic_bitmap bitmap, __u64 arg)
+static int rb_unmark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg)
 {
 	struct ext2fs_rb_private *bp;
 	int retval;
@@ -603,7 +603,7 @@
 }
 
 inline
-static int rb_test_bmap(ext2fs_generic_bitmap bitmap, __u64 arg)
+static int rb_test_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg)
 {
 	struct ext2fs_rb_private *bp;
 
@@ -613,7 +613,7 @@
 	return rb_test_bit(bp, arg);
 }
 
-static void rb_mark_bmap_extent(ext2fs_generic_bitmap bitmap, __u64 arg,
+static void rb_mark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg,
 				unsigned int num)
 {
 	struct ext2fs_rb_private *bp;
@@ -625,7 +625,7 @@
 	check_tree(&bp->root, __func__);
 }
 
-static void rb_unmark_bmap_extent(ext2fs_generic_bitmap bitmap, __u64 arg,
+static void rb_unmark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg,
 				  unsigned int num)
 {
 	struct ext2fs_rb_private *bp;
@@ -637,7 +637,7 @@
 	check_tree(&bp->root, __func__);
 }
 
-static int rb_test_clear_bmap_extent(ext2fs_generic_bitmap bitmap,
+static int rb_test_clear_bmap_extent(ext2fs_generic_bitmap_64 bitmap,
 				     __u64 start, unsigned int len)
 {
 	struct rb_node *parent = NULL, **n;
@@ -693,7 +693,7 @@
 	return retval;
 }
 
-static errcode_t rb_set_bmap_range(ext2fs_generic_bitmap bitmap,
+static errcode_t rb_set_bmap_range(ext2fs_generic_bitmap_64 bitmap,
 				     __u64 start, size_t num, void *in)
 {
 	struct ext2fs_rb_private *bp;
@@ -739,7 +739,7 @@
 	return 0;
 }
 
-static errcode_t rb_get_bmap_range(ext2fs_generic_bitmap bitmap,
+static errcode_t rb_get_bmap_range(ext2fs_generic_bitmap_64 bitmap,
 				     __u64 start, size_t num, void *out)
 {
 
@@ -804,7 +804,7 @@
 	return 0;
 }
 
-static void rb_clear_bmap(ext2fs_generic_bitmap bitmap)
+static void rb_clear_bmap(ext2fs_generic_bitmap_64 bitmap)
 {
 	struct ext2fs_rb_private *bp;
 
@@ -817,7 +817,7 @@
 	check_tree(&bp->root, __func__);
 }
 
-static errcode_t rb_find_first_zero(ext2fs_generic_bitmap bitmap,
+static errcode_t rb_find_first_zero(ext2fs_generic_bitmap_64 bitmap,
 				   __u64 start, __u64 end, __u64 *out)
 {
 	struct rb_node *parent = NULL, **n;
@@ -853,7 +853,7 @@
 	return 0;
 }
 
-static errcode_t rb_find_first_set(ext2fs_generic_bitmap bitmap,
+static errcode_t rb_find_first_set(ext2fs_generic_bitmap_64 bitmap,
 				   __u64 start, __u64 end, __u64 *out)
 {
 	struct rb_node *parent = NULL, **n;
@@ -902,7 +902,7 @@
 }
 
 #ifdef ENABLE_BMAP_STATS
-static void rb_print_stats(ext2fs_generic_bitmap bitmap)
+static void rb_print_stats(ext2fs_generic_bitmap_64 bitmap)
 {
 	struct ext2fs_rb_private *bp;
 	struct rb_node *node = NULL;
@@ -963,7 +963,7 @@
 		eff);
 }
 #else
-static void rb_print_stats(ext2fs_generic_bitmap bitmap EXT2FS_ATTR((unused)))
+static void rb_print_stats(ext2fs_generic_bitmap_64 bitmap EXT2FS_ATTR((unused)))
 {
 }
 #endif
diff --git a/lib/ext2fs/bmap64.h b/lib/ext2fs/bmap64.h
index d8c7a3c..de33454 100644
--- a/lib/ext2fs/bmap64.h
+++ b/lib/ext2fs/bmap64.h
@@ -37,7 +37,7 @@
 };
 
 
-struct ext2fs_struct_generic_bitmap {
+struct ext2fs_struct_generic_bitmap_64 {
 	errcode_t		magic;
 	ext2_filsys 		fs;
 	struct ext2_bitmap_ops	*bitmap_ops;
@@ -53,6 +53,8 @@
 #endif
 };
 
+typedef struct ext2fs_struct_generic_bitmap_64 *ext2fs_generic_bitmap_64;
+
 #define EXT2FS_IS_32_BITMAP(bmap) \
 	(((bmap)->magic == EXT2_ET_MAGIC_GENERIC_BITMAP) || \
 	 ((bmap)->magic == EXT2_ET_MAGIC_BLOCK_BITMAP) || \
@@ -66,37 +68,37 @@
 struct ext2_bitmap_ops {
 	int	type;
 	/* Generic bmap operators */
-	errcode_t (*new_bmap)(ext2_filsys fs, ext2fs_generic_bitmap bmap);
-	void	(*free_bmap)(ext2fs_generic_bitmap bitmap);
-	errcode_t (*copy_bmap)(ext2fs_generic_bitmap src,
-			     ext2fs_generic_bitmap dest);
-	errcode_t (*resize_bmap)(ext2fs_generic_bitmap bitmap,
+	errcode_t (*new_bmap)(ext2_filsys fs, ext2fs_generic_bitmap_64 bmap);
+	void	(*free_bmap)(ext2fs_generic_bitmap_64 bitmap);
+	errcode_t (*copy_bmap)(ext2fs_generic_bitmap_64 src,
+			     ext2fs_generic_bitmap_64 dest);
+	errcode_t (*resize_bmap)(ext2fs_generic_bitmap_64 bitmap,
 			       __u64 new_end,
 			       __u64 new_real_end);
 	/* bit set/test operators */
-	int	(*mark_bmap)(ext2fs_generic_bitmap bitmap, __u64 arg);
-	int	(*unmark_bmap)(ext2fs_generic_bitmap bitmap, __u64 arg);
-	int	(*test_bmap)(ext2fs_generic_bitmap bitmap, __u64 arg);
-	void	(*mark_bmap_extent)(ext2fs_generic_bitmap bitmap, __u64 arg,
+	int	(*mark_bmap)(ext2fs_generic_bitmap_64 bitmap, __u64 arg);
+	int	(*unmark_bmap)(ext2fs_generic_bitmap_64 bitmap, __u64 arg);
+	int	(*test_bmap)(ext2fs_generic_bitmap_64 bitmap, __u64 arg);
+	void	(*mark_bmap_extent)(ext2fs_generic_bitmap_64 bitmap, __u64 arg,
 				    unsigned int num);
-	void	(*unmark_bmap_extent)(ext2fs_generic_bitmap bitmap, __u64 arg,
+	void	(*unmark_bmap_extent)(ext2fs_generic_bitmap_64 bitmap, __u64 arg,
 				      unsigned int num);
-	int	(*test_clear_bmap_extent)(ext2fs_generic_bitmap bitmap,
+	int	(*test_clear_bmap_extent)(ext2fs_generic_bitmap_64 bitmap,
 					  __u64 arg, unsigned int num);
-	errcode_t (*set_bmap_range)(ext2fs_generic_bitmap bitmap,
+	errcode_t (*set_bmap_range)(ext2fs_generic_bitmap_64 bitmap,
 				    __u64 start, size_t num, void *in);
-	errcode_t (*get_bmap_range)(ext2fs_generic_bitmap bitmap,
+	errcode_t (*get_bmap_range)(ext2fs_generic_bitmap_64 bitmap,
 				    __u64 start, size_t num, void *out);
-	void (*clear_bmap)(ext2fs_generic_bitmap bitmap);
-	void (*print_stats)(ext2fs_generic_bitmap);
+	void (*clear_bmap)(ext2fs_generic_bitmap_64 bitmap);
+	void (*print_stats)(ext2fs_generic_bitmap_64);
 
 	/* Find the first zero bit between start and end, inclusive.
 	 * May be NULL, in which case a generic function is used. */
-	errcode_t (*find_first_zero)(ext2fs_generic_bitmap bitmap,
+	errcode_t (*find_first_zero)(ext2fs_generic_bitmap_64 bitmap,
 				     __u64 start, __u64 end, __u64 *out);
 	/* Find the first set bit between start and end, inclusive.
 	 * May be NULL, in which case a generic function is used. */
-	errcode_t (*find_first_set)(ext2fs_generic_bitmap bitmap,
+	errcode_t (*find_first_set)(ext2fs_generic_bitmap_64 bitmap,
 				    __u64 start, __u64 end, __u64 *out);
 };
 
diff --git a/lib/ext2fs/ext2_err.c b/lib/ext2fs/ext2_err.c
index ff98793..d393701 100644
--- a/lib/ext2fs/ext2_err.c
+++ b/lib/ext2fs/ext2_err.c
@@ -8,7 +8,7 @@
 #define N_(a) a
 
 static const char * const text[] = {
-	N_(	"EXT2FS Library version v1.44.3-rc1-647-g446f28ab"),
+	N_(	"EXT2FS Library version v1.44.3-rc1-845-g7e9e2ca4"),
 	N_(	"Wrong magic number for ext2_filsys structure"),
 	N_(	"Wrong magic number for badblocks_list structure"),
 	N_(	"Wrong magic number for badblocks_iterate structure"),
diff --git a/lib/ext2fs/ext2_fs.h b/lib/ext2fs/ext2_fs.h
index 9fd59e3..13c2c20 100644
--- a/lib/ext2fs/ext2_fs.h
+++ b/lib/ext2fs/ext2_fs.h
@@ -18,6 +18,15 @@
 
 #include <ext2fs/ext2_types.h>		/* Changed from linux/types.h */
 
+#ifndef __GNUC_PREREQ
+#if defined(__GNUC__) && defined(__GNUC_MINOR__)
+#define __GNUC_PREREQ(maj, min) \
+	((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+#else
+#define __GNUC_PREREQ(maj, min) 0
+#endif
+#endif
+
 /*
  * The second extended filesystem constants/structures
  */
@@ -321,6 +330,7 @@
 #define EXT2_TOPDIR_FL			0x00020000 /* Top of directory hierarchies*/
 #define EXT4_HUGE_FILE_FL               0x00040000 /* Set to each huge file */
 #define EXT4_EXTENTS_FL 		0x00080000 /* Inode uses extents */
+#define EXT4_VERITY_FL			0x00100000 /* Verity protected inode */
 #define EXT4_EA_INODE_FL	        0x00200000 /* Inode used for large EA */
 /* EXT4_EOFBLOCKS_FL 0x00400000 was here */
 #define FS_NOCOW_FL			0x00800000 /* Do not cow file */
@@ -812,7 +822,7 @@
 #define EXT4_FEATURE_RO_COMPAT_READONLY		0x1000
 #define EXT4_FEATURE_RO_COMPAT_PROJECT		0x2000 /* Project quota */
 #define EXT4_FEATURE_RO_COMPAT_SHARED_BLOCKS	0x4000
-
+#define EXT4_FEATURE_RO_COMPAT_VERITY		0x8000
 
 #define EXT2_FEATURE_INCOMPAT_COMPRESSION	0x0001
 #define EXT2_FEATURE_INCOMPAT_FILETYPE		0x0002
@@ -905,6 +915,7 @@
 EXT4_FEATURE_RO_COMPAT_FUNCS(readonly,		4, READONLY)
 EXT4_FEATURE_RO_COMPAT_FUNCS(project,		4, PROJECT)
 EXT4_FEATURE_RO_COMPAT_FUNCS(shared_blocks,	4, SHARED_BLOCKS)
+EXT4_FEATURE_RO_COMPAT_FUNCS(verity,		4, VERITY)
 
 EXT4_FEATURE_INCOMPAT_FUNCS(compression,	2, COMPRESSION)
 EXT4_FEATURE_INCOMPAT_FUNCS(filetype,		2, FILETYPE)
@@ -930,7 +941,8 @@
 #define EXT2_FEATURE_RO_COMPAT_SUPP	(EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
 					 EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
 					 EXT4_FEATURE_RO_COMPAT_DIR_NLINK| \
-					 EXT2_FEATURE_RO_COMPAT_BTREE_DIR)
+					 EXT2_FEATURE_RO_COMPAT_BTREE_DIR| \
+					 EXT4_FEATURE_RO_COMPAT_VERITY)
 
 /*
  * Default values for user and/or group using reserved blocks
diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h
index 3d4afac..185be5d 100644
--- a/lib/ext2fs/ext2fs.h
+++ b/lib/ext2fs/ext2fs.h
@@ -111,9 +111,14 @@
 #define EXT2FS_UNMARK_ERROR 	1
 #define EXT2FS_TEST_ERROR	2
 
-typedef struct ext2fs_struct_generic_bitmap *ext2fs_generic_bitmap;
-typedef struct ext2fs_struct_generic_bitmap *ext2fs_inode_bitmap;
-typedef struct ext2fs_struct_generic_bitmap *ext2fs_block_bitmap;
+struct ext2fs_struct_generic_bitmap_base {
+	errcode_t		magic;
+	ext2_filsys 		fs;
+};
+
+typedef struct ext2fs_struct_generic_bitmap_base *ext2fs_generic_bitmap;
+typedef struct ext2fs_struct_generic_bitmap_base *ext2fs_inode_bitmap;
+typedef struct ext2fs_struct_generic_bitmap_base *ext2fs_block_bitmap;
 
 #define EXT2_FIRST_INODE(s)	EXT2_FIRST_INO(s)
 
@@ -625,7 +630,8 @@
 					 EXT4_FEATURE_RO_COMPAT_METADATA_CSUM|\
 					 EXT4_FEATURE_RO_COMPAT_READONLY |\
 					 EXT4_FEATURE_RO_COMPAT_PROJECT |\
-					 EXT4_FEATURE_RO_COMPAT_SHARED_BLOCKS)
+					 EXT4_FEATURE_RO_COMPAT_SHARED_BLOCKS |\
+					 EXT4_FEATURE_RO_COMPAT_VERITY)
 
 /*
  * These features are only allowed if EXT2_FLAG_SOFTSUPP_FEATURES is passed
diff --git a/lib/ext2fs/ext4_acl.h b/lib/ext2fs/ext4_acl.h
index 1f5245d..8d4d974 100644
--- a/lib/ext2fs/ext4_acl.h
+++ b/lib/ext2fs/ext4_acl.h
@@ -50,9 +50,13 @@
 
 typedef struct {
         __le32                  a_version;
+#if __GNUC_PREREQ (4, 8)
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wpedantic"
+#endif
         posix_acl_xattr_entry   a_entries[0];
+#if __GNUC_PREREQ (4, 8)
 #pragma GCC diagnostic pop
+#endif
 } posix_acl_xattr_header;
 
diff --git a/lib/ext2fs/fiemap.h b/lib/ext2fs/fiemap.h
index 5c851b2..0d1072a 100644
--- a/lib/ext2fs/fiemap.h
+++ b/lib/ext2fs/fiemap.h
@@ -31,10 +31,14 @@
 	__u32 fm_mapped_extents;/* number of extents that were mapped (out) */
 	__u32 fm_extent_count;  /* size of fm_extents array (in) */
 	__u32 fm_reserved;
+#if __GNUC_PREREQ (4, 8)
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wpedantic"
+#endif
 	struct fiemap_extent fm_extents[0]; /* array of mapped extents (out) */
+#if __GNUC_PREREQ (4, 8)
 #pragma GCC diagnostic pop
+#endif
 };
 
 #if defined(__linux__) && !defined(FS_IOC_FIEMAP)
diff --git a/lib/ext2fs/gen_bitmap.c b/lib/ext2fs/gen_bitmap.c
index d0061b8..181371c 100644
--- a/lib/ext2fs/gen_bitmap.c
+++ b/lib/ext2fs/gen_bitmap.c
@@ -28,7 +28,7 @@
 #include "ext2_fs.h"
 #include "ext2fsP.h"
 
-struct ext2fs_struct_generic_bitmap {
+struct ext2fs_struct_generic_bitmap_32 {
 	errcode_t	magic;
 	ext2_filsys 	fs;
 	__u32		start, end;
@@ -39,6 +39,8 @@
 	__u32		reserved[7];
 };
 
+typedef struct ext2fs_struct_generic_bitmap_32 *ext2fs_generic_bitmap_32;
+
 #define EXT2FS_IS_32_BITMAP(bmap) \
 	(((bmap)->magic == EXT2_ET_MAGIC_GENERIC_BITMAP) || \
 	 ((bmap)->magic == EXT2_ET_MAGIC_BLOCK_BITMAP) || \
@@ -53,9 +55,11 @@
  * Used by previously inlined function, so we have to export this and
  * not change the function signature
  */
-void ext2fs_warn_bitmap2(ext2fs_generic_bitmap bitmap,
+void ext2fs_warn_bitmap2(ext2fs_generic_bitmap gen_bitmap,
 			    int code, unsigned long arg)
 {
+	ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap;
+
 #ifndef OMIT_COM_ERR
 	if (bitmap->description)
 		com_err(0, bitmap->base_error_code+code,
@@ -79,11 +83,11 @@
 				     const char *descr, char *init_map,
 				     ext2fs_generic_bitmap *ret)
 {
-	ext2fs_generic_bitmap	bitmap;
+	ext2fs_generic_bitmap_32 bitmap;
 	errcode_t		retval;
 	size_t			size;
 
-	retval = ext2fs_get_mem(sizeof(struct ext2fs_struct_generic_bitmap),
+	retval = ext2fs_get_mem(sizeof(struct ext2fs_struct_generic_bitmap_32),
 				&bitmap);
 	if (retval)
 		return retval;
@@ -127,7 +131,7 @@
 		memcpy(bitmap->bitmap, init_map, size);
 	else
 		memset(bitmap->bitmap, 0, size);
-	*ret = bitmap;
+	*ret = (ext2fs_generic_bitmap) bitmap;
 	return 0;
 }
 
@@ -141,9 +145,11 @@
 					  start, end, real_end, descr, 0, ret);
 }
 
-errcode_t ext2fs_copy_generic_bitmap(ext2fs_generic_bitmap src,
+errcode_t ext2fs_copy_generic_bitmap(ext2fs_generic_bitmap gen_src,
 				     ext2fs_generic_bitmap *dest)
 {
+	ext2fs_generic_bitmap_32 src = (ext2fs_generic_bitmap_32) gen_src;
+
 	return (ext2fs_make_generic_bitmap(src->magic, src->fs,
 					   src->start, src->end,
 					   src->real_end,
@@ -151,9 +157,11 @@
 					   dest));
 }
 
-void ext2fs_free_generic_bitmap(ext2fs_inode_bitmap bitmap)
+void ext2fs_free_generic_bitmap(ext2fs_inode_bitmap gen_bitmap)
 {
-	if (check_magic(bitmap))
+	ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap;
+
+	if (check_magic(gen_bitmap))
 		return;
 
 	bitmap->magic = 0;
@@ -171,6 +179,8 @@
 int ext2fs_test_generic_bitmap(ext2fs_generic_bitmap bitmap,
 					blk_t bitno)
 {
+	ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap;
+
 	if (!EXT2FS_IS_32_BITMAP(bitmap)) {
 		if (EXT2FS_IS_64_BITMAP(bitmap)) {
 			ext2fs_warn_bitmap32(bitmap, __func__);
@@ -183,16 +193,18 @@
 		return 0;
 	}
 
-	if ((bitno < bitmap->start) || (bitno > bitmap->end)) {
+	if ((bitno < bitmap32->start) || (bitno > bitmap32->end)) {
 		ext2fs_warn_bitmap2(bitmap, EXT2FS_TEST_ERROR, bitno);
 		return 0;
 	}
-	return ext2fs_test_bit(bitno - bitmap->start, bitmap->bitmap);
+	return ext2fs_test_bit(bitno - bitmap32->start, bitmap32->bitmap);
 }
 
 int ext2fs_mark_generic_bitmap(ext2fs_generic_bitmap bitmap,
 					 __u32 bitno)
 {
+	ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap;
+
 	if (!EXT2FS_IS_32_BITMAP(bitmap)) {
 		if (EXT2FS_IS_64_BITMAP(bitmap)) {
 			ext2fs_warn_bitmap32(bitmap, __func__);
@@ -205,16 +217,18 @@
 		return 0;
 	}
 
-	if ((bitno < bitmap->start) || (bitno > bitmap->end)) {
+	if ((bitno < bitmap32->start) || (bitno > bitmap32->end)) {
 		ext2fs_warn_bitmap2(bitmap, EXT2FS_MARK_ERROR, bitno);
 		return 0;
 	}
-	return ext2fs_set_bit(bitno - bitmap->start, bitmap->bitmap);
+	return ext2fs_set_bit(bitno - bitmap32->start, bitmap32->bitmap);
 }
 
 int ext2fs_unmark_generic_bitmap(ext2fs_generic_bitmap bitmap,
 					   blk_t bitno)
 {
+	ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap;
+
 	if (!EXT2FS_IS_32_BITMAP(bitmap)) {
 		if (EXT2FS_IS_64_BITMAP(bitmap)) {
 			ext2fs_warn_bitmap32(bitmap, __func__);
@@ -227,15 +241,17 @@
 		return 0;
 	}
 
-	if ((bitno < bitmap->start) || (bitno > bitmap->end)) {
+	if ((bitno < bitmap32->start) || (bitno > bitmap32->end)) {
 		ext2fs_warn_bitmap2(bitmap, EXT2FS_UNMARK_ERROR, bitno);
 		return 0;
 	}
-	return ext2fs_clear_bit(bitno - bitmap->start, bitmap->bitmap);
+	return ext2fs_clear_bit(bitno - bitmap32->start, bitmap32->bitmap);
 }
 
 __u32 ext2fs_get_generic_bitmap_start(ext2fs_generic_bitmap bitmap)
 {
+	ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap;
+
 	if (!EXT2FS_IS_32_BITMAP(bitmap)) {
 		if (EXT2FS_IS_64_BITMAP(bitmap)) {
 			ext2fs_warn_bitmap32(bitmap, __func__);
@@ -248,11 +264,13 @@
 		return 0;
 	}
 
-	return bitmap->start;
+	return bitmap32->start;
 }
 
 __u32 ext2fs_get_generic_bitmap_end(ext2fs_generic_bitmap bitmap)
 {
+	ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap;
+
 	if (!EXT2FS_IS_32_BITMAP(bitmap)) {
 		if (EXT2FS_IS_64_BITMAP(bitmap)) {
 			ext2fs_warn_bitmap32(bitmap, __func__);
@@ -264,11 +282,13 @@
 #endif
 		return 0;
 	}
-	return bitmap->end;
+	return bitmap32->end;
 }
 
 void ext2fs_clear_generic_bitmap(ext2fs_generic_bitmap bitmap)
 {
+	ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap;
+
 	if (!EXT2FS_IS_32_BITMAP(bitmap)) {
 		if (EXT2FS_IS_64_BITMAP(bitmap)) {
 			ext2fs_warn_bitmap32(bitmap, __func__);
@@ -282,14 +302,16 @@
 		return;
 	}
 
-	memset(bitmap->bitmap, 0,
-	       (size_t) (((bitmap->real_end - bitmap->start) / 8) + 1));
+	memset(bitmap32->bitmap, 0,
+	       (size_t) (((bitmap32->real_end - bitmap32->start) / 8) + 1));
 }
 
-errcode_t ext2fs_fudge_generic_bitmap_end(ext2fs_inode_bitmap bitmap,
+errcode_t ext2fs_fudge_generic_bitmap_end(ext2fs_inode_bitmap gen_bitmap,
 					  errcode_t magic, errcode_t neq,
 					  ext2_ino_t end, ext2_ino_t *oend)
 {
+	ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap;
+
 	EXT2_CHECK_MAGIC(bitmap, magic);
 
 	if (end > bitmap->real_end)
@@ -302,8 +324,9 @@
 
 errcode_t ext2fs_resize_generic_bitmap(errcode_t magic,
 				       __u32 new_end, __u32 new_real_end,
-				       ext2fs_generic_bitmap bmap)
+				       ext2fs_generic_bitmap gen_bmap)
 {
+	ext2fs_generic_bitmap_32 bmap = (ext2fs_generic_bitmap_32) gen_bmap;
 	errcode_t	retval;
 	size_t		size, new_size;
 	__u32		bitno;
@@ -344,9 +367,11 @@
 }
 
 errcode_t ext2fs_compare_generic_bitmap(errcode_t magic, errcode_t neq,
-					ext2fs_generic_bitmap bm1,
-					ext2fs_generic_bitmap bm2)
+					ext2fs_generic_bitmap gen_bm1,
+					ext2fs_generic_bitmap gen_bm2)
 {
+	ext2fs_generic_bitmap_32 bm1 = (ext2fs_generic_bitmap_32) gen_bm1;
+	ext2fs_generic_bitmap_32 bm2 = (ext2fs_generic_bitmap_32) gen_bm2;
 	blk_t	i;
 
 	if (!bm1 || bm1->magic != magic)
@@ -361,15 +386,16 @@
 		return neq;
 
 	for (i = bm1->end - ((bm1->end - bm1->start) % 8); i <= bm1->end; i++)
-		if (ext2fs_fast_test_block_bitmap(bm1, i) !=
-		    ext2fs_fast_test_block_bitmap(bm2, i))
+		if (ext2fs_fast_test_block_bitmap(gen_bm1, i) !=
+		    ext2fs_fast_test_block_bitmap(gen_bm2, i))
 			return neq;
 
 	return 0;
 }
 
-void ext2fs_set_generic_bitmap_padding(ext2fs_generic_bitmap map)
+void ext2fs_set_generic_bitmap_padding(ext2fs_generic_bitmap gen_map)
 {
+	ext2fs_generic_bitmap_32 map = (ext2fs_generic_bitmap_32) gen_map;
 	__u32	i, j;
 
 	/* Protect loop from wrap-around if map->real_end is maxed */
@@ -379,11 +405,13 @@
 		ext2fs_set_bit(j, map->bitmap);
 }
 
-errcode_t ext2fs_get_generic_bitmap_range(ext2fs_generic_bitmap bmap,
+errcode_t ext2fs_get_generic_bitmap_range(ext2fs_generic_bitmap gen_bmap,
 					  errcode_t magic,
 					  __u32 start, __u32 num,
 					  void *out)
 {
+	ext2fs_generic_bitmap_32 bmap = (ext2fs_generic_bitmap_32) gen_bmap;
+
 	if (!bmap || (bmap->magic != magic))
 		return magic;
 
@@ -394,11 +422,13 @@
 	return 0;
 }
 
-errcode_t ext2fs_set_generic_bitmap_range(ext2fs_generic_bitmap bmap,
+errcode_t ext2fs_set_generic_bitmap_range(ext2fs_generic_bitmap gen_bmap,
 					  errcode_t magic,
 					  __u32 start, __u32 num,
 					  void *in)
 {
+	ext2fs_generic_bitmap_32 bmap = (ext2fs_generic_bitmap_32) gen_bmap;
+
 	if (!bmap || (bmap->magic != magic))
 		return magic;
 
@@ -432,10 +462,11 @@
 /*
  * Return true if all of the bits in a specified range are clear
  */
-static int ext2fs_test_clear_generic_bitmap_range(ext2fs_generic_bitmap bitmap,
+static int ext2fs_test_clear_generic_bitmap_range(ext2fs_generic_bitmap gen_bitmap,
 						  unsigned int start,
 						  unsigned int len)
 {
+	ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap;
 	size_t start_byte, len_byte = len >> 3;
 	unsigned int start_bit, len_bit = len % 8;
 	int first_bit = 0;
@@ -504,14 +535,15 @@
 	return ext2fs_mem_is_zero(ADDR + start_byte, len_byte);
 }
 
-errcode_t ext2fs_find_first_zero_generic_bitmap(ext2fs_generic_bitmap bitmap,
+errcode_t ext2fs_find_first_zero_generic_bitmap(ext2fs_generic_bitmap gen_bitmap,
 						__u32 start, __u32 end,
 						__u32 *out)
 {
+	ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap;
 	blk_t b;
 
 	if (start < bitmap->start || end > bitmap->end || start > end) {
-		ext2fs_warn_bitmap2(bitmap, EXT2FS_TEST_ERROR, start);
+		ext2fs_warn_bitmap2(gen_bitmap, EXT2FS_TEST_ERROR, start);
 		return EINVAL;
 	}
 
@@ -527,14 +559,15 @@
 	return ENOENT;
 }
 
-errcode_t ext2fs_find_first_set_generic_bitmap(ext2fs_generic_bitmap bitmap,
+errcode_t ext2fs_find_first_set_generic_bitmap(ext2fs_generic_bitmap gen_bitmap,
 					       __u32 start, __u32 end,
 					       __u32 *out)
 {
+	ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap;
 	blk_t b;
 
 	if (start < bitmap->start || end > bitmap->end || start > end) {
-		ext2fs_warn_bitmap2(bitmap, EXT2FS_TEST_ERROR, start);
+		ext2fs_warn_bitmap2(gen_bitmap, EXT2FS_TEST_ERROR, start);
 		return EINVAL;
 	}
 
@@ -550,9 +583,11 @@
 	return ENOENT;
 }
 
-int ext2fs_test_block_bitmap_range(ext2fs_block_bitmap bitmap,
+int ext2fs_test_block_bitmap_range(ext2fs_block_bitmap gen_bitmap,
 				   blk_t block, int num)
 {
+	ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap;
+
 	EXT2_CHECK_MAGIC(bitmap, EXT2_ET_MAGIC_BLOCK_BITMAP);
 	if ((block < bitmap->start) || (block+num-1 > bitmap->real_end)) {
 		ext2fs_warn_bitmap(EXT2_ET_BAD_BLOCK_TEST,
@@ -563,9 +598,11 @@
 						      bitmap, block, num);
 }
 
-int ext2fs_test_inode_bitmap_range(ext2fs_inode_bitmap bitmap,
+int ext2fs_test_inode_bitmap_range(ext2fs_inode_bitmap gen_bitmap,
 				   ext2_ino_t inode, int num)
 {
+	ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap;
+
 	EXT2_CHECK_MAGIC(bitmap, EXT2_ET_MAGIC_INODE_BITMAP);
 	if ((inode < bitmap->start) || (inode+num-1 > bitmap->real_end)) {
 		ext2fs_warn_bitmap(EXT2_ET_BAD_INODE_TEST,
@@ -576,9 +613,10 @@
 						      bitmap, inode, num);
 }
 
-void ext2fs_mark_block_bitmap_range(ext2fs_block_bitmap bitmap,
+void ext2fs_mark_block_bitmap_range(ext2fs_block_bitmap gen_bitmap,
 				    blk_t block, int num)
 {
+	ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap;
 	int	i;
 
 	if ((block < bitmap->start) || (block+num-1 > bitmap->end)) {
@@ -590,9 +628,10 @@
 		ext2fs_fast_set_bit(block + i - bitmap->start, bitmap->bitmap);
 }
 
-void ext2fs_unmark_block_bitmap_range(ext2fs_block_bitmap bitmap,
-					       blk_t block, int num)
+void ext2fs_unmark_block_bitmap_range(ext2fs_block_bitmap gen_bitmap,
+				      blk_t block, int num)
 {
+	ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap;
 	int	i;
 
 	if ((block < bitmap->start) || (block+num-1 > bitmap->end)) {
diff --git a/lib/ext2fs/gen_bitmap64.c b/lib/ext2fs/gen_bitmap64.c
index 3fc7349..d6f3ac1 100644
--- a/lib/ext2fs/gen_bitmap64.c
+++ b/lib/ext2fs/gen_bitmap64.c
@@ -68,7 +68,7 @@
  * e2fsck can request an encoding which is optimized for that.
  */
 
-static void warn_bitmap(ext2fs_generic_bitmap bitmap,
+static void warn_bitmap(ext2fs_generic_bitmap_64 bitmap,
 			int code, __u64 arg)
 {
 #ifndef OMIT_COM_ERR
@@ -93,7 +93,7 @@
 				    const char *descr,
 				    ext2fs_generic_bitmap *ret)
 {
-	ext2fs_generic_bitmap	bitmap;
+	ext2fs_generic_bitmap_64 bitmap;
 	struct ext2_bitmap_ops	*ops;
 	ext2_ino_t num_dirs;
 	errcode_t retval;
@@ -119,7 +119,7 @@
 		return EINVAL;
 	}
 
-	retval = ext2fs_get_memzero(sizeof(struct ext2fs_struct_generic_bitmap),
+	retval = ext2fs_get_memzero(sizeof(struct ext2fs_struct_generic_bitmap_64),
 				    &bitmap);
 	if (retval)
 		return retval;
@@ -170,12 +170,12 @@
 		return retval;
 	}
 
-	*ret = bitmap;
+	*ret = (ext2fs_generic_bitmap) bitmap;
 	return 0;
 }
 
 #ifdef ENABLE_BMAP_STATS
-static void ext2fs_print_bmap_statistics(ext2fs_generic_bitmap bitmap)
+static void ext2fs_print_bmap_statistics(ext2fs_generic_bitmap_64 bitmap)
 {
 	struct ext2_bmap_statistics *stats = &bitmap->stats;
 #ifdef ENABLE_BMAP_STATS_OPS
@@ -241,13 +241,15 @@
 }
 #endif
 
-void ext2fs_free_generic_bmap(ext2fs_generic_bitmap bmap)
+void ext2fs_free_generic_bmap(ext2fs_generic_bitmap gen_bmap)
 {
+	ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap;
+
 	if (!bmap)
 		return;
 
 	if (EXT2FS_IS_32_BITMAP(bmap)) {
-		ext2fs_free_generic_bitmap(bmap);
+		ext2fs_free_generic_bitmap(gen_bmap);
 		return;
 	}
 
@@ -271,24 +273,25 @@
 	ext2fs_free_mem(&bmap);
 }
 
-errcode_t ext2fs_copy_generic_bmap(ext2fs_generic_bitmap src,
+errcode_t ext2fs_copy_generic_bmap(ext2fs_generic_bitmap gen_src,
 				   ext2fs_generic_bitmap *dest)
 {
+	ext2fs_generic_bitmap_64 src = (ext2fs_generic_bitmap_64) gen_src;
 	char *descr, *new_descr;
-	ext2fs_generic_bitmap	new_bmap;
+	ext2fs_generic_bitmap_64 new_bmap;
 	errcode_t retval;
 
 	if (!src)
 		return EINVAL;
 
 	if (EXT2FS_IS_32_BITMAP(src))
-		return ext2fs_copy_generic_bitmap(src, dest);
+		return ext2fs_copy_generic_bitmap(gen_src, dest);
 
 	if (!EXT2FS_IS_64_BITMAP(src))
 		return EINVAL;
 
 	/* Allocate a new bitmap struct */
-	retval = ext2fs_get_memzero(sizeof(struct ext2fs_struct_generic_bitmap),
+	retval = ext2fs_get_memzero(sizeof(struct ext2fs_struct_generic_bitmap_64),
 				    &new_bmap);
 	if (retval)
 		return retval;
@@ -336,21 +339,23 @@
 		return retval;
 	}
 
-	*dest = new_bmap;
+	*dest = (ext2fs_generic_bitmap) new_bmap;
 
 	return 0;
 }
 
-errcode_t ext2fs_resize_generic_bmap(ext2fs_generic_bitmap bmap,
+errcode_t ext2fs_resize_generic_bmap(ext2fs_generic_bitmap gen_bmap,
 				     __u64 new_end,
 				     __u64 new_real_end)
 {
+	ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap;
+
 	if (!bmap)
 		return EINVAL;
 
 	if (EXT2FS_IS_32_BITMAP(bmap))
-		return ext2fs_resize_generic_bitmap(bmap->magic, new_end,
-						    new_real_end, bmap);
+		return ext2fs_resize_generic_bitmap(gen_bmap->magic, new_end,
+						    new_real_end, gen_bmap);
 
 	if (!EXT2FS_IS_64_BITMAP(bmap))
 		return EINVAL;
@@ -360,10 +365,12 @@
 	return bmap->bitmap_ops->resize_bmap(bmap, new_end, new_real_end);
 }
 
-errcode_t ext2fs_fudge_generic_bmap_end(ext2fs_generic_bitmap bitmap,
+errcode_t ext2fs_fudge_generic_bmap_end(ext2fs_generic_bitmap gen_bitmap,
 					errcode_t neq,
 					__u64 end, __u64 *oend)
 {
+	ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap;
+
 	if (!bitmap)
 		return EINVAL;
 
@@ -371,7 +378,8 @@
 		ext2_ino_t tmp_oend;
 		int retval;
 
-		retval = ext2fs_fudge_generic_bitmap_end(bitmap, bitmap->magic,
+		retval = ext2fs_fudge_generic_bitmap_end(gen_bitmap,
+							 bitmap->magic,
 							 neq, end, &tmp_oend);
 		if (oend)
 			*oend = tmp_oend;
@@ -389,13 +397,15 @@
 	return 0;
 }
 
-__u64 ext2fs_get_generic_bmap_start(ext2fs_generic_bitmap bitmap)
+__u64 ext2fs_get_generic_bmap_start(ext2fs_generic_bitmap gen_bitmap)
 {
+	ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap;
+
 	if (!bitmap)
 		return EINVAL;
 
 	if (EXT2FS_IS_32_BITMAP(bitmap))
-		return ext2fs_get_generic_bitmap_start(bitmap);
+		return ext2fs_get_generic_bitmap_start(gen_bitmap);
 
 	if (!EXT2FS_IS_64_BITMAP(bitmap))
 		return EINVAL;
@@ -403,13 +413,15 @@
 	return bitmap->start;
 }
 
-__u64 ext2fs_get_generic_bmap_end(ext2fs_generic_bitmap bitmap)
+__u64 ext2fs_get_generic_bmap_end(ext2fs_generic_bitmap gen_bitmap)
 {
+	ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap;
+
 	if (!bitmap)
 		return EINVAL;
 
 	if (EXT2FS_IS_32_BITMAP(bitmap))
-		return ext2fs_get_generic_bitmap_end(bitmap);
+		return ext2fs_get_generic_bitmap_end(gen_bitmap);
 
 	if (!EXT2FS_IS_64_BITMAP(bitmap))
 		return EINVAL;
@@ -417,27 +429,31 @@
 	return bitmap->end;
 }
 
-void ext2fs_clear_generic_bmap(ext2fs_generic_bitmap bitmap)
+void ext2fs_clear_generic_bmap(ext2fs_generic_bitmap gen_bitmap)
 {
+	ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap;
+
 	if (EXT2FS_IS_32_BITMAP(bitmap))
-		ext2fs_clear_generic_bitmap(bitmap);
+		ext2fs_clear_generic_bitmap(gen_bitmap);
 	else
-		bitmap->bitmap_ops->clear_bmap (bitmap);
+		bitmap->bitmap_ops->clear_bmap(bitmap);
 }
 
-int ext2fs_mark_generic_bmap(ext2fs_generic_bitmap bitmap,
+int ext2fs_mark_generic_bmap(ext2fs_generic_bitmap gen_bitmap,
 			     __u64 arg)
 {
+	ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap;
+
 	if (!bitmap)
 		return 0;
 
 	if (EXT2FS_IS_32_BITMAP(bitmap)) {
 		if (arg & ~0xffffffffULL) {
-			ext2fs_warn_bitmap2(bitmap,
+			ext2fs_warn_bitmap2(gen_bitmap,
 					    EXT2FS_MARK_ERROR, 0xffffffff);
 			return 0;
 		}
-		return ext2fs_mark_generic_bitmap(bitmap, arg);
+		return ext2fs_mark_generic_bitmap(gen_bitmap, arg);
 	}
 
 	if (!EXT2FS_IS_64_BITMAP(bitmap))
@@ -462,19 +478,21 @@
 	return bitmap->bitmap_ops->mark_bmap(bitmap, arg);
 }
 
-int ext2fs_unmark_generic_bmap(ext2fs_generic_bitmap bitmap,
+int ext2fs_unmark_generic_bmap(ext2fs_generic_bitmap gen_bitmap,
 			       __u64 arg)
 {
+	ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap;
+
 	if (!bitmap)
 		return 0;
 
 	if (EXT2FS_IS_32_BITMAP(bitmap)) {
 		if (arg & ~0xffffffffULL) {
-			ext2fs_warn_bitmap2(bitmap, EXT2FS_UNMARK_ERROR,
+			ext2fs_warn_bitmap2(gen_bitmap, EXT2FS_UNMARK_ERROR,
 					    0xffffffff);
 			return 0;
 		}
-		return ext2fs_unmark_generic_bitmap(bitmap, arg);
+		return ext2fs_unmark_generic_bitmap(gen_bitmap, arg);
 	}
 
 	if (!EXT2FS_IS_64_BITMAP(bitmap))
@@ -492,19 +510,20 @@
 	return bitmap->bitmap_ops->unmark_bmap(bitmap, arg);
 }
 
-int ext2fs_test_generic_bmap(ext2fs_generic_bitmap bitmap,
+int ext2fs_test_generic_bmap(ext2fs_generic_bitmap gen_bitmap,
 			     __u64 arg)
 {
+	ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap;
 	if (!bitmap)
 		return 0;
 
 	if (EXT2FS_IS_32_BITMAP(bitmap)) {
 		if (arg & ~0xffffffffULL) {
-			ext2fs_warn_bitmap2(bitmap, EXT2FS_TEST_ERROR,
+			ext2fs_warn_bitmap2(gen_bitmap, EXT2FS_TEST_ERROR,
 					    0xffffffff);
 			return 0;
 		}
-		return ext2fs_test_generic_bitmap(bitmap, arg);
+		return ext2fs_test_generic_bitmap(gen_bitmap, arg);
 	}
 
 	if (!EXT2FS_IS_64_BITMAP(bitmap))
@@ -529,20 +548,22 @@
 	return bitmap->bitmap_ops->test_bmap(bitmap, arg);
 }
 
-errcode_t ext2fs_set_generic_bmap_range(ext2fs_generic_bitmap bmap,
+errcode_t ext2fs_set_generic_bmap_range(ext2fs_generic_bitmap gen_bmap,
 					__u64 start, unsigned int num,
 					void *in)
 {
+	ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap;
+
 	if (!bmap)
 		return EINVAL;
 
 	if (EXT2FS_IS_32_BITMAP(bmap)) {
 		if ((start+num-1) & ~0xffffffffULL) {
-			ext2fs_warn_bitmap2(bmap, EXT2FS_UNMARK_ERROR,
+			ext2fs_warn_bitmap2(gen_bmap, EXT2FS_UNMARK_ERROR,
 					    0xffffffff);
 			return EINVAL;
 		}
-		return ext2fs_set_generic_bitmap_range(bmap, bmap->magic,
+		return ext2fs_set_generic_bitmap_range(gen_bmap, bmap->magic,
 						       start, num, in);
 	}
 
@@ -554,20 +575,22 @@
 	return bmap->bitmap_ops->set_bmap_range(bmap, start, num, in);
 }
 
-errcode_t ext2fs_get_generic_bmap_range(ext2fs_generic_bitmap bmap,
+errcode_t ext2fs_get_generic_bmap_range(ext2fs_generic_bitmap gen_bmap,
 					__u64 start, unsigned int num,
 					void *out)
 {
+	ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap;
+
 	if (!bmap)
 		return EINVAL;
 
 	if (EXT2FS_IS_32_BITMAP(bmap)) {
 		if ((start+num-1) & ~0xffffffffULL) {
-			ext2fs_warn_bitmap2(bmap,
+			ext2fs_warn_bitmap2(gen_bmap,
 					    EXT2FS_UNMARK_ERROR, 0xffffffff);
 			return EINVAL;
 		}
-		return ext2fs_get_generic_bitmap_range(bmap, bmap->magic,
+		return ext2fs_get_generic_bitmap_range(gen_bmap, bmap->magic,
 						       start, num, out);
 	}
 
@@ -580,9 +603,11 @@
 }
 
 errcode_t ext2fs_compare_generic_bmap(errcode_t neq,
-				      ext2fs_generic_bitmap bm1,
-				      ext2fs_generic_bitmap bm2)
+				      ext2fs_generic_bitmap gen_bm1,
+				      ext2fs_generic_bitmap gen_bm2)
 {
+	ext2fs_generic_bitmap_64 bm1 = (ext2fs_generic_bitmap_64) gen_bm1;
+	ext2fs_generic_bitmap_64 bm2 = (ext2fs_generic_bitmap_64) gen_bm2;
 	blk64_t	i;
 
 	if (!bm1 || !bm2)
@@ -592,7 +617,8 @@
 
 	/* Now we know both bitmaps have the same magic */
 	if (EXT2FS_IS_32_BITMAP(bm1))
-		return ext2fs_compare_generic_bitmap(bm1->magic, neq, bm1, bm2);
+		return ext2fs_compare_generic_bitmap(bm1->magic, neq,
+						     gen_bm1, gen_bm2);
 
 	if (!EXT2FS_IS_64_BITMAP(bm1))
 		return EINVAL;
@@ -602,19 +628,20 @@
 		return neq;
 
 	for (i = bm1->end - ((bm1->end - bm1->start) % 8); i <= bm1->end; i++)
-		if (ext2fs_test_generic_bmap(bm1, i) !=
-		    ext2fs_test_generic_bmap(bm2, i))
+		if (ext2fs_test_generic_bmap(gen_bm1, i) !=
+		    ext2fs_test_generic_bmap(gen_bm2, i))
 			return neq;
 
 	return 0;
 }
 
-void ext2fs_set_generic_bmap_padding(ext2fs_generic_bitmap bmap)
+void ext2fs_set_generic_bmap_padding(ext2fs_generic_bitmap gen_bmap)
 {
+	ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap;
 	__u64	start, num;
 
 	if (EXT2FS_IS_32_BITMAP(bmap)) {
-		ext2fs_set_generic_bitmap_padding(bmap);
+		ext2fs_set_generic_bitmap_padding(gen_bmap);
 		return;
 	}
 
@@ -624,9 +651,10 @@
 	/* XXX ought to warn on error */
 }
 
-int ext2fs_test_block_bitmap_range2(ext2fs_block_bitmap bmap,
+int ext2fs_test_block_bitmap_range2(ext2fs_block_bitmap gen_bmap,
 				    blk64_t block, unsigned int num)
 {
+	ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap;
 	__u64	end = block + num;
 
 	if (!bmap)
@@ -666,9 +694,10 @@
 	return bmap->bitmap_ops->test_clear_bmap_extent(bmap, block, num);
 }
 
-void ext2fs_mark_block_bitmap_range2(ext2fs_block_bitmap bmap,
+void ext2fs_mark_block_bitmap_range2(ext2fs_block_bitmap gen_bmap,
 				     blk64_t block, unsigned int num)
 {
+	ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap;
 	__u64	end = block + num;
 
 	if (!bmap)
@@ -704,9 +733,10 @@
 	bmap->bitmap_ops->mark_bmap_extent(bmap, block, num);
 }
 
-void ext2fs_unmark_block_bitmap_range2(ext2fs_block_bitmap bmap,
+void ext2fs_unmark_block_bitmap_range2(ext2fs_block_bitmap gen_bmap,
 				       blk64_t block, unsigned int num)
 {
+	ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap;
 	__u64	end = block + num;
 
 	if (!bmap)
@@ -742,8 +772,10 @@
 	bmap->bitmap_ops->unmark_bmap_extent(bmap, block, num);
 }
 
-void ext2fs_warn_bitmap32(ext2fs_generic_bitmap bitmap, const char *func)
+void ext2fs_warn_bitmap32(ext2fs_generic_bitmap gen_bitmap, const char *func)
 {
+	ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap;
+
 #ifndef OMIT_COM_ERR
 	if (bitmap && bitmap->description)
 		com_err(0, EXT2_ET_MAGIC_GENERIC_BITMAP,
@@ -758,21 +790,22 @@
 errcode_t ext2fs_convert_subcluster_bitmap(ext2_filsys fs,
 					   ext2fs_block_bitmap *bitmap)
 {
-	ext2fs_block_bitmap	cmap, bmap;
+	ext2fs_generic_bitmap_64 bmap, cmap;
+	ext2fs_block_bitmap	gen_bmap = *bitmap, gen_cmap;
 	errcode_t		retval;
 	blk64_t			i, b_end, c_end;
 	int			n, ratio;
 
-	bmap = *bitmap;
-
-	if (fs->cluster_ratio_bits == ext2fs_get_bitmap_granularity(bmap))
+	bmap = (ext2fs_generic_bitmap_64) gen_bmap;
+	if (fs->cluster_ratio_bits == ext2fs_get_bitmap_granularity(gen_bmap))
 		return 0;	/* Nothing to do */
 
 	retval = ext2fs_allocate_block_bitmap(fs, "converted cluster bitmap",
-					      &cmap);
+					      &gen_cmap);
 	if (retval)
 		return retval;
 
+	cmap = (ext2fs_generic_bitmap_64) gen_cmap;
 	i = bmap->start;
 	b_end = bmap->end;
 	bmap->end = bmap->real_end;
@@ -781,8 +814,8 @@
 	n = 0;
 	ratio = 1 << fs->cluster_ratio_bits;
 	while (i < bmap->real_end) {
-		if (ext2fs_test_block_bitmap2(bmap, i)) {
-			ext2fs_mark_block_bitmap2(cmap, i);
+		if (ext2fs_test_block_bitmap2(gen_bmap, i)) {
+			ext2fs_mark_block_bitmap2(gen_cmap, i);
 			i += ratio - n;
 			n = 0;
 			continue;
@@ -793,14 +826,15 @@
 	}
 	bmap->end = b_end;
 	cmap->end = c_end;
-	ext2fs_free_block_bitmap(bmap);
-	*bitmap = cmap;
+	ext2fs_free_block_bitmap(gen_bmap);
+	*bitmap = (ext2fs_block_bitmap) cmap;
 	return 0;
 }
 
 errcode_t ext2fs_find_first_zero_generic_bmap(ext2fs_generic_bitmap bitmap,
 					      __u64 start, __u64 end, __u64 *out)
 {
+	ext2fs_generic_bitmap_64 bmap64 = (ext2fs_generic_bitmap_64) bitmap;
 	__u64 cstart, cend, cout;
 	errcode_t retval;
 
@@ -826,27 +860,27 @@
 	if (!EXT2FS_IS_64_BITMAP(bitmap))
 		return EINVAL;
 
-	cstart = start >> bitmap->cluster_bits;
-	cend = end >> bitmap->cluster_bits;
+	cstart = start >> bmap64->cluster_bits;
+	cend = end >> bmap64->cluster_bits;
 
-	if (cstart < bitmap->start || cend > bitmap->end || start > end) {
-		warn_bitmap(bitmap, EXT2FS_TEST_ERROR, start);
+	if (cstart < bmap64->start || cend > bmap64->end || start > end) {
+		warn_bitmap(bmap64, EXT2FS_TEST_ERROR, start);
 		return EINVAL;
 	}
 
-	if (bitmap->bitmap_ops->find_first_zero) {
-		retval = bitmap->bitmap_ops->find_first_zero(bitmap, cstart,
+	if (bmap64->bitmap_ops->find_first_zero) {
+		retval = bmap64->bitmap_ops->find_first_zero(bmap64, cstart,
 							     cend, &cout);
 		if (retval)
 			return retval;
 	found:
-		cout <<= bitmap->cluster_bits;
+		cout <<= bmap64->cluster_bits;
 		*out = (cout >= start) ? cout : start;
 		return 0;
 	}
 
 	for (cout = cstart; cout <= cend; cout++)
-		if (!bitmap->bitmap_ops->test_bmap(bitmap, cout))
+		if (!bmap64->bitmap_ops->test_bmap(bmap64, cout))
 			goto found;
 
 	return ENOENT;
@@ -855,6 +889,7 @@
 errcode_t ext2fs_find_first_set_generic_bmap(ext2fs_generic_bitmap bitmap,
 					     __u64 start, __u64 end, __u64 *out)
 {
+	ext2fs_generic_bitmap_64 bmap64 = (ext2fs_generic_bitmap_64) bitmap;
 	__u64 cstart, cend, cout;
 	errcode_t retval;
 
@@ -880,27 +915,27 @@
 	if (!EXT2FS_IS_64_BITMAP(bitmap))
 		return EINVAL;
 
-	cstart = start >> bitmap->cluster_bits;
-	cend = end >> bitmap->cluster_bits;
+	cstart = start >> bmap64->cluster_bits;
+	cend = end >> bmap64->cluster_bits;
 
-	if (cstart < bitmap->start || cend > bitmap->end || start > end) {
-		warn_bitmap(bitmap, EXT2FS_TEST_ERROR, start);
+	if (cstart < bmap64->start || cend > bmap64->end || start > end) {
+		warn_bitmap(bmap64, EXT2FS_TEST_ERROR, start);
 		return EINVAL;
 	}
 
-	if (bitmap->bitmap_ops->find_first_set) {
-		retval = bitmap->bitmap_ops->find_first_set(bitmap, cstart,
+	if (bmap64->bitmap_ops->find_first_set) {
+		retval = bmap64->bitmap_ops->find_first_set(bmap64, cstart,
 							    cend, &cout);
 		if (retval)
 			return retval;
 	found:
-		cout <<= bitmap->cluster_bits;
+		cout <<= bmap64->cluster_bits;
 		*out = (cout >= start) ? cout : start;
 		return 0;
 	}
 
 	for (cout = cstart; cout <= cend; cout++)
-		if (bitmap->bitmap_ops->test_bmap(bitmap, cout))
+		if (bmap64->bitmap_ops->test_bmap(bmap64, cout))
 			goto found;
 
 	return ENOENT;
diff --git a/lib/ext2fs/getsize.c b/lib/ext2fs/getsize.c
index f3839ba..be06775 100644
--- a/lib/ext2fs/getsize.c
+++ b/lib/ext2fs/getsize.c
@@ -151,9 +151,12 @@
 	if (fd < 0)
 		return errno;
 
-#ifdef DKIOCGETBLOCKCOUNT	/* For Apple Darwin */
-	if (ioctl(fd, DKIOCGETBLOCKCOUNT, &size64) >= 0) {
-		*retblocks = size64 / (blocksize / 512);
+#if defined DKIOCGETBLOCKCOUNT && defined DKIOCGETBLOCKSIZE	/* For Apple Darwin */
+	unsigned int size;
+
+	if (ioctl(fd, DKIOCGETBLOCKCOUNT, &size64) >= 0 &&
+	    ioctl(fd, DKIOCGETBLOCKSIZE, &size) >= 0) {
+		*retblocks = size64 * size / blocksize;
 		goto out;
 	}
 #endif
diff --git a/lib/ext2fs/hashmap.h b/lib/ext2fs/hashmap.h
index be1e8a7..656d3d9 100644
--- a/lib/ext2fs/hashmap.h
+++ b/lib/ext2fs/hashmap.h
@@ -4,6 +4,15 @@
 # include <stdlib.h>
 # include <stdint.h>
 
+#ifndef __GNUC_PREREQ
+#if defined(__GNUC__) && defined(__GNUC_MINOR__)
+#define __GNUC_PREREQ(maj, min) \
+	((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+#else
+#define __GNUC_PREREQ(maj, min) 0
+#endif
+#endif
+
 struct ext2fs_hashmap {
 	uint32_t size;
 	uint32_t(*hash)(const void *key, size_t len);
@@ -17,10 +26,14 @@
 		struct ext2fs_hashmap_entry *next;
 		struct ext2fs_hashmap_entry *list_next;
 		struct ext2fs_hashmap_entry *list_prev;
+#if __GNUC_PREREQ (4, 8)
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wpedantic"
+#endif
 	} *entries[0];
+#if __GNUC_PREREQ (4, 8)
 #pragma GCC diagnostic pop
+#endif
 };
 
 struct ext2fs_hashmap *ext2fs_hashmap_create(
diff --git a/lib/ext2fs/mkjournal.c b/lib/ext2fs/mkjournal.c
index 7f78291..a90e80e 100644
--- a/lib/ext2fs/mkjournal.c
+++ b/lib/ext2fs/mkjournal.c
@@ -401,6 +401,8 @@
 
 	/* Check and see if this filesystem has already been added */
 	nr_users = ntohl(jsb->s_nr_users);
+	if (nr_users > JFS_USERS_MAX)
+		return EXT2_ET_CORRUPT_JOURNAL_SB;
 	for (i=0; i < nr_users; i++) {
 		if (memcmp(fs->super->s_uuid,
 			   &jsb->s_users[i*16], 16) == 0)
diff --git a/lib/ext2fs/mmp.c b/lib/ext2fs/mmp.c
index 0cf0d0d..2da935e 100644
--- a/lib/ext2fs/mmp.c
+++ b/lib/ext2fs/mmp.c
@@ -34,10 +34,12 @@
 #define O_DIRECT 0
 #endif
 
+#if __GNUC_PREREQ (4, 6)
 #pragma GCC diagnostic push
 #ifndef CONFIG_MMP
 #pragma GCC diagnostic ignored "-Wunused-parameter"
 #endif
+#endif
 
 errcode_t ext2fs_mmp_read(ext2_filsys fs, blk64_t mmp_blk, void *buf)
 {
@@ -465,4 +467,6 @@
 	return EXT2_ET_OP_NOT_SUPPORTED;
 #endif
 }
+#if __GNUC_PREREQ (4, 6)
 #pragma GCC diagnostic pop
+#endif
diff --git a/lib/ext2fs/tdb.c b/lib/ext2fs/tdb.c
index 195a4c0..5091b12 100644
--- a/lib/ext2fs/tdb.c
+++ b/lib/ext2fs/tdb.c
@@ -79,12 +79,10 @@
 {
 	char *ret;
 	int length;
+
 	if (!s)
 		return NULL;
-
-	if (!length)
-		length = strlen(s);
-
+	length = strlen(s);
 	ret = malloc(length + 1);
 	if (ret) {
 		strncpy(ret, s, length);
diff --git a/lib/ext2fs/tst_bitmaps.c b/lib/ext2fs/tst_bitmaps.c
index 574fb7a..f6196b3 100644
--- a/lib/ext2fs/tst_bitmaps.c
+++ b/lib/ext2fs/tst_bitmaps.c
@@ -190,7 +190,8 @@
 	ext2fs_close_free(&test_fs);
 }
 
-void setup_cmd(int argc, char **argv)
+void setup_cmd(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+	       void *infop EXT2FS_ATTR((unused)))
 {
 	int		c, err;
 	unsigned int	blocks = 128;
@@ -234,7 +235,8 @@
 	setup_filesystem(argv[0], blocks, inodes, type, flags);
 }
 
-void close_cmd(int argc, char **argv)
+void close_cmd(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+	       void *infop EXT2FS_ATTR((unused)))
 {
 	if (check_fs_open(argv[0]))
 		return;
@@ -269,7 +271,9 @@
 	free(buf);
 }
 
-void dump_inode_bitmap_cmd(int argc, char **argv)
+void dump_inode_bitmap_cmd(int argc, char **argv,
+			   int sci_idx EXT2FS_ATTR((unused)),
+			   void *infop EXT2FS_ATTR((unused)))
 {
 	if (check_fs_open(argv[0]))
 		return;
@@ -278,7 +282,9 @@
 	dump_bitmap(test_fs->inode_map, 1, test_fs->super->s_inodes_count);
 }
 	
-void dump_block_bitmap_cmd(int argc, char **argv)
+void dump_block_bitmap_cmd(int argc, char **argv,
+			   int sci_idx EXT2FS_ATTR((unused)),
+			   void *infop EXT2FS_ATTR((unused)))
 {
 	if (check_fs_open(argv[0]))
 		return;
@@ -288,7 +294,8 @@
 		    test_fs->super->s_blocks_count);
 }
 	
-void do_setb(int argc, char *argv[])
+void do_setb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	     void *infop EXT2FS_ATTR((unused)))
 {
 	unsigned int block, num;
 	int err;
@@ -326,7 +333,8 @@
 			test_result, op_result);
 }
 
-void do_clearb(int argc, char *argv[])
+void do_clearb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	       void *infop EXT2FS_ATTR((unused)))
 {
 	unsigned int block, num;
 	int err;
@@ -364,7 +372,8 @@
 			test_result, op_result);
 }
 
-void do_testb(int argc, char *argv[])
+void do_testb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	      void *infop EXT2FS_ATTR((unused)))
 {
 	unsigned int block, num;
 	int err;
@@ -399,7 +408,8 @@
 	printf("Block %u is %s\n", block, test_result ? "set" : "clear");
 }
 
-void do_ffzb(int argc, char *argv[])
+void do_ffzb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	     void *infop EXT2FS_ATTR((unused)))
 {
 	unsigned int start, end;
 	int err;
@@ -432,7 +442,8 @@
 	printf("First unmarked block is %llu\n", out);
 }
 
-void do_ffsb(int argc, char *argv[])
+void do_ffsb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	     void *infop EXT2FS_ATTR((unused)))
 {
 	unsigned int start, end;
 	int err;
@@ -466,7 +477,8 @@
 }
 
 
-void do_zerob(int argc, char *argv[])
+void do_zerob(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	      void *infop EXT2FS_ATTR((unused)))
 {
 	if (check_fs_open(argv[0]))
 		return;
@@ -475,7 +487,8 @@
 	ext2fs_clear_block_bitmap(test_fs->block_map);
 }
 
-void do_seti(int argc, char *argv[])
+void do_seti(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	     void *infop EXT2FS_ATTR((unused)))
 {
 	unsigned int inode;
 	int err;
@@ -504,7 +517,8 @@
 	}
 }
 
-void do_cleari(int argc, char *argv[])
+void do_cleari(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	       void *infop EXT2FS_ATTR((unused)))
 {
 	unsigned int inode;
 	int err;
@@ -533,7 +547,8 @@
 	}
 }
 
-void do_testi(int argc, char *argv[])
+void do_testi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	      void *infop EXT2FS_ATTR((unused)))
 {
 	unsigned int inode;
 	int err;
@@ -555,7 +570,8 @@
 	printf("Inode %u is %s\n", inode, test_result ? "set" : "clear");
 }
 
-void do_ffzi(int argc, char *argv[])
+void do_ffzi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	     void *infop EXT2FS_ATTR((unused)))
 {
 	unsigned int start, end;
 	int err;
@@ -588,7 +604,8 @@
 	printf("First unmarked inode is %u\n", out);
 }
 
-void do_ffsi(int argc, char *argv[])
+void do_ffsi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	     void *infop EXT2FS_ATTR((unused)))
 {
 	unsigned int start, end;
 	int err;
@@ -621,7 +638,8 @@
 	printf("First marked inode is %u\n", out);
 }
 
-void do_zeroi(int argc, char *argv[])
+void do_zeroi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+	      void *infop EXT2FS_ATTR((unused)))
 {
 	if (check_fs_open(argv[0]))
 		return;
diff --git a/lib/ext2fs/tst_libext2fs.c b/lib/ext2fs/tst_libext2fs.c
index a90bff2..3e7497c 100644
--- a/lib/ext2fs/tst_libext2fs.c
+++ b/lib/ext2fs/tst_libext2fs.c
@@ -43,7 +43,8 @@
 }
 
 
-void do_block_iterate(int argc, char **argv)
+void do_block_iterate(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+		      void *infop EXT2FS_ATTR((unused)))
 {
 	const char	*usage = "block_iterate <file> <flags";
 	ext2_ino_t	ino;
diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c
index 18a2e5f..16e2052 100644
--- a/lib/ext2fs/unix_io.c
+++ b/lib/ext2fs/unix_io.c
@@ -1081,6 +1081,38 @@
 #define BLKDISCARD		_IO(0x12,119)
 #endif
 
+/*
+ * Try a PUNCH_HOLE to unmap blocks, then BLKDISCARD if that doesn't work.
+ * We prefer PUNCH_HOLE because it invalidates the page cache, even on block
+ * devices.
+ */
+static int __unix_discard(int fd, int is_bdev, off_t offset, off_t len)
+{
+#ifdef BLKDISCARD
+	__u64 range[2];
+#endif
+	int ret = -1;
+
+#if defined(HAVE_FALLOCATE) && defined(FALLOC_FL_PUNCH_HOLE) && defined(FALLOC_FL_KEEP_SIZE)
+	ret = fallocate(fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,
+			offset, len);
+	if (ret == 0)
+		return 0;
+#endif
+#ifdef BLKDISCARD
+	if (is_bdev) {
+		range[0] = (__u64)offset;
+		range[1] = (__u64)len;
+
+		ret = ioctl(fd, BLKDISCARD, &range);
+		if (ret == 0)
+			return 0;
+	}
+#endif
+	errno = EOPNOTSUPP;
+	return ret;
+}
+
 static errcode_t unix_discard(io_channel channel, unsigned long long block,
 			      unsigned long long count)
 {
@@ -1091,31 +1123,10 @@
 	data = (struct unix_private_data *) channel->private_data;
 	EXT2_CHECK_MAGIC(data, EXT2_ET_MAGIC_UNIX_IO_CHANNEL);
 
-	if (channel->flags & CHANNEL_FLAGS_BLOCK_DEVICE) {
-#ifdef BLKDISCARD
-		__u64 range[2];
-
-		range[0] = (__u64)(block) * channel->block_size + data->offset;
-		range[1] = (__u64)(count) * channel->block_size;
-
-		ret = ioctl(data->dev, BLKDISCARD, &range);
-#else
-		goto unimplemented;
-#endif
-	} else {
-#if defined(HAVE_FALLOCATE) && defined(FALLOC_FL_PUNCH_HOLE)
-		/*
-		 * If we are not on block device, try to use punch hole
-		 * to reclaim free space.
-		 */
-		ret = fallocate(data->dev,
-				FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,
-				(off_t)(block) * channel->block_size + data->offset,
-				(off_t)(count) * channel->block_size);
-#else
-		goto unimplemented;
-#endif
-	}
+	ret = __unix_discard(data->dev,
+			(channel->flags & CHANNEL_FLAGS_BLOCK_DEVICE),
+			(off_t)(block) * channel->block_size + data->offset,
+			(off_t)(count) * channel->block_size);
 	if (ret < 0) {
 		if (errno == EOPNOTSUPP)
 			goto unimplemented;
@@ -1126,9 +1137,36 @@
 	return EXT2_ET_UNIMPLEMENTED;
 }
 
+/*
+ * If we know about ZERO_RANGE, try that before we try PUNCH_HOLE because
+ * ZERO_RANGE doesn't unmap preallocated blocks.  We prefer fallocate because
+ * it always invalidates page cache, and libext2fs requires that reads after
+ * ZERO_RANGE return zeroes.
+ */
+static int __unix_zeroout(int fd, off_t offset, off_t len)
+{
+	int ret = -1;
+
+#if defined(HAVE_FALLOCATE) && defined(FALLOC_FL_ZERO_RANGE)
+	ret = fallocate(fd, FALLOC_FL_ZERO_RANGE, offset, len);
+	if (ret == 0)
+		return 0;
+#endif
+#if defined(HAVE_FALLOCATE) && defined(FALLOC_FL_PUNCH_HOLE) && defined(FALLOC_FL_KEEP_SIZE)
+	ret = fallocate(fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,
+			offset,  len);
+	if (ret == 0)
+		return 0;
+#endif
+	errno = EOPNOTSUPP;
+	return ret;
+}
+
 /* parameters might not be used if OS doesn't support zeroout */
+#if __GNUC_PREREQ (4, 6)
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wunused-parameter"
+#endif
 static errcode_t unix_zeroout(io_channel channel, unsigned long long block,
 			      unsigned long long count)
 {
@@ -1142,10 +1180,7 @@
 	if (safe_getenv("UNIX_IO_NOZEROOUT"))
 		goto unimplemented;
 
-	if (channel->flags & CHANNEL_FLAGS_BLOCK_DEVICE) {
-		/* Not implemented until the BLKZEROOUT mess is fixed */
-		goto unimplemented;
-	} else {
+	if (!(channel->flags & CHANNEL_FLAGS_BLOCK_DEVICE)) {
 		/* Regular file, try to use truncate/punch/zero. */
 		struct stat statbuf;
 
@@ -1165,26 +1200,11 @@
 			if (ret)
 				goto err;
 		}
-#if defined(HAVE_FALLOCATE) && (defined(FALLOC_FL_ZERO_RANGE) || \
-	(defined(FALLOC_FL_PUNCH_HOLE) && defined(FALLOC_FL_KEEP_SIZE)))
-#if defined(FALLOC_FL_PUNCH_HOLE) && defined(FALLOC_FL_KEEP_SIZE)
-		ret = fallocate(data->dev,
-				FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,
-				(off_t)(block) * channel->block_size + data->offset,
-				(off_t)(count) * channel->block_size);
-		if (ret == 0)
-			goto err;
-#endif
-#ifdef FALLOC_FL_ZERO_RANGE
-		ret = fallocate(data->dev,
-				FALLOC_FL_ZERO_RANGE,
-				(off_t)(block) * channel->block_size + data->offset,
-				(off_t)(count) * channel->block_size);
-#endif
-#else
-		goto unimplemented;
-#endif /* HAVE_FALLOCATE && (ZERO_RANGE || (PUNCH_HOLE && KEEP_SIZE)) */
 	}
+
+	ret = __unix_zeroout(data->dev,
+			(off_t)(block) * channel->block_size + data->offset,
+			(off_t)(count) * channel->block_size);
 err:
 	if (ret < 0) {
 		if (errno == EOPNOTSUPP)
@@ -1195,7 +1215,9 @@
 unimplemented:
 	return EXT2_ET_UNIMPLEMENTED;
 }
+#if __GNUC_PREREQ (4, 6)
 #pragma GCC diagnostic pop
+#endif
 
 static struct struct_io_manager struct_unix_manager = {
 	.magic		= EXT2_ET_MAGIC_IO_MANAGER,
diff --git a/lib/ss/Makefile.in b/lib/ss/Makefile.in
index ee18dc8..bf2989b 100644
--- a/lib/ss/Makefile.in
+++ b/lib/ss/Makefile.in
@@ -124,8 +124,8 @@
 	$(Q) cd $(top_builddir); CONFIG_FILES=lib/ss/ss.pc ./config.status
 
 installdirs::
-	$(E) "	MKINSTALLDIRS $(libdir) $(includedir)/ss $(datadir)/ss $(bindir)"
-	$(Q) $(MKINSTALLDIRS) $(DESTDIR)$(libdir) \
+	$(E) "	MKDIR_P $(libdir) $(includedir)/ss $(datadir)/ss $(bindir)"
+	$(Q) $(MKDIR_P) $(DESTDIR)$(libdir) \
 		$(DESTDIR)$(includedir)/ss $(DESTDIR)$(datadir)/ss \
 		$(DESTDIR)$(bindir) $(DESTDIR)$(pkgconfigdir)
 
diff --git a/lib/ss/mk_cmds.sh.in b/lib/ss/mk_cmds.sh.in
index 0abc19d..6d48735 100644
--- a/lib/ss/mk_cmds.sh.in
+++ b/lib/ss/mk_cmds.sh.in
@@ -2,7 +2,6 @@
 #
 #
 
-datarootdir=@datarootdir@
 DIR=@datadir@/ss
 AWK=@AWK@
 SED=@SED@
diff --git a/lib/uuid/Makefile.in b/lib/uuid/Makefile.in
index 4b44418..972459f 100644
--- a/lib/uuid/Makefile.in
+++ b/lib/uuid/Makefile.in
@@ -130,8 +130,8 @@
 	$(Q) cd $(top_builddir); CONFIG_FILES=lib/uuid/uuid.pc ./config.status
 
 installdirs::
-	$(E) "	MKINSTALLDIRS $(libdir) $(includedir)/uuid $(man3dir)"
-	$(Q) $(MKINSTALLDIRS) $(DESTDIR)$(libdir)  \
+	$(E) "	MKDIR_P $(libdir) $(includedir)/uuid $(man3dir)"
+	$(Q) $(MKDIR_P) $(DESTDIR)$(libdir)  \
 		$(DESTDIR)$(includedir)/uuid $(DESTDIR)$(man3dir) \
 		$(DESTDIR)$(pkgconfigdir)
 
diff --git a/lib/uuid/gen_uuid.c b/lib/uuid/gen_uuid.c
index 43ecc8a..0198363 100644
--- a/lib/uuid/gen_uuid.c
+++ b/lib/uuid/gen_uuid.c
@@ -484,10 +484,12 @@
 }
 #endif /* defined(USE_UUIDD) && defined(HAVE_SYS_UN_H) */
 
+#if __GNUC_PREREQ (4, 6)
 #pragma GCC diagnostic push
 #if !defined(USE_UUIDD) || !defined(HAVE_SYS_UN_H)
 #pragma GCC diagnostic ignored "-Wunused-parameter"
 #endif
+#endif
 /*
  * Try using the uuidd daemon to generate the UUID
  *
@@ -570,7 +572,9 @@
 #endif
 	return -1;
 }
+#if __GNUC_PREREQ (4, 6)
 #pragma GCC diagnostic pop
+#endif
 
 void uuid__generate_time(uuid_t out, int *num)
 {
diff --git a/lib/uuid/uuidP.h b/lib/uuid/uuidP.h
index e897bbb..6c0fd80 100644
--- a/lib/uuid/uuidP.h
+++ b/lib/uuid/uuidP.h
@@ -55,6 +55,14 @@
 	uint8_t	node[6];
 };
 
+#ifndef __GNUC_PREREQ
+#if defined(__GNUC__) && defined(__GNUC_MINOR__)
+#define __GNUC_PREREQ(maj, min) \
+	((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+#else
+#define __GNUC_PREREQ(maj, min) 0
+#endif
+#endif
 
 /*
  * prototypes
diff --git a/misc/Makefile.in b/misc/Makefile.in
index 9902841..22c9848 100644
--- a/misc/Makefile.in
+++ b/misc/Makefile.in
@@ -529,8 +529,8 @@
 	$(Q) $(SUBSTITUTE_UPTIME) $(srcdir)/filefrag.8.in filefrag.8
 
 installdirs:
-	$(E) "	MKINSTALLDIRS $(sbindir) $(root_sbindir) $(bindir) $(man1dir) $(man8dir) $(libdir) $(root_sysconfdir)"
-	$(Q) $(MKINSTALLDIRS) $(DESTDIR)$(sbindir) \
+	$(E) "	MKDIR_P $(sbindir) $(root_sbindir) $(bindir) $(man1dir) $(man8dir) $(libdir) $(root_sysconfdir)"
+	$(Q) $(MKDIR_P) $(DESTDIR)$(sbindir) \
 		$(DESTDIR)$(root_sbindir) $(DESTDIR)$(bindir) \
 		$(DESTDIR)$(man1dir) $(DESTDIR)$(man8dir) \
 		$(DESTDIR)$(man1dir) $(DESTDIR)$(man5dir) \
diff --git a/misc/e2freefrag.c b/misc/e2freefrag.c
index 268fac9..6eb4c73 100644
--- a/misc/e2freefrag.c
+++ b/misc/e2freefrag.c
@@ -371,7 +371,8 @@
 #ifdef DEBUGFS
 #include "debugfs.h"
 
-void do_freefrag(int argc, char **argv)
+void do_freefrag(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+		 void *infop EXT2FS_ATTR((unused)))
 #else
 int main(int argc, char *argv[])
 #endif
diff --git a/misc/e2image.c b/misc/e2image.c
index d32b84a..9e21d0d 100644
--- a/misc/e2image.c
+++ b/misc/e2image.c
@@ -416,6 +416,14 @@
 	}
 	meta_blocks_count += fs->desc_blocks;
 
+	/*
+	 *  Mark MMP block
+	 */
+	if (fs->super->s_feature_incompat & EXT4_FEATURE_INCOMPAT_MMP) {
+		ext2fs_mark_block_bitmap2(meta_block_map, fs->super->s_mmp_block);
+		meta_blocks_count++;
+	}
+
 	for (i = 0; i < fs->group_desc_count; i++) {
 		/*
 		 * Mark the blocks used for the inode table
diff --git a/misc/e2undo.c b/misc/e2undo.c
index 0593738..71991e0 100644
--- a/misc/e2undo.c
+++ b/misc/e2undo.c
@@ -81,10 +81,14 @@
 	__le32 magic;		/* KEYBLOCK_MAGIC number */
 	__le32 crc;		/* block checksum */
 	__le64 reserved;	/* zero */
+#if __GNUC_PREREQ (4, 8)
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wpedantic"
+#endif
 	struct undo_key keys[0];	/* keys, which come immediately after */
+#if __GNUC_PREREQ (4, 8)
 #pragma GCC diagnostic pop
+#endif
 };
 
 struct undo_key_info {
diff --git a/misc/filefrag.c b/misc/filefrag.c
index 7f1c5bf..1eec146 100644
--- a/misc/filefrag.c
+++ b/misc/filefrag.c
@@ -45,7 +45,9 @@
 #include <sys/stat.h>
 #include <sys/vfs.h>
 #include <sys/ioctl.h>
+#ifdef HAVE_LINUX_FD_H
 #include <linux/fd.h>
+#endif
 #include <ext2fs/ext2fs.h>
 #include <ext2fs/ext2_types.h>
 #include <ext2fs/fiemap.h>
@@ -535,8 +537,10 @@
 				char *end;
 				blocksize = strtoul(optarg, &end, 0);
 				if (end) {
+#if __GNUC_PREREQ (7, 0)
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
+#endif
 					switch (end[0]) {
 					case 'g':
 					case 'G':
@@ -553,7 +557,9 @@
 					default:
 						break;
 					}
+#if __GNUC_PREREQ (7, 0)
 #pragma GCC diagnostic pop
+#endif
 				}
 			} else { /* Allow -b without argument for compat. Remove
 				  * this eventually so "-b {blocksize}" works */
diff --git a/misc/fuse2fs.c b/misc/fuse2fs.c
index 056d34e..5c73895 100644
--- a/misc/fuse2fs.c
+++ b/misc/fuse2fs.c
@@ -118,10 +118,14 @@
 
 typedef struct {
 	u_int32_t	a_version;
+#if __GNUC_PREREQ (4, 8)
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wpedantic"
+#endif
 	acl_ea_entry	a_entries[0];
+#if __GNUC_PREREQ (4, 8)
 #pragma GCC diagnostic pop
+#endif
 } acl_ea_header;
 
 static inline size_t acl_ea_size(int count)
diff --git a/misc/mke2fs.c b/misc/mke2fs.c
index b23ea76..f05003f 100644
--- a/misc/mke2fs.c
+++ b/misc/mke2fs.c
@@ -1124,7 +1124,8 @@
 		EXT4_FEATURE_RO_COMPAT_BIGALLOC|
 		EXT4_FEATURE_RO_COMPAT_QUOTA|
 		EXT4_FEATURE_RO_COMPAT_METADATA_CSUM|
-		EXT4_FEATURE_RO_COMPAT_PROJECT
+		EXT4_FEATURE_RO_COMPAT_PROJECT|
+		EXT4_FEATURE_RO_COMPAT_VERITY
 };
 
 
diff --git a/misc/tune2fs.8.in b/misc/tune2fs.8.in
index 740d166..f1def2b 100644
--- a/misc/tune2fs.8.in
+++ b/misc/tune2fs.8.in
@@ -238,6 +238,10 @@
 This superblock setting is only honored in 2.6.35+ kernels;
 and not at all by the ext2 and ext3 file system drivers.
 .TP
+.B force_fsck
+Set a flag in the filesystem superblock indicating that errors have been found.
+This will force fsck to run at the next mount.
+.TP
 .B test_fs
 Set a flag in the filesystem superblock indicating that it may be
 mounted using experimental kernel code, such as the ext4dev filesystem.
diff --git a/misc/tune2fs.c b/misc/tune2fs.c
index f1ddfe4..a680b46 100644
--- a/misc/tune2fs.c
+++ b/misc/tune2fs.c
@@ -170,7 +170,8 @@
 		EXT4_FEATURE_RO_COMPAT_QUOTA |
 		EXT4_FEATURE_RO_COMPAT_METADATA_CSUM |
 		EXT4_FEATURE_RO_COMPAT_READONLY |
-		EXT4_FEATURE_RO_COMPAT_PROJECT
+		EXT4_FEATURE_RO_COMPAT_PROJECT |
+		EXT4_FEATURE_RO_COMPAT_VERITY
 };
 
 static __u32 clear_ok_features[3] = {
@@ -291,6 +292,12 @@
 	jsb = (journal_superblock_t *) buf;
 	/* Find the filesystem UUID */
 	nr_users = ntohl(jsb->s_nr_users);
+	if (nr_users > JFS_USERS_MAX) {
+		fprintf(stderr, _("Journal superblock is corrupted, nr_users\n"
+				 "is too high (%d).\n"), nr_users);
+		commit_remove_journal = 1;
+		goto no_valid_journal;
+	}
 
 	if (!journal_user(fs->super->s_uuid, jsb->s_users, nr_users)) {
 		fputs(_("Filesystem's UUID not found on journal device.\n"),
@@ -2118,6 +2125,10 @@
 			       intv);
 			fs->super->s_mmp_update_interval = intv;
 			ext2fs_mark_super_dirty(fs);
+		} else if (!strcmp(token, "force_fsck")) {
+			fs->super->s_state |= EXT2_ERROR_FS;
+			printf(_("Setting filesystem error flag to force fsck.\n"));
+			ext2fs_mark_super_dirty(fs);
 		} else if (!strcmp(token, "test_fs")) {
 			fs->super->s_flags |= EXT2_FLAGS_TEST_FILESYS;
 			printf("Setting test filesystem flag\n");
@@ -2200,6 +2211,7 @@
 			"\tmmp_update_interval=<mmp update interval in seconds>\n"
 			"\tstride=<RAID per-disk chunk size in blocks>\n"
 			"\tstripe_width=<RAID stride*data disks in blocks>\n"
+			"\tforce_fsck\n"
 			"\ttest_fs\n"
 			"\t^test_fs\n"));
 		free(buf);
@@ -2849,6 +2861,11 @@
 	jsb = (journal_superblock_t *) buf;
 	/* Find the filesystem UUID */
 	nr_users = ntohl(jsb->s_nr_users);
+	if (nr_users > JFS_USERS_MAX) {
+		fprintf(stderr, _("Journal superblock is corrupted, nr_users\n"
+				 "is too high (%d).\n"), nr_users);
+		return EXT2_ET_CORRUPT_JOURNAL_SB;
+	}
 
 	j_uuid = journal_user(old_uuid, jsb->s_users, nr_users);
 	if (j_uuid == NULL) {
@@ -3050,6 +3067,7 @@
 				ext2fs_close_free(&fs);
 			exit(1);
 		}
+		sb = fs->super;
 	}
 #endif
 
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
index eff37d3..67e1f2f 100644
--- a/po/Makefile.in.in
+++ b/po/Makefile.in.in
@@ -29,8 +29,7 @@
 
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = @MKINSTALLDIRS@
-mkinstalldirs = $(SHELL) $(MKINSTALLDIRS)
+mkinstalldirs = @MKDIR_P@
 
 GMSGFMT = @GMSGFMT@
 MSGFMT = @MSGFMT@
diff --git a/po/ca.gmo b/po/ca.gmo
index 0ec0e39..7aea756 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index ed48945..d3f1518 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -70,7 +70,7 @@
 msgstr ""
 "Project-Id-Version: e2fsprogs 1.42.12-pre2\n"
 "Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
-"POT-Creation-Date: 2018-03-04 16:02-0500\n"
+"POT-Creation-Date: 2018-08-18 21:03-0400\n"
 "PO-Revision-Date: 2015-07-26 11:42+0100\n"
 "Last-Translator: Angel Mompo <mecatxis@mecatxis.cat>\n"
 "Language-Team: Catalan <ca@dodds.net>\n"
@@ -96,11 +96,12 @@
 msgid "while reading the bad blocks inode"
 msgstr "en llegir el node-i de blocs erronis"
 
-#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1536
-#: e2fsck/unix.c:1629 misc/badblocks.c:1251 misc/badblocks.c:1259
-#: misc/badblocks.c:1273 misc/badblocks.c:1285 misc/dumpe2fs.c:593
-#: misc/e2image.c:1401 misc/e2image.c:1585 misc/e2image.c:1606
-#: misc/mke2fs.c:236 misc/tune2fs.c:2835 misc/tune2fs.c:2929 resize/main.c:414
+#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1550
+#: e2fsck/unix.c:1664 misc/badblocks.c:1251 misc/badblocks.c:1259
+#: misc/badblocks.c:1273 misc/badblocks.c:1285 misc/dumpe2fs.c:431
+#: misc/dumpe2fs.c:688 misc/dumpe2fs.c:692 misc/e2image.c:1404
+#: misc/e2image.c:1588 misc/e2image.c:1609 misc/mke2fs.c:236
+#: misc/tune2fs.c:2837 misc/tune2fs.c:2931 resize/main.c:414
 #, c-format
 msgid "while trying to open %s"
 msgstr "en intentar obrir %s"
@@ -125,6 +126,11 @@
 "Avís: s'ha trobat el bloc no vàlid %u en el node-i de blocs erronis.  S'ha "
 "esborrat.\n"
 
+#: e2fsck/dirinfo.c:331
+#, fuzzy
+msgid "while freeing dir_info tdb file"
+msgstr "en llegir el node arrel"
+
 #: e2fsck/ehandler.c:55
 #, c-format
 msgid "Error reading block %lu (%s) while %s.  "
@@ -203,12 +209,12 @@
 msgid "Usage: %s [-F] [-I inode_buffer_blocks] device\n"
 msgstr "Forma d'ús: %s [-F] [-I blocs_de_mem_int_del_node_i] dispositiu\n"
 
-#: e2fsck/iscan.c:81 e2fsck/unix.c:1062
+#: e2fsck/iscan.c:81 e2fsck/unix.c:1075
 #, c-format
 msgid "while opening %s for flushing"
 msgstr "en obrir %s per a buidar-lo"
 
-#: e2fsck/iscan.c:86 e2fsck/unix.c:1068 resize/main.c:383
+#: e2fsck/iscan.c:86 e2fsck/unix.c:1081 resize/main.c:383
 #, c-format
 msgid "while trying to flush %s"
 msgstr "en intentar buidar %s"
@@ -218,11 +224,11 @@
 msgid "while trying to open '%s'"
 msgstr "en intentar obrir «%s»"
 
-#: e2fsck/iscan.c:119 e2fsck/scantest.c:114 misc/e2image.c:1294
+#: e2fsck/iscan.c:119 e2fsck/scantest.c:114 misc/e2image.c:1297
 msgid "while opening inode scan"
 msgstr "en obrir l'escaneig de nodes-i"
 
-#: e2fsck/iscan.c:127 misc/e2image.c:1313
+#: e2fsck/iscan.c:127 misc/e2image.c:1316
 msgid "while getting next inode"
 msgstr "en obtenir el node-i següent"
 
@@ -231,33 +237,33 @@
 msgid "%u inodes scanned.\n"
 msgstr "%u nodes-i escanejats.\n"
 
-#: e2fsck/journal.c:594
+#: e2fsck/journal.c:597
 msgid "reading journal superblock\n"
 msgstr "s'està llegint el superbloc del registre de transaccions\n"
 
-#: e2fsck/journal.c:667
+#: e2fsck/journal.c:670
 #, c-format
 msgid "%s: no valid journal superblock found\n"
 msgstr "%s: no s'ha trobat cap superbloc del registre de transaccions vàlid\n"
 
-#: e2fsck/journal.c:676
+#: e2fsck/journal.c:679
 #, c-format
 msgid "%s: journal too short\n"
 msgstr "%s: el registre de transaccions és massa curt\n"
 
-#: e2fsck/journal.c:969 misc/fuse2fs.c:3779
+#: e2fsck/journal.c:972 misc/fuse2fs.c:3786
 #, c-format
 msgid "%s: recovering journal\n"
 msgstr "%s: recuperació del registre de transaccions\n"
 
-#: e2fsck/journal.c:971
+#: e2fsck/journal.c:974
 #, c-format
 msgid "%s: won't do journal recovery while read-only\n"
 msgstr ""
 "%s: no es recuperarà el registre de transaccions mentre sigui de només "
 "lectura\n"
 
-#: e2fsck/journal.c:998
+#: e2fsck/journal.c:1001
 #, c-format
 msgid "while trying to re-open %s"
 msgstr "en intentar tornar a obrir %s"
@@ -502,17 +508,17 @@
 msgid "multiply claimed inode map"
 msgstr "mapa de nodes-i reclamat múltiplement"
 
-#: e2fsck/pass1b.c:647 e2fsck/pass1b.c:795
+#: e2fsck/pass1b.c:672 e2fsck/pass1b.c:826
 #, c-format
 msgid "internal error: can't find dup_blk for %llu\n"
 msgstr "error intern: no s'ha trobat dup_blk per a %llu\n"
 
-#: e2fsck/pass1b.c:905
+#: e2fsck/pass1b.c:952
 msgid "returned from clone_file_block"
 msgstr "s'ha tornat de la funció clone_file_block"
 
 # FIXME (dpm)
-#: e2fsck/pass1b.c:929
+#: e2fsck/pass1b.c:976
 #, c-format
 msgid "internal error: couldn't lookup EA block record for %llu"
 msgstr ""
@@ -520,7 +526,7 @@
 "(EA) per a %llu"
 
 # FIXME (dpm)
-#: e2fsck/pass1b.c:941
+#: e2fsck/pass1b.c:988
 #, c-format
 msgid "internal error: couldn't lookup EA inode record for %u"
 msgstr ""
@@ -532,36 +538,36 @@
 msgid "while hashing entry with e_value_inum = %u"
 msgstr ""
 
-#: e2fsck/pass1.c:774 e2fsck/pass2.c:1004
+#: e2fsck/pass1.c:774 e2fsck/pass2.c:1005
 msgid "reading directory block"
 msgstr "s'està llegint el bloc de directori"
 
-#: e2fsck/pass1.c:1224
+#: e2fsck/pass1.c:1223
 msgid "in-use inode map"
 msgstr "mapa de nodes-i en ús"
 
-#: e2fsck/pass1.c:1235
+#: e2fsck/pass1.c:1234
 msgid "directory inode map"
 msgstr "mapa de nodes-i de directoris"
 
-#: e2fsck/pass1.c:1245
+#: e2fsck/pass1.c:1244
 msgid "regular file inode map"
 msgstr "mapa de nodes-i de fitxers normals"
 
-#: e2fsck/pass1.c:1254 misc/e2image.c:1269
+#: e2fsck/pass1.c:1253 misc/e2image.c:1272
 msgid "in-use block map"
 msgstr "mapa de blocs en ús"
 
-#: e2fsck/pass1.c:1263
+#: e2fsck/pass1.c:1262
 #, fuzzy
 msgid "metadata block map"
 msgstr "blocs de metadades"
 
-#: e2fsck/pass1.c:1325
+#: e2fsck/pass1.c:1324
 msgid "opening inode scan"
 msgstr "s'està obring l'escaneig de nodes-i"
 
-#: e2fsck/pass1.c:1363
+#: e2fsck/pass1.c:1362
 msgid "getting next inode from scan"
 msgstr "s'està obtenint el node-i següent de l'escaneig"
 
@@ -586,11 +592,11 @@
 msgid "imagic inode map"
 msgstr "mapa de nodes-i imagic"
 
-#: e2fsck/pass1.c:2265
+#: e2fsck/pass1.c:2269
 msgid "multiply claimed block map"
 msgstr "mapa de blocs reclamat més d'un cop"
 
-#: e2fsck/pass1.c:2389
+#: e2fsck/pass1.c:2394
 msgid "ext attr block map"
 msgstr "mapa de blocs d'atributs estesos"
 
@@ -615,7 +621,7 @@
 msgid "Pass 2"
 msgstr "Pas 2"
 
-#: e2fsck/pass2.c:1076 e2fsck/pass2.c:1243
+#: e2fsck/pass2.c:1077 e2fsck/pass2.c:1244
 msgid "Can not continue."
 msgstr "No es pot continuar."
 
@@ -636,7 +642,7 @@
 msgid "inode loop detection bitmap"
 msgstr "mapa de bits de la detecció de nodes-i de bucle"
 
-#: e2fsck/pass4.c:267
+#: e2fsck/pass4.c:277
 msgid "Pass 4"
 msgstr "Pas 4"
 
@@ -814,18 +820,18 @@
 msgstr "ES TORNARÀ A CREAR"
 
 #. @-expanded: block bitmap for group %g is not in group.  (block %b)\n
-#: e2fsck/problem.c:110
+#: e2fsck/problem.c:112
 msgid "@b @B for @g %g is not in @g.  (@b %b)\n"
 msgstr "El @b @B per al @g %g no és a @g.  (@b %b)\n"
 
 #. @-expanded: inode bitmap for group %g is not in group.  (block %b)\n
-#: e2fsck/problem.c:114
+#: e2fsck/problem.c:116
 msgid "@i @B for @g %g is not in @g.  (@b %b)\n"
 msgstr "El @i @B per al @g %g no és a @g.  (@b %b)\n"
 
 #. @-expanded: inode table for group %g is not in group.  (block %b)\n
 #. @-expanded: WARNING: SEVERE DATA LOSS POSSIBLE.\n
-#: e2fsck/problem.c:119
+#: e2fsck/problem.c:121
 msgid ""
 "@i table for @g %g is not in @g.  (@b %b)\n"
 "WARNING: SEVERE DATA LOSS POSSIBLE.\n"
@@ -842,7 +848,7 @@
 #. @-expanded:  or\n
 #. @-expanded:     e2fsck -b 32768 <device>\n
 #. @-expanded: \n
-#: e2fsck/problem.c:125
+#: e2fsck/problem.c:127
 msgid ""
 "\n"
 "The @S could not be read or does not describe a valid ext2/ext3/ext4\n"
@@ -868,7 +874,7 @@
 #. @-expanded: The filesystem size (according to the superblock) is %b blocks\n
 #. @-expanded: The physical size of the device is %c blocks\n
 #. @-expanded: Either the superblock or the partition table is likely to be corrupt!\n
-#: e2fsck/problem.c:136
+#: e2fsck/problem.c:138
 msgid ""
 "The @f size (according to the @S) is %b @bs\n"
 "The physical size of the @v is %c @bs\n"
@@ -881,7 +887,7 @@
 #. @-expanded: superblock block_size = %b, fragsize = %c.\n
 #. @-expanded: This version of e2fsck does not support fragment sizes different\n
 #. @-expanded: from the block size.\n
-#: e2fsck/problem.c:143
+#: e2fsck/problem.c:145
 msgid ""
 "@S @b_size = %b, fragsize = %c.\n"
 "This version of e2fsck does not support fragment sizes different\n"
@@ -892,24 +898,24 @@
 "coincideixen amb la mida del @b.\n"
 
 #. @-expanded: superblock blocks_per_group = %b, should have been %c\n
-#: e2fsck/problem.c:150
+#: e2fsck/problem.c:152
 msgid "@S @bs_per_group = %b, should have been %c\n"
 msgstr "@bs_per_grup del @S = %b, hauria d'haver estat %c\n"
 
 #. @-expanded: superblock first_data_block = %b, should have been %c\n
-#: e2fsck/problem.c:155
+#: e2fsck/problem.c:157
 msgid "@S first_data_@b = %b, should have been %c\n"
 msgstr "primer_@b_de_dades del @S = %b, hauria d'haver estat %c\n"
 
 #. @-expanded: filesystem did not have a UUID; generating one.\n
 #. @-expanded: \n
-#: e2fsck/problem.c:160
+#: e2fsck/problem.c:162
 msgid ""
 "@f did not have a UUID; generating one.\n"
 "\n"
 msgstr "El @f no té cap UUID; se li'n generarà un.\n"
 
-#: e2fsck/problem.c:165
+#: e2fsck/problem.c:167
 #, c-format
 msgid ""
 "Note: if several inode or block bitmap blocks or part\n"
@@ -926,48 +932,48 @@
 "descriptors de grups de blocs de còpia de seguretat potser estan bé.\n"
 
 #. @-expanded: Corruption found in superblock.  (%s = %N).\n
-#: e2fsck/problem.c:174
+#: e2fsck/problem.c:176
 msgid "Corruption found in @S.  (%s = %N).\n"
 msgstr "El @S està malmès. (%s = %N).\n"
 
 #. @-expanded: Error determining size of the physical device: %m\n
-#: e2fsck/problem.c:179
+#: e2fsck/problem.c:181
 #, c-format
 msgid "Error determining size of the physical @v: %m\n"
 msgstr "S'ha produït un error en determinar la mida del @v físic: %m\n"
 
 #. @-expanded: inode count in superblock is %i, should be %j.\n
-#: e2fsck/problem.c:184
+#: e2fsck/problem.c:186
 msgid "@i count in @S is %i, @s %j.\n"
 msgstr "El nombre de nodes-i en el @S és %i (@s %j).\n"
 
-#: e2fsck/problem.c:188
+#: e2fsck/problem.c:190
 msgid "The Hurd does not support the filetype feature.\n"
 msgstr "El Hurd no és compatible amb la característica de tipus de fitxer.\n"
 
 #. @-expanded: superblock has an invalid journal (inode %i).\n
-#: e2fsck/problem.c:193
+#: e2fsck/problem.c:195
 #, c-format
 msgid "@S has an @n @j (@i %i).\n"
 msgstr "El @S té un @j @n (@i %i).\n"
 
 #. @-expanded: External journal has multiple filesystem users (unsupported).\n
-#: e2fsck/problem.c:198
+#: e2fsck/problem.c:200
 msgid "External @j has multiple @f users (unsupported).\n"
 msgstr "El @j extern té múltiples usuaris del @f (no compatible).\n"
 
 #. @-expanded: Can't find external journal\n
-#: e2fsck/problem.c:203
+#: e2fsck/problem.c:205
 msgid "Can't find external @j\n"
 msgstr "No s'ha trobat el @j extern\n"
 
 #. @-expanded: External journal has bad superblock\n
-#: e2fsck/problem.c:208
+#: e2fsck/problem.c:210
 msgid "External @j has bad @S\n"
 msgstr "El @j extern té un @S malmès\n"
 
 #. @-expanded: External journal does not support this filesystem\n
-#: e2fsck/problem.c:213
+#: e2fsck/problem.c:215
 msgid "External @j does not support this @f\n"
 msgstr "El @j extern no és compatible amb aquest @f\n"
 
@@ -975,7 +981,7 @@
 #. @-expanded: It is likely that your copy of e2fsck is old and/or doesn't support this journal 
 #. @-expanded: format.\n
 #. @-expanded: It is also possible the journal superblock is corrupt.\n
-#: e2fsck/problem.c:218
+#: e2fsck/problem.c:220
 msgid ""
 "@f @j @S is unknown type %N (unsupported).\n"
 "It is likely that your copy of e2fsck is old and/or doesn't support this @j "
@@ -988,88 +994,88 @@
 "També pot ser que el @S @j estigui malmès.\n"
 
 #. @-expanded: journal superblock is corrupt.\n
-#: e2fsck/problem.c:226
+#: e2fsck/problem.c:228
 msgid "@j @S is corrupt.\n"
 msgstr "El @S del @j està malmès.\n"
 
 #. @-expanded: superblock has_journal flag is clear, but a journal is present.\n
-#: e2fsck/problem.c:231
+#: e2fsck/problem.c:233
 msgid "@S has_@j flag is clear, but a @j is present.\n"
 msgstr "El senyalador has_@j del @S està buit, però el @j té dades.\n"
 
 #. @-expanded: superblock needs_recovery flag is set, but no journal is present.\n
-#: e2fsck/problem.c:236
+#: e2fsck/problem.c:238
 msgid "@S needs_recovery flag is set, but no @j is present.\n"
 msgstr ""
 "El @S té el senyalador «needs_recovery» (recuperació_necessària) activat, "
 "però no té cap @j.\n"
 
 #. @-expanded: superblock needs_recovery flag is clear, but journal has data.\n
-#: e2fsck/problem.c:241
+#: e2fsck/problem.c:243
 msgid "@S needs_recovery flag is clear, but @j has data.\n"
 msgstr "El senyalador de recuperació @S està buit, però el @j té dades.\n"
 
 #. @-expanded: Clear journal
-#: e2fsck/problem.c:246
+#: e2fsck/problem.c:248
 msgid "Clear @j"
 msgstr "Esborra el @j"
 
 #. @-expanded: filesystem has feature flag(s) set, but is a revision 0 filesystem.  
-#: e2fsck/problem.c:251 e2fsck/problem.c:751
+#: e2fsck/problem.c:253 e2fsck/problem.c:764
 msgid "@f has feature flag(s) set, but is a revision 0 @f.  "
 msgstr ""
 "El @f té els senyaladors de característica (feature) activat, però és un @f "
 "de versió 0.  "
 
 #. @-expanded: %s orphaned inode %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n
-#: e2fsck/problem.c:256
+#: e2fsck/problem.c:258
 msgid "%s @o @i %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n"
 msgstr "%s @i @o %i (uid=%Iu, gid=%Ig, mode=%Im, mida=%Is)\n"
 
 #. @-expanded: illegal %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:261
+#: e2fsck/problem.c:263
 msgid "@I %B (%b) found in @o @i %i.\n"
 msgstr "S'ha trobat %B @I (%b) a l'@i @o %i.\n"
 
 #. @-expanded: Already cleared %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:266
+#: e2fsck/problem.c:268
 msgid "Already cleared %B (%b) found in @o @i %i.\n"
 msgstr "S'ha trobat %B (%b) que ja està esborrat a l'@i @o %i.\n"
 
 #. @-expanded: illegal orphaned inode %i in superblock.\n
-#: e2fsck/problem.c:271
+#: e2fsck/problem.c:273
 #, c-format
 msgid "@I @o @i %i in @S.\n"
 msgstr "@i @o @I %i en el @S.\n"
 
 #. @-expanded: illegal inode %i in orphaned inode list.\n
-#: e2fsck/problem.c:276
+#: e2fsck/problem.c:278
 #, c-format
 msgid "@I @i %i in @o @i list.\n"
 msgstr "@i @o @I %i a la llista de nodes-i @os.\n"
 
 #. @-expanded: journal superblock has an unknown read-only feature flag set.\n
-#: e2fsck/problem.c:281
+#: e2fsck/problem.c:283
 msgid "@j @S has an unknown read-only feature flag set.\n"
 msgstr ""
 "El @S del @j té un senyalador de característica de només lectura activat "
 "desconegut.\n"
 
 #. @-expanded: journal superblock has an unknown incompatible feature flag set.\n
-#: e2fsck/problem.c:286
+#: e2fsck/problem.c:288
 msgid "@j @S has an unknown incompatible feature flag set.\n"
 msgstr ""
 "El @S del @j té un senyalador de característica no compatible activat no "
 "compatible.\n"
 
 #. @-expanded: journal version not supported by this e2fsck.\n
-#: e2fsck/problem.c:291
+#: e2fsck/problem.c:293
 msgid "@j version not supported by this e2fsck.\n"
 msgstr "La versió del @j no funciona amb aquest e2fsck.\n"
 
 #. @-expanded: Moving journal from /%s to hidden inode.\n
 #. @-expanded: \n
-#: e2fsck/problem.c:296
+#: e2fsck/problem.c:298
 #, c-format
 msgid ""
 "Moving @j from /%s to hidden @i.\n"
@@ -1080,7 +1086,7 @@
 
 #. @-expanded: Error moving journal: %m\n
 #. @-expanded: \n
-#: e2fsck/problem.c:301
+#: e2fsck/problem.c:303
 #, c-format
 msgid ""
 "Error moving @j: %m\n"
@@ -1092,7 +1098,7 @@
 #. @-expanded: Found invalid V2 journal superblock fields (from V1 journal).\n
 #. @-expanded: Clearing fields beyond the V1 journal superblock...\n
 #. @-expanded: \n
-#: e2fsck/problem.c:306
+#: e2fsck/problem.c:308
 msgid ""
 "Found @n V2 @j @S fields (from V1 @j).\n"
 "Clearing fields beyond the V1 @j @S...\n"
@@ -1103,12 +1109,12 @@
 "\n"
 
 #. @-expanded: Run journal anyway
-#: e2fsck/problem.c:312
+#: e2fsck/problem.c:314
 msgid "Run @j anyway"
 msgstr "Executa el @j de totes maneres"
 
 #. @-expanded: Recovery flag not set in backup superblock, so running journal anyway.\n
-#: e2fsck/problem.c:317
+#: e2fsck/problem.c:319
 msgid "Recovery flag not set in backup @S, so running @j anyway.\n"
 msgstr ""
 "El senyalador de recuperació no està definit en la còpia del @S, per la qual "
@@ -1116,7 +1122,7 @@
 
 #. @-expanded: Backing up journal inode block information.\n
 #. @-expanded: \n
-#: e2fsck/problem.c:322
+#: e2fsck/problem.c:324
 msgid ""
 "Backing up @j @i @b information.\n"
 "\n"
@@ -1127,7 +1133,7 @@
 
 #. @-expanded: filesystem does not have resize_inode enabled, but s_reserved_gdt_blocks\n
 #. @-expanded: is %N; should be zero.  
-#: e2fsck/problem.c:328
+#: e2fsck/problem.c:330
 msgid ""
 "@f does not have resize_@i enabled, but s_reserved_gdt_@bs\n"
 "is %N; @s zero.  "
@@ -1136,18 +1142,18 @@
 "és %N; @s zero.  "
 
 #. @-expanded: Resize_inode not enabled, but the resize inode is non-zero.  
-#: e2fsck/problem.c:334
+#: e2fsck/problem.c:336
 msgid "Resize_@i not enabled, but the resize @i is non-zero.  "
 msgstr "Resize_@i no està habilitat, però el @i de redimensió no és zero.  "
 
 #. @-expanded: Resize inode not valid.  
-#: e2fsck/problem.c:339
+#: e2fsck/problem.c:341
 msgid "Resize @i not valid.  "
 msgstr "El @i de redimensió no és vàlid.  "
 
 #. @-expanded: superblock last mount time (%t,\n
 #. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:344
+#: e2fsck/problem.c:346
 msgid ""
 "@S last mount time (%t,\n"
 "\tnow = %T) is in the future.\n"
@@ -1157,7 +1163,7 @@
 
 #. @-expanded: superblock last write time (%t,\n
 #. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:349
+#: e2fsck/problem.c:351
 msgid ""
 "@S last write time (%t,\n"
 "\tnow = %T) is in the future.\n"
@@ -1166,14 +1172,14 @@
 "\tara = %T) és en el futur.\n"
 
 #. @-expanded: superblock hint for external superblock should be %X.  
-#: e2fsck/problem.c:354
+#: e2fsck/problem.c:356
 #, c-format
 msgid "@S hint for external superblock @s %X.  "
 msgstr "L'apunt de @S per al superbloc extern @s %X.  "
 
 #. @-expanded: Adding dirhash hint to filesystem.\n
 #. @-expanded: \n
-#: e2fsck/problem.c:359
+#: e2fsck/problem.c:361
 msgid ""
 "Adding dirhash hint to @f.\n"
 "\n"
@@ -1182,13 +1188,13 @@
 "\n"
 
 #. @-expanded: group descriptor %g checksum is %04x, should be %04y.  
-#: e2fsck/problem.c:364
+#: e2fsck/problem.c:366
 msgid "@g descriptor %g checksum is %04x, should be %04y.  "
 msgstr ""
 "La suma de verificació del descriptor de @g %g és %04x, hauria de ser %04y.  "
 
 #. @-expanded: group descriptor %g marked uninitialized without feature set.\n
-#: e2fsck/problem.c:369
+#: e2fsck/problem.c:371
 #, c-format
 msgid "@g descriptor %g marked uninitialized without feature set.\n"
 msgstr ""
@@ -1196,30 +1202,30 @@
 "activada.\n"
 
 #. @-expanded: group descriptor %g has invalid unused inodes count %b.  
-#: e2fsck/problem.c:374
+#: e2fsck/problem.c:376
 msgid "@g descriptor %g has invalid unused inodes count %b.  "
 msgstr "El descriptor de @g %g té %b nodes-i no vàlids que no es fan servir.  "
 
 #. @-expanded: Last group block bitmap uninitialized.  
-#: e2fsck/problem.c:379
+#: e2fsck/problem.c:381
 msgid "Last @g @b @B uninitialized.  "
 msgstr "L'últim @B @g @b no està inicialitzat.  "
 
-#: e2fsck/problem.c:384
+#: e2fsck/problem.c:386
 #, c-format
 msgid "Journal transaction %i was corrupt, replay was aborted.\n"
 msgstr ""
 "La transacció del registre de transaccions %i està malmesa, se n'ha "
 "interromput la repetició\n"
 
-#: e2fsck/problem.c:389
+#: e2fsck/problem.c:391
 msgid "The test_fs flag is set (and ext4 is available).  "
 msgstr "El senyalador test_fs està activat (i està disponible ext4).  "
 
 #. @-expanded: superblock last mount time is in the future.\n
 #. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly 
 #. @-expanded: set)\n
-#: e2fsck/problem.c:394
+#: e2fsck/problem.c:396
 #, fuzzy
 msgid ""
 "@S last mount time is in the future.\n"
@@ -1233,7 +1239,7 @@
 #. @-expanded: superblock last write time is in the future.\n
 #. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly 
 #. @-expanded: set)\n
-#: e2fsck/problem.c:400
+#: e2fsck/problem.c:402
 #, fuzzy
 msgid ""
 "@S last write time is in the future.\n"
@@ -1245,219 +1251,232 @@
 "maquinàri)  "
 
 #. @-expanded: One or more block group descriptor checksums are invalid.  
-#: e2fsck/problem.c:406
+#: e2fsck/problem.c:408
 msgid "One or more @b @g descriptor checksums are invalid.  "
 msgstr ""
 "Una o més sumes de verificació del descriptor de @g de @b no són vàlids.  "
 
 #. @-expanded: Setting free inodes count to %j (was %i)\n
-#: e2fsck/problem.c:411
+#: e2fsck/problem.c:413
 msgid "Setting free @is count to %j (was %i)\n"
 msgstr "S'allibera @is conta fins a %j (abans era %i)\n"
 
 #. @-expanded: Setting free blocks count to %c (was %b)\n
-#: e2fsck/problem.c:416
+#: e2fsck/problem.c:418
 msgid "Setting free @bs count to %c (was %b)\n"
 msgstr "S'allibera @bs conta fins a %c (abans era %b)\n"
 
 #. @-expanded: Hiding %U quota inode %i (%Q).\n
-#: e2fsck/problem.c:421
+#: e2fsck/problem.c:423
 #, fuzzy
 msgid "Hiding %U @q @i %i (%Q).\n"
 msgstr "Es fa ocult l'@i @q %i (%Q).\n"
 
 #. @-expanded: superblock has invalid MMP block.  
-#: e2fsck/problem.c:426
+#: e2fsck/problem.c:428
 msgid "@S has invalid MMP block.  "
 msgstr "@S té un bloc MMP no vàlid.  "
 
 #. @-expanded: superblock has invalid MMP magic.  
-#: e2fsck/problem.c:431
+#: e2fsck/problem.c:433
 msgid "@S has invalid MMP magic.  "
 msgstr "El @S té un MMP màgic no vàlid.  "
 
-#: e2fsck/problem.c:436
+#: e2fsck/problem.c:438
 #, c-format
 msgid "ext2fs_open2: %m\n"
 msgstr "ext2fs_open2: %m\n"
 
-#: e2fsck/problem.c:441
+#: e2fsck/problem.c:443
 #, c-format
 msgid "ext2fs_check_desc: %m\n"
 msgstr "ext2fs_check_desc: %m\n"
 
 #. @-expanded: superblock metadata_csum supersedes uninit_bg; both feature bits cannot be set 
 #. @-expanded: simultaneously.
-#: e2fsck/problem.c:447
+#: e2fsck/problem.c:449
 msgid ""
 "@S metadata_csum supersedes uninit_bg; both feature bits cannot be set "
 "simultaneously."
 msgstr ""
 
-#. @-expanded: superblock MMP block checksum does not match MMP block.  
-#: e2fsck/problem.c:453
+#. @-expanded: superblock MMP block checksum does not match.  
+#: e2fsck/problem.c:455
 #, fuzzy
-msgid "@S MMP @b checksum does not match MMP @b.  "
+msgid "@S MMP @b checksum does not match.  "
 msgstr "La suma de verificació del bloc MMP no coincideix amb el bloc MMP"
 
 #. @-expanded: superblock 64bit filesystem needs extents to access the whole disk.  
-#: e2fsck/problem.c:458
+#: e2fsck/problem.c:460
 #, fuzzy
 msgid "@S 64bit @f needs extents to access the whole disk.  "
 msgstr ""
 "El @S del sistema de fitxers de 64 bits necessita «extents» per accedir al "
 "disc sencer.  "
 
-#: e2fsck/problem.c:463
+#: e2fsck/problem.c:465
 msgid "First_meta_bg is too big.  (%N, max value %g).  "
 msgstr "First_meta_bg és massa gran.  (%N, valor màx %g).  "
 
 #. @-expanded: External journal superblock checksum does not match superblock.  
-#: e2fsck/problem.c:468
+#: e2fsck/problem.c:470
 #, fuzzy
 msgid "External @j @S checksum does not match @S.  "
 msgstr ""
 "La suma de verificació del bloc «extent» no coincideix amb el bloc «extent»"
 
 #. @-expanded: superblock metadata_csum_seed is not necessary without metadata_csum.
-#: e2fsck/problem.c:473
+#: e2fsck/problem.c:475
 msgid "@S metadata_csum_seed is not necessary without metadata_csum."
 msgstr ""
 
-#: e2fsck/problem.c:478
+#: e2fsck/problem.c:480
 #, c-format
 msgid "Error initializing quota context in support library: %m\n"
 msgstr ""
 
 #. @-expanded: Bad required extra isize in superblock (%N).  
-#: e2fsck/problem.c:483
+#: e2fsck/problem.c:485
 msgid "Bad required extra isize in @S (%N).  "
 msgstr ""
 
 #. @-expanded: Bad desired extra isize in superblock (%N).  
-#: e2fsck/problem.c:488
+#: e2fsck/problem.c:490
 msgid "Bad desired extra isize in @S (%N).  "
 msgstr ""
 
 #. @-expanded: Invalid %U quota inode %i.  
-#: e2fsck/problem.c:493
+#: e2fsck/problem.c:495
 #, fuzzy
 msgid "Invalid %U @q @i %i.  "
 msgstr "@i de @z %i @u.  "
 
-#. @-expanded: Pass 1: Checking inodes, blocks, and sizes\n
+#. @-expanded: superblock would have too many inodes (%N).\n
 #: e2fsck/problem.c:500
+msgid "@S would have too many inodes (%N).\n"
+msgstr ""
+
+#. @-expanded: Resize_inode and meta_bg features are enabled. Those features are\n
+#. @-expanded: not compatible. Resize inode should be disabled.  
+#: e2fsck/problem.c:505
+msgid ""
+"Resize_@i and meta_bg features are enabled. Those features are\n"
+"not compatible. Resize @i should be disabled.  "
+msgstr ""
+
+#. @-expanded: Pass 1: Checking inodes, blocks, and sizes\n
+#: e2fsck/problem.c:513
 msgid "Pass 1: Checking @is, @bs, and sizes\n"
 msgstr "Pas 1: comprovació de nodes-i, @bs i mides\n"
 
 #. @-expanded: root inode is not a directory.  
-#: e2fsck/problem.c:504
+#: e2fsck/problem.c:517
 msgid "@r is not a @d.  "
 msgstr "el @r no és un @d.  "
 
 #. @-expanded: root inode has dtime set (probably due to old mke2fs).  
-#: e2fsck/problem.c:509
+#: e2fsck/problem.c:522
 msgid "@r has dtime set (probably due to old mke2fs).  "
 msgstr "el @r té el dtime definit (segurament degut a un mke2fs antic)."
 
 #. @-expanded: Reserved inode %i (%Q) has invalid mode.  
-#: e2fsck/problem.c:514
+#: e2fsck/problem.c:527
 msgid "Reserved @i %i (%Q) has @n mode.  "
 msgstr "El @i %i (%Q) té un mode @n.  "
 
 # FIXME dtime (dpm)
 #. @-expanded: deleted inode %i has zero dtime.  
-#: e2fsck/problem.c:519
+#: e2fsck/problem.c:532
 #, c-format
 msgid "@D @i %i has zero dtime.  "
 msgstr "El @i %i @D té un dtime zero.  "
 
 #. @-expanded: inode %i is in use, but has dtime set.  
-#: e2fsck/problem.c:524
+#: e2fsck/problem.c:537
 #, c-format
 msgid "@i %i is in use, but has dtime set.  "
 msgstr "El @i %i s'està utilitzant, però té dtime definit."
 
 #. @-expanded: inode %i is a zero-length directory.  
-#: e2fsck/problem.c:529
+#: e2fsck/problem.c:542
 #, c-format
 msgid "@i %i is a @z @d.  "
 msgstr "El @i %i és un @d de @z.  "
 
 #. @-expanded: group %g's block bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:534
+#: e2fsck/problem.c:547
 msgid "@g %g's @b @B at %b @C.\n"
 msgstr "@B de @g de @b %g a %b @C.\n"
 
 #. @-expanded: group %g's inode bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:539
+#: e2fsck/problem.c:552
 msgid "@g %g's @i @B at %b @C.\n"
 msgstr "@B de @g de @i %g a %b @C.\n"
 
 #. @-expanded: group %g's inode table at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:544
+#: e2fsck/problem.c:557
 msgid "@g %g's @i table at %b @C.\n"
 msgstr "Taula de @g de @i %g a %b @C.\n"
 
 #. @-expanded: group %g's block bitmap (%b) is bad.  
-#: e2fsck/problem.c:549
+#: e2fsck/problem.c:562
 msgid "@g %g's @b @B (%b) is bad.  "
 msgstr "@B de @g de @b %g (%b) és erroni.  "
 
 #. @-expanded: group %g's inode bitmap (%b) is bad.  
-#: e2fsck/problem.c:554
+#: e2fsck/problem.c:567
 msgid "@g %g's @i @B (%b) is bad.  "
 msgstr "@B de @g de @i %g (%b) és erroni.  "
 
 #. @-expanded: inode %i, i_size is %Is, should be %N.  
-#: e2fsck/problem.c:559
+#: e2fsck/problem.c:572
 msgid "@i %i, i_size is %Is, @s %N.  "
 msgstr "@i %i, i_size és %Is, @s %N.  "
 
 #. @-expanded: inode %i, i_blocks is %Ib, should be %N.  
-#: e2fsck/problem.c:564
+#: e2fsck/problem.c:577
 msgid "@i %i, i_@bs is %Ib, @s %N.  "
 msgstr "@i %i, i_@bs és %Ib, @s %N.  "
 
 #. @-expanded: illegal %B (%b) in inode %i.  
-#: e2fsck/problem.c:569
+#: e2fsck/problem.c:582
 msgid "@I %B (%b) in @i %i.  "
 msgstr "%B (%b) @I a @i %i.  "
 
 #. @-expanded: %B (%b) overlaps filesystem metadata in inode %i.  
-#: e2fsck/problem.c:574
+#: e2fsck/problem.c:587
 msgid "%B (%b) overlaps @f metadata in @i %i.  "
 msgstr "%B (%b) se sobreposa al @f de metadades al @i %i.  "
 
 #. @-expanded: inode %i has illegal block(s).  
-#: e2fsck/problem.c:579
+#: e2fsck/problem.c:592
 #, c-format
 msgid "@i %i has illegal @b(s).  "
 msgstr "El @i %i té @bs no vàlids.  "
 
 #. @-expanded: Too many illegal blocks in inode %i.\n
-#: e2fsck/problem.c:584
+#: e2fsck/problem.c:597
 #, c-format
 msgid "Too many illegal @bs in @i %i.\n"
 msgstr "Hi ha massa @b no vàlids al @i %i.\n"
 
 #. @-expanded: illegal %B (%b) in bad block inode.  
-#: e2fsck/problem.c:589
+#: e2fsck/problem.c:602
 msgid "@I %B (%b) in bad @b @i.  "
 msgstr "%B (%b) @I en @b @i dolents.  "
 
 #. @-expanded: Bad block inode has illegal block(s).  
-#: e2fsck/problem.c:594
+#: e2fsck/problem.c:607
 msgid "Bad @b @i has illegal @b(s).  "
 msgstr "El @i de @b erronis té @bs no vàlids.  "
 
 #. @-expanded: Duplicate or bad block in use!\n
-#: e2fsck/problem.c:599
+#: e2fsck/problem.c:612
 msgid "Duplicate or bad @b in use!\n"
 msgstr "S'està utilitzant el @b duplicat o erroni\n"
 
 #. @-expanded: Bad block %b used as bad block inode indirect block.  
-#: e2fsck/problem.c:604
+#: e2fsck/problem.c:617
 msgid "Bad @b %b used as bad @b @i indirect @b.  "
 msgstr "El @ erroni %b es fa servir com a @b indirecte @b @i erroni.  "
 
@@ -1465,7 +1484,7 @@
 #. @-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
 #. @-expanded: in the filesystem.\n
-#: e2fsck/problem.c:609
+#: e2fsck/problem.c:622
 msgid ""
 "\n"
 "The bad @b @i has probably been corrupted.  You probably\n"
@@ -1479,7 +1498,7 @@
 
 #. @-expanded: \n
 #. @-expanded: If the block is really bad, the filesystem can not be fixed.\n
-#: e2fsck/problem.c:616
+#: e2fsck/problem.c:629
 msgid ""
 "\n"
 "If the @b is really bad, the @f can not be fixed.\n"
@@ -1490,7 +1509,7 @@
 #. @-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
-#: e2fsck/problem.c:621
+#: e2fsck/problem.c:634
 msgid ""
 "You can remove this @b from the bad @b list and hope\n"
 "that the @b is really OK.  But there are no guarantees.\n"
@@ -1501,129 +1520,129 @@
 "\n"
 
 #. @-expanded: The primary superblock (%b) is on the bad block list.\n
-#: e2fsck/problem.c:627
+#: e2fsck/problem.c:640
 msgid "The primary @S (%b) is on the bad @b list.\n"
 msgstr "El @S primary (%b) és a la llista de @bs erronis.\n"
 
 #. @-expanded: Block %b in the primary group descriptors is on the bad block list\n
-#: e2fsck/problem.c:632
+#: e2fsck/problem.c:645
 msgid "Block %b in the primary @g descriptors is on the bad @b list\n"
 msgstr ""
 "El bloc %b del @g de descriptors primari és a la llista de @b erronis\n"
 
 #. @-expanded: Warning: Group %g's superblock (%b) is bad.\n
-#: e2fsck/problem.c:638
+#: e2fsck/problem.c:651
 msgid "Warning: Group %g's @S (%b) is bad.\n"
 msgstr "Avís: el @S (%b) del grup %s és erroni.\n"
 
 #. @-expanded: Warning: Group %g's copy of the group descriptors has a bad block (%b).\n
-#: e2fsck/problem.c:644
+#: e2fsck/problem.c:657
 msgid "Warning: Group %g's copy of the @g descriptors has a bad @b (%b).\n"
 msgstr ""
 "Avís: la còpia dels descriptors de @g del grup %g té un @b erroni (%b).\n"
 
 #. @-expanded: Programming error?  block #%b claimed for no reason in process_bad_block.\n
-#: e2fsck/problem.c:650
+#: e2fsck/problem.c:663
 msgid "Programming error?  @b #%b claimed for no reason in process_bad_@b.\n"
 msgstr ""
 "Es probable que s'hagi produït un error de programació: el @b #%b ha estat "
 "reclamat sense motiu a process_bad_@b.\n"
 
 #. @-expanded: error allocating %N contiguous block(s) in block group %g for %s: %m\n
-#: e2fsck/problem.c:656
+#: e2fsck/problem.c:669
 msgid "@A %N contiguous @b(s) in @b @g %g for %s: %m\n"
 msgstr "@A %N @b(s) contigus al @g @b %g per %s: %m\n"
 
 #. @-expanded: error allocating block buffer for relocating %s\n
-#: e2fsck/problem.c:661
+#: e2fsck/problem.c:674
 #, c-format
 msgid "@A @b buffer for relocating %s\n"
 msgstr "@A de la memòria intermèdia del @b per a reubicar %s\n"
 
 #. @-expanded: Relocating group %g's %s from %b to %c...\n
-#: e2fsck/problem.c:666
+#: e2fsck/problem.c:679
 msgid "Relocating @g %g's %s from %b to %c...\n"
 msgstr "S'està reubicant %g del @g %s de %b a %c...\n"
 
 #. @-expanded: Relocating group %g's %s to %c...\n
-#: e2fsck/problem.c:671
+#: e2fsck/problem.c:684
 #, c-format
 msgid "Relocating @g %g's %s to %c...\n"
 msgstr "S'està reubicant %g del @g %s a %c...\n"
 
 #. @-expanded: Warning: could not read block %b of %s: %m\n
-#: e2fsck/problem.c:676
+#: e2fsck/problem.c:689
 msgid "Warning: could not read @b %b of %s: %m\n"
 msgstr "Avís: no s'ha pogut llegir el @b %b de %s: %m\n"
 
 #. @-expanded: Warning: could not write block %b for %s: %m\n
-#: e2fsck/problem.c:681
+#: e2fsck/problem.c:694
 msgid "Warning: could not write @b %b for %s: %m\n"
 msgstr "Avís: no s'ha pogut escriure el @b %b per a %s: %m\n"
 
 #. @-expanded: error allocating inode bitmap (%N): %m\n
-#: e2fsck/problem.c:686 e2fsck/problem.c:1763
+#: e2fsck/problem.c:699 e2fsck/problem.c:1776
 msgid "@A @i @B (%N): %m\n"
 msgstr "S'ha produït un @A del @B del @i (%N): %m\n"
 
 #. @-expanded: error allocating block bitmap (%N): %m\n
-#: e2fsck/problem.c:691
+#: e2fsck/problem.c:704
 msgid "@A @b @B (%N): %m\n"
 msgstr "S'ha produït un @A del @B del @b (%N): %m\n"
 
 #. @-expanded: error allocating icount link information: %m\n
-#: e2fsck/problem.c:696
+#: e2fsck/problem.c:709
 #, c-format
 msgid "@A icount link information: %m\n"
 msgstr "@A la informació d'enllaç de l'icount: %m\n"
 
 #. @-expanded: error allocating directory block array: %m\n
-#: e2fsck/problem.c:701
+#: e2fsck/problem.c:714
 #, c-format
 msgid "@A @d @b array: %m\n"
 msgstr "@A la cadena del @b de @s: %m\n"
 
 #. @-expanded: Error while scanning inodes (%i): %m\n
-#: e2fsck/problem.c:706
+#: e2fsck/problem.c:719
 #, c-format
 msgid "Error while scanning @is (%i): %m\n"
 msgstr "S'ha produït un error en escanejar els nodes-i (%i): %m\n"
 
 #. @-expanded: Error while iterating over blocks in inode %i: %m\n
-#: e2fsck/problem.c:711
+#: e2fsck/problem.c:724
 #, c-format
 msgid "Error while iterating over @bs in @i %i: %m\n"
 msgstr "S'ha produït un error en iterar a través dels @bs del @i (%i): %m\n"
 
 #. @-expanded: Error storing inode count information (inode=%i, count=%N): %m\n
-#: e2fsck/problem.c:716
+#: e2fsck/problem.c:729
 msgid "Error storing @i count information (@i=%i, count=%N): %m\n"
 msgstr ""
 "S'ha produït un error en desar la informació del nombre de nodes-i (@i=%i, "
 "nombre=%N): %m\n"
 
 #. @-expanded: Error storing directory block information (inode=%i, block=%b, num=%N): %m\n
-#: e2fsck/problem.c:721
+#: e2fsck/problem.c:734
 msgid "Error storing @d @b information (@i=%i, @b=%b, num=%N): %m\n"
 msgstr ""
 "S'ha produït un error en desar la informació del @b de @d (@i=%i, @b=%b, núm="
 "%N): %m\n"
 
 #. @-expanded: Error reading inode %i: %m\n
-#: e2fsck/problem.c:727
+#: e2fsck/problem.c:740
 #, c-format
 msgid "Error reading @i %i: %m\n"
 msgstr "S'ha produït un error en llegir el @i %i: %m\n"
 
 #. @-expanded: inode %i has imagic flag set.  
-#: e2fsck/problem.c:735
+#: e2fsck/problem.c:748
 #, c-format
 msgid "@i %i has imagic flag set.  "
 msgstr "El @i %i té activat el senyalador imagic.  "
 
 #. @-expanded: Special (device/socket/fifo/symlink) file (inode %i) has immutable\n
 #. @-expanded: or append-only flag set.  
-#: e2fsck/problem.c:740
+#: e2fsck/problem.c:753
 #, c-format
 msgid ""
 "Special (@v/socket/fifo/symlink) file (@i %i) has immutable\n"
@@ -1633,110 +1652,110 @@
 "l'indicador d'immutable o de només afegir.  "
 
 #. @-expanded: Special (device/socket/fifo) inode %i has non-zero size.  
-#: e2fsck/problem.c:746
+#: e2fsck/problem.c:759
 #, c-format
 msgid "Special (@v/socket/fifo) @i %i has non-zero size.  "
 msgstr "El @i especial %i (@v/socket/fifo) té una mida diferent de zero.  "
 
 #. @-expanded: journal inode is not in use, but contains data.  
-#: e2fsck/problem.c:756
+#: e2fsck/problem.c:769
 msgid "@j @i is not in use, but contains data.  "
 msgstr "El @i del @j no s'utilitza, però conté dades.  "
 
 #. @-expanded: journal is not regular file.  
-#: e2fsck/problem.c:761
+#: e2fsck/problem.c:774
 msgid "@j is not regular file.  "
 msgstr "El @j no és un fitxer normal.  "
 
 #. @-expanded: inode %i was part of the orphaned inode list.  
-#: e2fsck/problem.c:766
+#: e2fsck/problem.c:779
 #, c-format
 msgid "@i %i was part of the @o @i list.  "
 msgstr "El @i %i és part de la llista de nodes-i @os.  "
 
 #. @-expanded: inodes that were part of a corrupted orphan linked list found.  
-#: e2fsck/problem.c:772
+#: e2fsck/problem.c:785
 msgid "@is that were part of a corrupted orphan linked list found.  "
 msgstr ""
 "S'han trobat nodes-i que són part d'una llista enllaçada d'orfes malmesa.  "
 
 #. @-expanded: error allocating refcount structure (%N): %m\n
-#: e2fsck/problem.c:777
+#: e2fsck/problem.c:790
 msgid "@A refcount structure (%N): %m\n"
 msgstr "@A l'estructura de refcount (%N): %m\n"
 
 #. @-expanded: Error reading extended attribute block %b for inode %i.  
-#: e2fsck/problem.c:782
+#: e2fsck/problem.c:795
 msgid "Error reading @a @b %b for @i %i.  "
 msgstr "S'ha produït un error en llegir el @b d'@a del @i %i.  "
 
 #. @-expanded: inode %i has a bad extended attribute block %b.  
-#: e2fsck/problem.c:787
+#: e2fsck/problem.c:800
 msgid "@i %i has a bad @a @b %b.  "
 msgstr "El @i %i té un @b d'@a %b malmès.  "
 
 #. @-expanded: Error reading extended attribute block %b (%m).  
-#: e2fsck/problem.c:792
+#: e2fsck/problem.c:805
 msgid "Error reading @a @b %b (%m).  "
 msgstr "S'ha produït un error en llegir el @b d'@a %b (%m).  "
 
 #. @-expanded: extended attribute block %b has reference count %r, should be %N.  
-#: e2fsck/problem.c:797
+#: e2fsck/problem.c:810
 msgid "@a @b %b has reference count %r, @s %N.  "
 msgstr "@a @b %b té un comptador de referència %r, @s %N.  "
 
 #. @-expanded: Error writing extended attribute block %b (%m).  
-#: e2fsck/problem.c:802
+#: e2fsck/problem.c:815
 msgid "Error writing @a @b %b (%m).  "
 msgstr "S'ha produït un error en escriure el @b d'@a %b (%m).  "
 
 #. @-expanded: extended attribute block %b has h_blocks > 1.  
-#: e2fsck/problem.c:807
+#: e2fsck/problem.c:820
 msgid "@a @b %b has h_@bs > 1.  "
 msgstr "@b @a %b té h_@bs > 1.  "
 
 #. @-expanded: error allocating extended attribute region allocation structure.  
-#: e2fsck/problem.c:812
+#: e2fsck/problem.c:825
 #, fuzzy
 msgid "@A @a region allocation structure.  "
 msgstr "@A de l'estructura icount: %m\n"
 
 #. @-expanded: extended attribute block %b is corrupt (allocation collision).  
-#: e2fsck/problem.c:817
+#: e2fsck/problem.c:830
 msgid "@a @b %b is corrupt (allocation collision).  "
 msgstr "El @b d'@a està malmès (col·lisió en l'assignació).  "
 
 #. @-expanded: extended attribute block %b is corrupt (invalid name).  
-#: e2fsck/problem.c:822
+#: e2fsck/problem.c:835
 msgid "@a @b %b is corrupt (@n name).  "
 msgstr "El @b d'@a està malmès (nom @n).  "
 
 #. @-expanded: extended attribute block %b is corrupt (invalid value).  
-#: e2fsck/problem.c:827
+#: e2fsck/problem.c:840
 msgid "@a @b %b is corrupt (@n value).  "
 msgstr "El @b d'@a està malmès (valor @n).  "
 
 #. @-expanded: inode %i is too big.  
-#: e2fsck/problem.c:832
+#: e2fsck/problem.c:845
 #, c-format
 msgid "@i %i is too big.  "
 msgstr "El @i %i és massa gran.  "
 
 #. @-expanded: %B (%b) causes directory to be too big.  
-#: e2fsck/problem.c:836
+#: e2fsck/problem.c:849
 msgid "%B (%b) causes @d to be too big.  "
 msgstr "El %B (%b) fa que el @d sigui massa gran.  "
 
-#: e2fsck/problem.c:841
+#: e2fsck/problem.c:854
 msgid "%B (%b) causes file to be too big.  "
 msgstr "El %B (%b) fa que el fitxer sigui massa gran.  "
 
-#: e2fsck/problem.c:846
+#: e2fsck/problem.c:859
 msgid "%B (%b) causes symlink to be too big.  "
 msgstr "El %B (%b) fa que l'enllaç simbòlic sigui massa gran.  "
 
 #. @-expanded: inode %i has INDEX_FL flag set on filesystem without htree support.\n
-#: e2fsck/problem.c:851
+#: e2fsck/problem.c:864
 #, c-format
 msgid "@i %i has INDEX_FL flag set on @f without htree support.\n"
 msgstr ""
@@ -1744,36 +1763,36 @@
 "l'htree.\n"
 
 #. @-expanded: inode %i has INDEX_FL flag set but is not a directory.\n
-#: e2fsck/problem.c:856
+#: e2fsck/problem.c:869
 #, c-format
 msgid "@i %i has INDEX_FL flag set but is not a @d.\n"
 msgstr "El @i %i té el senyalador INDEX_FL definit però no és un @d.\n"
 
 #. @-expanded: HTREE directory inode %i has an invalid root node.\n
-#: e2fsck/problem.c:861
+#: e2fsck/problem.c:874
 #, c-format
 msgid "@h %i has an @n root node.\n"
 msgstr "El @h %i té un node arrel @n.\n"
 
 #. @-expanded: HTREE directory inode %i has an unsupported hash version (%N)\n
-#: e2fsck/problem.c:866
+#: e2fsck/problem.c:879
 msgid "@h %i has an unsupported hash version (%N)\n"
 msgstr "@h %i té una versió de resum no compatible (%N)\n"
 
 #. @-expanded: HTREE directory inode %i uses an incompatible htree root node flag.\n
-#: e2fsck/problem.c:871
+#: e2fsck/problem.c:884
 #, c-format
 msgid "@h %i uses an incompatible htree root node flag.\n"
 msgstr "@h %i fa servir el senyalador de node arrel htree no compatible.\n"
 
 #. @-expanded: HTREE directory inode %i has a tree depth (%N) which is too big\n
-#: e2fsck/problem.c:876
+#: e2fsck/problem.c:889
 msgid "@h %i has a tree depth (%N) which is too big\n"
 msgstr "@h %i té una profunditat de directoris (%N) massa gran\n"
 
 #. @-expanded: Bad block inode has an indirect block (%b) that conflicts with\n
 #. @-expanded: filesystem metadata.  
-#: e2fsck/problem.c:882
+#: e2fsck/problem.c:895
 msgid ""
 "Bad @b @i has an indirect @b (%b) that conflicts with\n"
 "@f metadata.  "
@@ -1782,55 +1801,55 @@
 "en conflicte amb el @f de metadades.  "
 
 #. @-expanded: Resize inode (re)creation failed: %m.
-#: e2fsck/problem.c:888
+#: e2fsck/problem.c:901
 #, c-format
 msgid "Resize @i (re)creation failed: %m."
 msgstr "No s'ha pogut (tornar a) dimensionar el @: %m."
 
 #. @-expanded: inode %i has a extra size (%IS) which is invalid\n
-#: e2fsck/problem.c:893
+#: e2fsck/problem.c:906
 msgid "@i %i has a extra size (%IS) which is @n\n"
 msgstr "El @i té una mida addicional (%IS) què no és vàlida\n"
 
 #. @-expanded: extended attribute in inode %i has a namelen (%N) which is invalid\n
-#: e2fsck/problem.c:898
+#: e2fsck/problem.c:911
 msgid "@a in @i %i has a namelen (%N) which is @n\n"
 msgstr "La llargada del nom (%N) de l'@a del @i %i no és vàlida\n"
 
 #. @-expanded: extended attribute in inode %i has a value offset (%N) which is invalid\n
-#: e2fsck/problem.c:903
+#: e2fsck/problem.c:916
 msgid "@a in @i %i has a value offset (%N) which is @n\n"
 msgstr "El desplaçament del valor (%N) de l'@a del @i %i no és vàlid\n"
 
 #. @-expanded: extended attribute in inode %i has a value block (%N) which is invalid (must be 0)\n
-#: e2fsck/problem.c:908
+#: e2fsck/problem.c:921
 msgid "@a in @i %i has a value @b (%N) which is @n (must be 0)\n"
 msgstr "El @b del valor (%N) de l'@a del @i %i no és vàlid (hauria de ser 0)\n"
 
 #. @-expanded: extended attribute in inode %i has a value size (%N) which is invalid\n
-#: e2fsck/problem.c:913
+#: e2fsck/problem.c:926
 msgid "@a in @i %i has a value size (%N) which is @n\n"
 msgstr "La mida del valor (%N) de l'@a del @i %i no és vàlida\n"
 
 #. @-expanded: extended attribute in inode %i has a hash (%N) which is invalid\n
-#: e2fsck/problem.c:918
+#: e2fsck/problem.c:931
 msgid "@a in @i %i has a hash (%N) which is @n\n"
 msgstr "L'@a del @i %i té un resum (%N) que no és vàlid\n"
 
 #. @-expanded: inode %i is a %It but it looks like it is really a directory.\n
-#: e2fsck/problem.c:923
+#: e2fsck/problem.c:936
 msgid "@i %i is a %It but it looks like it is really a directory.\n"
 msgstr "El @i %i és un %It, però sembla ser un directori en realitat.\n"
 
 #. @-expanded: Error while reading over extent tree in inode %i: %m\n
-#: e2fsck/problem.c:928
+#: e2fsck/problem.c:941
 #, c-format
 msgid "Error while reading over @x tree in @i %i: %m\n"
 msgstr "S'ha produït un error en llegir l'arbre d'@x al @i %i: %m\n"
 
 #. @-expanded: Failed to iterate extents in inode %i\n
 #. @-expanded: \t(op %s, blk %b, lblk %c): %m\n
-#: e2fsck/problem.c:933
+#: e2fsck/problem.c:946
 msgid ""
 "Failed to iterate extents in @i %i\n"
 "\t(op %s, blk %b, lblk %c): %m\n"
@@ -1840,7 +1859,7 @@
 
 #. @-expanded: inode %i has an invalid extent\n
 #. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:939
+#: e2fsck/problem.c:952
 msgid ""
 "@i %i has an @n extent\n"
 "\t(logical @b %c, @n physical @b %b, len %N)\n"
@@ -1850,7 +1869,7 @@
 
 #. @-expanded: inode %i has an invalid extent\n
 #. @-expanded: \t(logical block %c, physical block %b, invalid len %N)\n
-#: e2fsck/problem.c:944
+#: e2fsck/problem.c:957
 msgid ""
 "@i %i has an @n extent\n"
 "\t(logical @b %c, physical @b %b, @n len %N)\n"
@@ -1859,7 +1878,7 @@
 "\t(@b lògic %c, @ físic %b, longitud @n %N)\n"
 
 #. @-expanded: inode %i has EXTENTS_FL flag set on filesystem without extents support.\n
-#: e2fsck/problem.c:949
+#: e2fsck/problem.c:962
 #, c-format
 msgid "@i %i has EXTENTS_FL flag set on @f without extents support.\n"
 msgstr ""
@@ -1867,26 +1886,26 @@
 "«extents».\n"
 
 #. @-expanded: inode %i is in extent format, but superblock is missing EXTENTS feature\n
-#: e2fsck/problem.c:954
+#: e2fsck/problem.c:967
 #, c-format
 msgid "@i %i is in extent format, but @S is missing EXTENTS feature\n"
 msgstr ""
 "El @i %i té format «extent», però el @S no té la característica EXTENTS\n"
 
 #. @-expanded: inode %i missing EXTENT_FL, but is in extents format\n
-#: e2fsck/problem.c:959
+#: e2fsck/problem.c:972
 #, c-format
 msgid "@i %i missing EXTENT_FL, but is in extents format\n"
 msgstr "El @i %i no té EXTENT_FL, però té el format «extents»\n"
 
-#: e2fsck/problem.c:964
+#: e2fsck/problem.c:977
 #, c-format
 msgid "Fast symlink %i has EXTENT_FL set.  "
 msgstr "L'enllaç simbòlic ràpid %i té activat el EXTENT_FL.  "
 
 #. @-expanded: inode %i has out of order extents\n
 #. @-expanded: \t(invalid logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:969
+#: e2fsck/problem.c:982
 msgid ""
 "@i %i has out of order extents\n"
 "\t(@n logical @b %c, physical @b %b, len %N)\n"
@@ -1895,40 +1914,40 @@
 "\t(@b lògic %c @n, @b físic %b, longitud %N)\n"
 
 #. @-expanded: inode %i has an invalid extent node (blk %b, lblk %c)\n
-#: e2fsck/problem.c:973
+#: e2fsck/problem.c:986
 msgid "@i %i has an invalid extent node (blk %b, lblk %c)\n"
 msgstr "El @i %i té un node «extent» no vàlid (blc %b, lblc %c)\n"
 
 #. @-expanded: Error converting subcluster block bitmap: %m\n
-#: e2fsck/problem.c:978
+#: e2fsck/problem.c:991
 #, c-format
 msgid "Error converting subcluster @b @B: %m\n"
 msgstr "S'ha produït un error quan es convertia el grup de sectors @b @B: %m\n"
 
 #. @-expanded: quota inode is not a regular file.  
-#: e2fsck/problem.c:983
+#: e2fsck/problem.c:996
 #, fuzzy
 msgid "@q @i is not a regular file.  "
 msgstr "L' @i de @q no és un fitxer normal.  "
 
 #. @-expanded: quota inode is not in use, but contains data.  
-#: e2fsck/problem.c:988
+#: e2fsck/problem.c:1001
 msgid "@q @i is not in use, but contains data.  "
 msgstr "L'@i de @q no s'utilitza, però conté dades.  "
 
 #. @-expanded: quota inode is visible to the user.  
-#: e2fsck/problem.c:993
+#: e2fsck/problem.c:1006
 msgid "@q @i is visible to the user.  "
 msgstr "L'@i de @q és visible per a l'usuari.  "
 
 #. @-expanded: The bad block inode looks invalid.  
-#: e2fsck/problem.c:998
+#: e2fsck/problem.c:1011
 msgid "The bad @b @i looks @n.  "
 msgstr "El @i del @b dolent sembla @n.  "
 
 #. @-expanded: inode %i has zero length extent\n
 #. @-expanded: \t(invalid logical block %c, physical block %b)\n
-#: e2fsck/problem.c:1003
+#: e2fsck/problem.c:1016
 msgid ""
 "@i %i has zero length extent\n"
 "\t(@n logical @b %c, physical @b %b)\n"
@@ -1937,13 +1956,13 @@
 "\t(@b lògic %c @n, @b físic %b)\n"
 
 #. @-expanded: inode %i seems to contain garbage.  
-#: e2fsck/problem.c:1008
+#: e2fsck/problem.c:1021
 #, fuzzy, c-format
 msgid "@i %i seems to contain garbage.  "
 msgstr "El @i %i és massa gran.  "
 
 #. @-expanded: inode %i passes checks, but checksum does not match inode.  
-#: e2fsck/problem.c:1013
+#: e2fsck/problem.c:1026
 #, fuzzy, c-format
 msgid "@i %i passes checks, but checksum does not match @i.  "
 msgstr ""
@@ -1951,14 +1970,14 @@
 "de bits"
 
 #. @-expanded: inode %i extended attribute is corrupt (allocation collision).  
-#: e2fsck/problem.c:1018
+#: e2fsck/problem.c:1031
 #, fuzzy, c-format
 msgid "@i %i @a is corrupt (allocation collision).  "
 msgstr "El @b d'@a està malmès (col·lisió en l'assignació).  "
 
 #. @-expanded: inode %i extent block passes checks, but checksum does not match extent\n
 #. @-expanded: \t(logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1026
+#: e2fsck/problem.c:1039
 #, fuzzy
 msgid ""
 "@i %i extent block passes checks, but checksum does not match extent\n"
@@ -1968,13 +1987,13 @@
 "\t(@b lògic %c @n, @b físic %b, longitud %N)\n"
 
 #. @-expanded: inode %i extended attribute block %b passes checks, but checksum does not match block.  
-#: e2fsck/problem.c:1035
+#: e2fsck/problem.c:1048
 msgid "@i %i @a @b %b passes checks, but checksum does not match @b.  "
 msgstr ""
 
 #. @-expanded: Interior extent node level %N of inode %i:\n
 #. @-expanded: Logical start %b does not match logical start %c at next level.  
-#: e2fsck/problem.c:1040
+#: e2fsck/problem.c:1053
 msgid ""
 "Interior @x node level %N of @i %i:\n"
 "Logical start %b does not match logical start %c at next level.  "
@@ -1984,7 +2003,7 @@
 
 #. @-expanded: inode %i, end of extent exceeds allowed value\n
 #. @-expanded: \t(logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1046
+#: e2fsck/problem.c:1059
 msgid ""
 "@i %i, end of extent exceeds allowed value\n"
 "\t(logical @b %c, physical @b %b, len %N)\n"
@@ -1993,14 +2012,14 @@
 "\t(@b lògic %c, @b físic %b, longitud %N)\n"
 
 #. @-expanded: inode %i has inline data, but superblock is missing INLINE_DATA feature\n
-#: e2fsck/problem.c:1051
+#: e2fsck/problem.c:1064
 #, fuzzy, c-format
 msgid "@i %i has inline data, but @S is missing INLINE_DATA feature\n"
 msgstr ""
 "El @i %i té format «extent», però el @S no té la característica EXTENTS\n"
 
 #. @-expanded: inode %i has INLINE_DATA_FL flag on filesystem without inline data support.\n
-#: e2fsck/problem.c:1056
+#: e2fsck/problem.c:1069
 #, fuzzy, c-format
 msgid "@i %i has INLINE_DATA_FL flag on @f without inline data support.\n"
 msgstr ""
@@ -2008,25 +2027,25 @@
 "l'htree.\n"
 
 #. @-expanded: inode %i block %b conflicts with critical metadata, skipping block checks.\n
-#: e2fsck/problem.c:1063
+#: e2fsck/problem.c:1076
 msgid ""
 "@i %i block %b conflicts with critical metadata, skipping block checks.\n"
 msgstr ""
 
 #. @-expanded: directory inode %i block %b should be at block %c.  
-#: e2fsck/problem.c:1068
+#: e2fsck/problem.c:1081
 msgid "@d @i %i @b %b should be at @b %c.  "
 msgstr "El @i de @d %i @b %b ha de ser al @b %c.  "
 
 #. @-expanded: directory inode %i has extent marked uninitialized at block %c.  
-#: e2fsck/problem.c:1073
+#: e2fsck/problem.c:1086
 #, c-format
 msgid "@d @i %i has @x marked uninitialized at @b %c.  "
 msgstr "El @i de @d %i té un @x marcar com a no inicialitzat a @b %c.  "
 
 #. @-expanded: inode %i logical block %b (physical block %c) violates cluster allocation rules.\n
 #. @-expanded: Will fix in pass 1B.\n
-#: e2fsck/problem.c:1078
+#: e2fsck/problem.c:1091
 msgid ""
 "@i %i logical @b %b (physical @b %c) violates cluster allocation rules.\n"
 "Will fix in pass 1B.\n"
@@ -2035,14 +2054,14 @@
 "S'arreglara al pas 1B.\n"
 
 #. @-expanded: inode %i has INLINE_DATA_FL flag but extended attribute not found.  
-#: e2fsck/problem.c:1083
+#: e2fsck/problem.c:1096
 #, fuzzy, c-format
 msgid "@i %i has INLINE_DATA_FL flag but @a not found.  "
 msgstr "El @i %i té el senyalador INDEX_FL definit però no és un @d.\n"
 
 #. @-expanded: Special (device/socket/fifo) file (inode %i) has extents\n
 #. @-expanded: or inline-data flag set.  
-#: e2fsck/problem.c:1089
+#: e2fsck/problem.c:1102
 #, fuzzy, c-format
 msgid ""
 "Special (@v/socket/fifo) file (@i %i) has extents\n"
@@ -2052,43 +2071,43 @@
 "l'indicador d'immutable o de només afegir.  "
 
 #. @-expanded: inode %i has extent header but inline data flag is set.\n
-#: e2fsck/problem.c:1095
+#: e2fsck/problem.c:1108
 #, c-format
 msgid "@i %i has @x header but inline data flag is set.\n"
 msgstr ""
 
 #. @-expanded: inode %i seems to have inline data but extent flag is set.\n
-#: e2fsck/problem.c:1100
+#: e2fsck/problem.c:1113
 #, c-format
 msgid "@i %i seems to have inline data but @x flag is set.\n"
 msgstr ""
 
 #. @-expanded: inode %i seems to have block map but inline data and extent flags set.\n
-#: e2fsck/problem.c:1105
+#: e2fsck/problem.c:1118
 #, c-format
 msgid "@i %i seems to have @b map but inline data and @x flags set.\n"
 msgstr ""
 
 #. @-expanded: inode %i has inline data and extent flags set but i_block contains junk.\n
-#: e2fsck/problem.c:1110
+#: e2fsck/problem.c:1123
 #, c-format
 msgid "@i %i has inline data and @x flags set but i_block contains junk.\n"
 msgstr ""
 
 #. @-expanded: Bad block list says the bad block list inode is bad.  
-#: e2fsck/problem.c:1115
+#: e2fsck/problem.c:1128
 msgid "Bad block list says the bad block list @i is bad.  "
 msgstr ""
 
 #. @-expanded: error allocating extent region allocation structure.  
-#: e2fsck/problem.c:1120
+#: e2fsck/problem.c:1133
 #, fuzzy
 msgid "@A @x region allocation structure.  "
 msgstr "@A de l'estructura icount: %m\n"
 
 #. @-expanded: inode %i has a duplicate extent mapping\n
 #. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:1125
+#: e2fsck/problem.c:1138
 #, fuzzy
 msgid ""
 "@i %i has a duplicate @x mapping\n"
@@ -2098,41 +2117,41 @@
 "\t(@b lògic %c, @b físic @n %b, longitud %N)\n"
 
 #. @-expanded: error allocating memory for encrypted directory list\n
-#: e2fsck/problem.c:1130
+#: e2fsck/problem.c:1143
 msgid "@A memory for encrypted @d list\n"
 msgstr ""
 
 #. @-expanded: inode %i extent tree could be more shallow (%b; could be <= %c)\n
-#: e2fsck/problem.c:1135
+#: e2fsck/problem.c:1148
 msgid "@i %i @x tree could be more shallow (%b; could be <= %c)\n"
 msgstr ""
 
 #. @-expanded: inode %i on bigalloc filesystem cannot be block mapped.  
-#: e2fsck/problem.c:1140
+#: e2fsck/problem.c:1153
 #, c-format
 msgid "@i %i on bigalloc @f cannot be @b mapped.  "
 msgstr ""
 
 #. @-expanded: inode %i has corrupt extent header.  
-#: e2fsck/problem.c:1145
+#: e2fsck/problem.c:1158
 #, fuzzy, c-format
 msgid "@i %i has corrupt @x header.  "
 msgstr "El @b d'@a està malmès (nom @n).  "
 
 #. @-expanded: Timestamp(s) on inode %i beyond 2310-04-04 are likely pre-1970.\n
-#: e2fsck/problem.c:1150
+#: e2fsck/problem.c:1163
 #, c-format
 msgid "Timestamp(s) on @i %i beyond 2310-04-04 are likely pre-1970.\n"
 msgstr ""
 
 #. @-expanded: inode %i has illegal extended attribute value inode %N.\n
-#: e2fsck/problem.c:1155
+#: e2fsck/problem.c:1168
 #, fuzzy
 msgid "@i %i has @I @a value @i %N.\n"
 msgstr "El @i %i té un @b d'@a %b malmès.  "
 
 #. @-expanded: inode %i has invalid extended attribute. EA inode %N missing EA_INODE flag.\n
-#: e2fsck/problem.c:1161
+#: e2fsck/problem.c:1174
 #, fuzzy
 msgid "@i %i has @n @a. EA @i %N missing EA_INODE flag.\n"
 msgstr ""
@@ -2140,7 +2159,7 @@
 
 #. @-expanded: EA inode %N for parent inode %i missing EA_INODE flag.\n
 #. @-expanded:  
-#: e2fsck/problem.c:1166
+#: e2fsck/problem.c:1179
 msgid ""
 "EA @i %N for parent @i %i missing EA_INODE flag.\n"
 " "
@@ -2149,7 +2168,7 @@
 #. @-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
-#: e2fsck/problem.c:1174
+#: e2fsck/problem.c:1187
 msgid ""
 "\n"
 "Running additional passes to resolve @bs claimed by more than one @i...\n"
@@ -2161,50 +2180,50 @@
 "Pas 1B: Es torna a escanejar per @bs @m\n"
 
 #. @-expanded: multiply-claimed block(s) in inode %i:
-#: e2fsck/problem.c:1180
+#: e2fsck/problem.c:1193
 #, c-format
 msgid "@m @b(s) in @i %i:"
 msgstr "@b(s) reclamat(s) múltiplement del @i %i:"
 
-#: e2fsck/problem.c:1195
+#: e2fsck/problem.c:1208
 #, c-format
 msgid "Error while scanning inodes (%i): %m\n"
 msgstr "S'ha produït un error en escanejar els nodes-i (%i): %m\n"
 
 #. @-expanded: error allocating inode bitmap (inode_dup_map): %m\n
-#: e2fsck/problem.c:1200
+#: e2fsck/problem.c:1213
 #, c-format
 msgid "@A @i @B (@i_dup_map): %m\n"
 msgstr "@A @B de @i (@i_dup_map): %m\n"
 
 #. @-expanded: Error while iterating over blocks in inode %i (%s): %m\n
-#: e2fsck/problem.c:1205
+#: e2fsck/problem.c:1218
 #, c-format
 msgid "Error while iterating over @bs in @i %i (%s): %m\n"
 msgstr "S'ha produït un error en iterar pels @bs al @i %i (%s): %m\n"
 
 #. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n
-#: e2fsck/problem.c:1210 e2fsck/problem.c:1572
+#: e2fsck/problem.c:1223 e2fsck/problem.c:1585
 msgid "Error adjusting refcount for @a @b %b (@i %i): %m\n"
 msgstr ""
 "S'ha produït un error en ajustar el nombre de referències del @b d'@a %b (@i "
 "%i): %m\n"
 
 #. @-expanded: Pass 1C: Scanning directories for inodes with multiply-claimed blocks\n
-#: e2fsck/problem.c:1220
+#: e2fsck/problem.c:1233
 msgid "Pass 1C: Scanning directories for @is with @m @bs\n"
 msgstr ""
 "Pas 1C: escaneig dels directoris dels nodes-i amb @bs reclamats "
 "múltiplement\n"
 
 #. @-expanded: Pass 1D: Reconciling multiply-claimed blocks\n
-#: e2fsck/problem.c:1226
+#: e2fsck/problem.c:1239
 msgid "Pass 1D: Reconciling @m @bs\n"
 msgstr "Pas 1D: conciliació dels @bs reclamats múltiplement\n"
 
 #. @-expanded: File %Q (inode #%i, mod time %IM) \n
 #. @-expanded:   has %r multiply-claimed block(s), shared with %N file(s):\n
-#: e2fsck/problem.c:1231
+#: e2fsck/problem.c:1244
 msgid ""
 "File %Q (@i #%i, mod time %IM) \n"
 "  has %r @m @b(s), shared with %N file(s):\n"
@@ -2213,18 +2232,18 @@
 "  té %r @m @b(s) @m, compartits amb %N fitxer(s):\n"
 
 #. @-expanded: \t%Q (inode #%i, mod time %IM)\n
-#: e2fsck/problem.c:1237
+#: e2fsck/problem.c:1250
 msgid "\t%Q (@i #%i, mod time %IM)\n"
 msgstr "\t%Q (@i #%i, hora de modificació %IM)\n"
 
 #. @-expanded: \t<filesystem metadata>\n
-#: e2fsck/problem.c:1242
+#: e2fsck/problem.c:1255
 msgid "\t<@f metadata>\n"
 msgstr "\t<metadades del @f>\n"
 
 #. @-expanded: (There are %N inodes containing multiply-claimed blocks.)\n
 #. @-expanded: \n
-#: e2fsck/problem.c:1247
+#: e2fsck/problem.c:1260
 msgid ""
 "(There are %N @is containing @m @bs.)\n"
 "\n"
@@ -2232,7 +2251,7 @@
 
 #. @-expanded: multiply-claimed blocks already reassigned or cloned.\n
 #. @-expanded: \n
-#: e2fsck/problem.c:1252
+#: e2fsck/problem.c:1265
 msgid ""
 "@m @bs already reassigned or cloned.\n"
 "\n"
@@ -2240,349 +2259,349 @@
 "@bs reclamats múltiplement ja reassignats o clonats.\n"
 "\n"
 
-#: e2fsck/problem.c:1265
+#: e2fsck/problem.c:1278
 #, c-format
 msgid "Couldn't clone file: %m\n"
 msgstr "No s'ha pogut clonar el fitxer: %m\n"
 
 #. @-expanded: Pass 1E: Optimizing extent trees\n
-#: e2fsck/problem.c:1271
+#: e2fsck/problem.c:1284
 #, fuzzy
 msgid "Pass 1E: Optimizing @x trees\n"
 msgstr "Pas 3A: optimització dels directoris\n"
 
 #. @-expanded: Failed to optimize extent tree %p (%i): %m\n
-#: e2fsck/problem.c:1276
+#: e2fsck/problem.c:1289
 #, fuzzy, c-format
 msgid "Failed to optimize @x tree %p (%i): %m\n"
 msgstr "No s'ha pogut optimitzar el directori %q (%d): %m\n"
 
 #. @-expanded: Optimizing extent trees: 
-#: e2fsck/problem.c:1281
+#: e2fsck/problem.c:1294
 #, fuzzy
 msgid "Optimizing @x trees: "
 msgstr "S'estan optimitzant els directoris: "
 
-#: e2fsck/problem.c:1296
+#: e2fsck/problem.c:1309
 msgid "Internal error: max extent tree depth too large (%b; expected=%c).\n"
 msgstr ""
 
 #. @-expanded: inode %i extent tree (at level %b) could be shorter.  
-#: e2fsck/problem.c:1301
+#: e2fsck/problem.c:1314
 msgid "@i %i @x tree (at level %b) could be shorter.  "
 msgstr ""
 
 #. @-expanded: inode %i extent tree (at level %b) could be narrower.  
-#: e2fsck/problem.c:1306
+#: e2fsck/problem.c:1319
 msgid "@i %i @x tree (at level %b) could be narrower.  "
 msgstr ""
 
 #. @-expanded: Pass 2: Checking directory structure\n
-#: e2fsck/problem.c:1313
+#: e2fsck/problem.c:1326
 msgid "Pass 2: Checking @d structure\n"
 msgstr "Pas 2: comprovació de l'estructura del @d\n"
 
 #. @-expanded: invalid inode number for '.' in directory inode %i.\n
-#: e2fsck/problem.c:1318
+#: e2fsck/problem.c:1331
 #, c-format
 msgid "@n @i number for '.' in @d @i %i.\n"
 msgstr "El número de @i @n per «.» al @i de @d %i.\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) has invalid inode #: %Di.\n
-#: e2fsck/problem.c:1323
+#: e2fsck/problem.c:1336
 msgid "@E has @n @i #: %Di.\n"
 msgstr "L'@E té un @i @n #: %Di.\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) has deleted/unused inode %Di.  
-#: e2fsck/problem.c:1328
+#: e2fsck/problem.c:1341
 msgid "@E has @D/unused @i %Di.  "
 msgstr "@E té el @i %Di @D o sense fer servir.  "
 
 #. @-expanded: entry '%Dn' in %p (%i) is a link to '.'  
-#: e2fsck/problem.c:1333
+#: e2fsck/problem.c:1346
 msgid "@E @L to '.'  "
 msgstr "L'@E @L a «.»"
 
 #. @-expanded: entry '%Dn' in %p (%i) points to inode (%Di) located in a bad block.\n
-#: e2fsck/problem.c:1338
+#: e2fsck/problem.c:1351
 msgid "@E points to @i (%Di) located in a bad @b.\n"
 msgstr "L'@E apunta al @i (%Di) ubicat en un @b malmès.\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) is a link to directory %P (%Di).\n
-#: e2fsck/problem.c:1343
+#: e2fsck/problem.c:1356
 msgid "@E @L to @d %P (%Di).\n"
 msgstr "L'@E @L al @d %P (%Di).\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) is a link to the root inode.\n
-#: e2fsck/problem.c:1348
+#: e2fsck/problem.c:1361
 msgid "@E @L to the @r.\n"
 msgstr "L'@E @L al @r.\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) has illegal characters in its name.\n
-#: e2fsck/problem.c:1353
+#: e2fsck/problem.c:1366
 msgid "@E has illegal characters in its name.\n"
 msgstr "El nom de l'@E conté caràcters no vàlids.\n"
 
 #. @-expanded: Missing '.' in directory inode %i.\n
-#: e2fsck/problem.c:1358
+#: e2fsck/problem.c:1371
 #, c-format
 msgid "Missing '.' in @d @i %i.\n"
 msgstr "Manca el «.» en el @i de @d %i.\n"
 
 #. @-expanded: Missing '..' in directory inode %i.\n
-#: e2fsck/problem.c:1363
+#: e2fsck/problem.c:1376
 #, c-format
 msgid "Missing '..' in @d @i %i.\n"
 msgstr "Manca el «..» en el @i de @d %i.\n"
 
 #. @-expanded: First entry '%Dn' (inode=%Di) in directory inode %i (%p) should be '.'\n
-#: e2fsck/problem.c:1368
+#: e2fsck/problem.c:1381
 msgid "First @e '%Dn' (@i=%Di) in @d @i %i (%p) @s '.'\n"
 msgstr "La primera @e «%Dn» (@i=%Di) en el @i de @d %i (%p) @s «.»\n"
 
 #. @-expanded: Second entry '%Dn' (inode=%Di) in directory inode %i should be '..'\n
-#: e2fsck/problem.c:1373
+#: e2fsck/problem.c:1386
 msgid "Second @e '%Dn' (@i=%Di) in @d @i %i @s '..'\n"
 msgstr "La segona @e «%Dn» (@i=%Di) en el @i de @d %i (%p) @s «..»\n"
 
 #. @-expanded: i_faddr for inode %i (%Q) is %IF, should be zero.\n
-#: e2fsck/problem.c:1378
+#: e2fsck/problem.c:1391
 msgid "i_faddr @F %IF, @s zero.\n"
 msgstr "L'i_faddr @F %IF, @s zero.\n"
 
 #. @-expanded: i_file_acl for inode %i (%Q) is %If, should be zero.\n
-#: e2fsck/problem.c:1383
+#: e2fsck/problem.c:1396
 msgid "i_file_acl @F %If, @s zero.\n"
 msgstr "L'i_file_acl @F %If, @s zero.\n"
 
 #. @-expanded: i_size_high for inode %i (%Q) is %Id, should be zero.\n
-#: e2fsck/problem.c:1388
+#: e2fsck/problem.c:1401
 #, fuzzy
 msgid "i_size_high @F %Id, @s zero.\n"
 msgstr "L'i_fsize @F %N, @s zero.\n"
 
 #. @-expanded: i_frag for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1393
+#: e2fsck/problem.c:1406
 msgid "i_frag @F %N, @s zero.\n"
 msgstr "L'i_frag @F %N, @s zero.\n"
 
 #. @-expanded: i_fsize for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1398
+#: e2fsck/problem.c:1411
 msgid "i_fsize @F %N, @s zero.\n"
 msgstr "L'i_fsize @F %N, @s zero.\n"
 
 #. @-expanded: inode %i (%Q) has invalid mode (%Im).\n
-#: e2fsck/problem.c:1403
+#: e2fsck/problem.c:1416
 msgid "@i %i (%Q) has @n mode (%Im).\n"
 msgstr "El @i %i (%Q) té un mode @n (%Im).\n"
 
 #. @-expanded: directory inode %i, %B, offset %N: directory corrupted\n
-#: e2fsck/problem.c:1408
+#: e2fsck/problem.c:1421
 msgid "@d @i %i, %B, offset %N: @d corrupted\n"
 msgstr "El @i de @d %i, %B, desplaçament %N: el @d corromput\n"
 
 #. @-expanded: directory inode %i, %B, offset %N: filename too long\n
-#: e2fsck/problem.c:1413
+#: e2fsck/problem.c:1426
 msgid "@d @i %i, %B, offset %N: filename too long\n"
 msgstr "El @i de @d %i, %B, desplaçament %N: el nom de fitxer és massa llarg\n"
 
 #. @-expanded: directory inode %i has an unallocated %B.  
-#: e2fsck/problem.c:1418
+#: e2fsck/problem.c:1431
 msgid "@d @i %i has an unallocated %B.  "
 msgstr "El @i de @d %i té un %B no assignat.  "
 
 #. @-expanded: '.' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1423
+#: e2fsck/problem.c:1436
 #, c-format
 msgid "'.' @d @e in @d @i %i is not NULL terminated\n"
 msgstr "L'@e de @d «.» en el @i de @d %i no acaba en NUL\n"
 
 #. @-expanded: '..' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1428
+#: e2fsck/problem.c:1441
 #, c-format
 msgid "'..' @d @e in @d @i %i is not NULL terminated\n"
 msgstr "L'@e de @d «..» en el @i de @d %i no acaba en NUL\n"
 
 #. @-expanded: inode %i (%Q) is an illegal character device.\n
-#: e2fsck/problem.c:1433
+#: e2fsck/problem.c:1446
 msgid "@i %i (%Q) is an @I character @v.\n"
 msgstr "El @i %i (%Q) és un @v de caràcters @I.\n"
 
 #. @-expanded: inode %i (%Q) is an illegal block device.\n
-#: e2fsck/problem.c:1438
+#: e2fsck/problem.c:1451
 msgid "@i %i (%Q) is an @I @b @v.\n"
 msgstr "El @i %i (%Q) és un @v de blocs @I.\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) is duplicate '.' entry.\n
-#: e2fsck/problem.c:1443
+#: e2fsck/problem.c:1456
 msgid "@E is duplicate '.' @e.\n"
 msgstr "L'@E és un duplicat de l'@e «.»\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) is duplicate '..' entry.\n
-#: e2fsck/problem.c:1448
+#: e2fsck/problem.c:1461
 msgid "@E is duplicate '..' @e.\n"
 msgstr "L'@E és un duplicat de l'@e «..»\n"
 
-#: e2fsck/problem.c:1453 e2fsck/problem.c:1788
+#: e2fsck/problem.c:1466 e2fsck/problem.c:1801
 #, c-format
 msgid "Internal error: couldn't find dir_info for %i.\n"
 msgstr "S'ha produït un error intern: no s'ha trobat dir_info per a %i.\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) has rec_len of %Dr, should be %N.\n
-#: e2fsck/problem.c:1458
+#: e2fsck/problem.c:1471
 msgid "@E has rec_len of %Dr, @s %N.\n"
 msgstr "@E té el rec_len de %Dr, @s %N.\n"
 
 #. @-expanded: error allocating icount structure: %m\n
-#: e2fsck/problem.c:1463
+#: e2fsck/problem.c:1476
 #, c-format
 msgid "@A icount structure: %m\n"
 msgstr "@A de l'estructura icount: %m\n"
 
 #. @-expanded: Error iterating over directory blocks: %m\n
-#: e2fsck/problem.c:1468
+#: e2fsck/problem.c:1481
 #, c-format
 msgid "Error iterating over @d @bs: %m\n"
 msgstr "S'ha produït en iterar pels @bs de @d: %m\n"
 
 #. @-expanded: Error reading directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1473
+#: e2fsck/problem.c:1486
 msgid "Error reading @d @b %b (@i %i): %m\n"
 msgstr "S'ha produït un error en llegir el @b de @d %b (@i %i): %m\n"
 
 #. @-expanded: Error writing directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1478
+#: e2fsck/problem.c:1491
 msgid "Error writing @d @b %b (@i %i): %m\n"
 msgstr "S'ha produït un error en escriure el @b de @d %b (@i %i): %m\n"
 
 #. @-expanded: error allocating new directory block for inode %i (%s): %m\n
-#: e2fsck/problem.c:1483
+#: e2fsck/problem.c:1496
 #, c-format
 msgid "@A new @d @b for @i %i (%s): %m\n"
 msgstr "@A el nou @b de @d del @i %i (%s): %m\n"
 
 #. @-expanded: Error deallocating inode %i: %m\n
-#: e2fsck/problem.c:1488
+#: e2fsck/problem.c:1501
 #, c-format
 msgid "Error deallocating @i %i: %m\n"
 msgstr "S'ha produït un error en desassignar el @i %i: %m\n"
 
 #. @-expanded: directory entry for '.' in %p (%i) is big.\n
-#: e2fsck/problem.c:1493
+#: e2fsck/problem.c:1506
 #, c-format
 msgid "@d @e for '.' in %p (%i) is big.\n"
 msgstr "L'@e de @d per a «.» a %p (%i) és gran. \n"
 
 #. @-expanded: inode %i (%Q) is an illegal FIFO.\n
-#: e2fsck/problem.c:1498
+#: e2fsck/problem.c:1511
 msgid "@i %i (%Q) is an @I FIFO.\n"
 msgstr "El @i %i (%Q) és una FIFO no vàlida.\n"
 
 #. @-expanded: inode %i (%Q) is an illegal socket.\n
-#: e2fsck/problem.c:1503
+#: e2fsck/problem.c:1516
 msgid "@i %i (%Q) is an @I socket.\n"
 msgstr "El @i %i (%Q) és un sòcol @I.\n"
 
 #. @-expanded: Setting filetype for entry '%Dn' in %p (%i) to %N.\n
-#: e2fsck/problem.c:1508
+#: e2fsck/problem.c:1521
 msgid "Setting filetype for @E to %N.\n"
 msgstr "S'està establint el tipus de fitxer per a l'@E a %N.\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) has an incorrect filetype (was %Dt, should be %N).\n
-#: e2fsck/problem.c:1513
+#: e2fsck/problem.c:1526
 msgid "@E has an incorrect filetype (was %Dt, @s %N).\n"
 msgstr "El tipus de fitxer de l'@E és incorrecte (és %Dt, @s %N).\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) has filetype set.\n
-#: e2fsck/problem.c:1518
+#: e2fsck/problem.c:1531
 msgid "@E has filetype set.\n"
 msgstr "El tipus de fitxer de l@E està definit.\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) has a zero-length name.\n
-#: e2fsck/problem.c:1523
+#: e2fsck/problem.c:1536
 msgid "@E has a @z name.\n"
 msgstr "El nom de l'@E és de @z.\n"
 
 #. @-expanded: Symlink %Q (inode #%i) is invalid.\n
-#: e2fsck/problem.c:1528
+#: e2fsck/problem.c:1541
 msgid "Symlink %Q (@i #%i) is @n.\n"
 msgstr "L'enllaç simbòlic %Q (@i #%i) és @n.\n"
 
 #. @-expanded: extended attribute block for inode %i (%Q) is invalid (%If).\n
-#: e2fsck/problem.c:1533
+#: e2fsck/problem.c:1546
 msgid "@a @b @F @n (%If).\n"
 msgstr "El @b d'@a @F @n (%If).\n"
 
 #. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n
-#: e2fsck/problem.c:1538
+#: e2fsck/problem.c:1551
 msgid "@f contains large files, but lacks LARGE_FILE flag in @S.\n"
 msgstr ""
 "El @f conté fitxers grans, però li manca el senyalador LARGE_FILE al @S.\n"
 
 #. @-expanded: problem in HTREE directory inode %d: %B not referenced\n
-#: e2fsck/problem.c:1543
+#: e2fsck/problem.c:1556
 msgid "@p @h %d: %B not referenced\n"
 msgstr "S'ha produït un @p al @h %d: %B no està referenciat\n"
 
 #. @-expanded: problem in HTREE directory inode %d: %B referenced twice\n
-#: e2fsck/problem.c:1548
+#: e2fsck/problem.c:1561
 msgid "@p @h %d: %B referenced twice\n"
 msgstr "S'ha produït un @p al @h %d: %B està referenciat dues vegades\n"
 
 #. @-expanded: problem in HTREE directory inode %d: %B has bad min hash\n
-#: e2fsck/problem.c:1553
+#: e2fsck/problem.c:1566
 msgid "@p @h %d: %B has bad min hash\n"
 msgstr "S'ha produït un @p en el @h %d: %B té un resum min. erroni\n"
 
 #. @-expanded: problem in HTREE directory inode %d: %B has bad max hash\n
-#: e2fsck/problem.c:1558
+#: e2fsck/problem.c:1571
 msgid "@p @h %d: %B has bad max hash\n"
 msgstr "S'ha produït un @p al @h %d: %B té un resum max. erroni\n"
 
 #. @-expanded: invalid HTREE directory inode %d (%q).  
-#: e2fsck/problem.c:1563
+#: e2fsck/problem.c:1576
 msgid "@n @h %d (%q).  "
 msgstr "el @h %d (%q) és @n.  "
 
 #. @-expanded: problem in HTREE directory inode %d (%q): bad block number %b.\n
-#: e2fsck/problem.c:1567
+#: e2fsck/problem.c:1580
 msgid "@p @h %d (%q): bad @b number %b.\n"
 msgstr "S'ha produït un @p al @h %d (q): número de @b %b incorrecte.\n"
 
 #. @-expanded: problem in HTREE directory inode %d: root node is invalid\n
-#: e2fsck/problem.c:1577
+#: e2fsck/problem.c:1590
 #, c-format
 msgid "@p @h %d: root node is @n\n"
 msgstr "S'ha produït un @p al @h %d:el node arrel no és vàlid\n"
 
 #. @-expanded: problem in HTREE directory inode %d: %B has invalid limit (%N)\n
-#: e2fsck/problem.c:1582
+#: e2fsck/problem.c:1595
 msgid "@p @h %d: %B has @n limit (%N)\n"
 msgstr "S'ha produït un @p al @h %d: %B té un límit (%N) @n\n"
 
 #. @-expanded: problem in HTREE directory inode %d: %B has invalid count (%N)\n
-#: e2fsck/problem.c:1587
+#: e2fsck/problem.c:1600
 msgid "@p @h %d: %B has @n count (%N)\n"
 msgstr "S'ha produït un @p al @h %d: %B té un comptador (%N) @n\n"
 
 #. @-expanded: problem in HTREE directory inode %d: %B has an unordered hash table\n
-#: e2fsck/problem.c:1592
+#: e2fsck/problem.c:1605
 msgid "@p @h %d: %B has an unordered hash table\n"
 msgstr "S'ha produït un @p al @h %d: %B té una taula de resum desordenada\n"
 
 #. @-expanded: problem in HTREE directory inode %d: %B has invalid depth (%N)\n
-#: e2fsck/problem.c:1597
+#: e2fsck/problem.c:1610
 msgid "@p @h %d: %B has @n depth (%N)\n"
 msgstr "S'ha produït un @p al @h %d: %B té una profunditat (%N) @n\n"
 
 #. @-expanded: Duplicate entry '%Dn' in %p (%i) found.  
-#: e2fsck/problem.c:1602
+#: e2fsck/problem.c:1615
 msgid "Duplicate @E found.  "
 msgstr "S'ha trobat una @E duplicada.  "
 
 #. @-expanded: entry '%Dn' in %p (%i) has a non-unique filename.\n
 #. @-expanded: Rename to %s
-#: e2fsck/problem.c:1607
+#: e2fsck/problem.c:1620
 #, no-c-format
 msgid ""
 "@E has a non-unique filename.\n"
@@ -2594,7 +2613,7 @@
 #. @-expanded: Duplicate entry '%Dn' found.\n
 #. @-expanded: \tMarking %p (%i) to be rebuilt.\n
 #. @-expanded: \n
-#: e2fsck/problem.c:1612
+#: e2fsck/problem.c:1625
 msgid ""
 "Duplicate @e '%Dn' found.\n"
 "\tMarking %p (%i) to be rebuilt.\n"
@@ -2605,158 +2624,158 @@
 "\n"
 
 #. @-expanded: i_blocks_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1617
+#: e2fsck/problem.c:1630
 msgid "i_blocks_hi @F %N, @s zero.\n"
 msgstr "L'i_blocks_hi @F %N, @s zero.\n"
 
 #. @-expanded: Unexpected block in HTREE directory inode %d (%q).\n
-#: e2fsck/problem.c:1622
+#: e2fsck/problem.c:1635
 msgid "Unexpected @b in @h %d (%q).\n"
 msgstr "No s'esperava el @b al @h %d (%q).\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) references inode %Di in group %g where _INODE_UNINIT is set.\n
-#: e2fsck/problem.c:1626
+#: e2fsck/problem.c:1639
 msgid "@E references @i %Di in @g %g where _INODE_UNINIT is set.\n"
 msgstr ""
 "@E que fa referència al @i %Di a @g %g on _INODE_UNINIT està activat.\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) references inode %Di found in group %g's unused inodes area.\n
-#: e2fsck/problem.c:1631
+#: e2fsck/problem.c:1644
 msgid "@E references @i %Di found in @g %g's unused inodes area.\n"
 msgstr ""
 "@E que fa referència al @i %Di ha trobat a @g %g's àrees de nodes-i sense "
 "fer servir .\n"
 
 #. @-expanded: i_file_acl_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1636
+#: e2fsck/problem.c:1649
 msgid "i_file_acl_hi @F %N, @s zero.\n"
 msgstr "i_file_acl_hi @F %N, @s zero.\n"
 
 #. @-expanded: problem in HTREE directory inode %d: root node fails checksum.\n
-#: e2fsck/problem.c:1641
+#: e2fsck/problem.c:1654
 #, fuzzy, c-format
 msgid "@p @h %d: root node fails checksum.\n"
 msgstr "S'ha produït un @p al @h %d:el node arrel no és vàlid\n"
 
 #. @-expanded: problem in HTREE directory inode %d: internal node fails checksum.\n
-#: e2fsck/problem.c:1646
+#: e2fsck/problem.c:1659
 #, fuzzy, c-format
 msgid "@p @h %d: internal node fails checksum.\n"
 msgstr "S'ha produït un @p al @h %d:el node arrel no és vàlid\n"
 
 #. @-expanded: directory inode %i, %B, offset %N: directory has no checksum.\n
-#: e2fsck/problem.c:1651
+#: e2fsck/problem.c:1664
 #, fuzzy
 msgid "@d @i %i, %B, offset %N: @d has no checksum.\n"
 msgstr "El @i de @d %i, %B, desplaçament %N: el @d corromput\n"
 
 #. @-expanded: directory inode %i, %B: directory passes checks but fails checksum.\n
-#: e2fsck/problem.c:1656
+#: e2fsck/problem.c:1669
 msgid "@d @i %i, %B: @d passes checks but fails checksum.\n"
 msgstr ""
 
 #. @-expanded: Inline directory inode %i size (%N) must be a multiple of 4.\n
-#: e2fsck/problem.c:1661
+#: e2fsck/problem.c:1674
 msgid "Inline @d @i %i size (%N) must be a multiple of 4.\n"
 msgstr ""
 
 #. @-expanded: Fixing size of inline directory inode %i failed.\n
-#: e2fsck/problem.c:1666
+#: e2fsck/problem.c:1679
 #, c-format
 msgid "Fixing size of inline @d @i %i failed.\n"
 msgstr ""
 
 #. @-expanded: Encrypted entry '%Dn' in %p (%i) is too short.\n
-#: e2fsck/problem.c:1671
+#: e2fsck/problem.c:1684
 msgid "Encrypted @E is too short.\n"
 msgstr ""
 
 #. @-expanded: Pass 3: Checking directory connectivity\n
-#: e2fsck/problem.c:1678
+#: e2fsck/problem.c:1691
 msgid "Pass 3: Checking @d connectivity\n"
 msgstr "Pas 3: comprovació de la connectivitat dels @ds\n"
 
 #. @-expanded: root inode not allocated.  
-#: e2fsck/problem.c:1683
+#: e2fsck/problem.c:1696
 msgid "@r not allocated.  "
 msgstr "El @r no està assignat.  "
 
 #. @-expanded: No room in lost+found directory.  
-#: e2fsck/problem.c:1688
+#: e2fsck/problem.c:1701
 msgid "No room in @l @d.  "
 msgstr "No hi ha prou espai en el @d @l.  "
 
 #. @-expanded: Unconnected directory inode %i (%p)\n
-#: e2fsck/problem.c:1693
+#: e2fsck/problem.c:1706
 #, c-format
 msgid "Unconnected @d @i %i (%p)\n"
 msgstr "@i de @d %i desconnectat (%p)\n"
 
 #. @-expanded: /lost+found not found.  
-#: e2fsck/problem.c:1698
+#: e2fsck/problem.c:1711
 msgid "/@l not found.  "
 msgstr "No s'ha trobat /@l.  "
 
 #. @-expanded: '..' in %Q (%i) is %P (%j), should be %q (%d).\n
-#: e2fsck/problem.c:1703
+#: e2fsck/problem.c:1716
 msgid "'..' in %Q (%i) is %P (%j), @s %q (%d).\n"
 msgstr "«..» a %Q (%i) és %P (%j), @s %q (%d).\n"
 
 #. @-expanded: Bad or non-existent /lost+found.  Cannot reconnect.\n
-#: e2fsck/problem.c:1708
+#: e2fsck/problem.c:1721
 msgid "Bad or non-existent /@l.  Cannot reconnect.\n"
 msgstr "El directori /@l no existeix o està malmès.  No es pot reconnectar.\n"
 
 #. @-expanded: Could not expand /lost+found: %m\n
-#: e2fsck/problem.c:1713
+#: e2fsck/problem.c:1726
 #, c-format
 msgid "Could not expand /@l: %m\n"
 msgstr "No s'ha pogut expandir el directori /@l: %m\n"
 
-#: e2fsck/problem.c:1718
+#: e2fsck/problem.c:1731
 #, c-format
 msgid "Could not reconnect %i: %m\n"
 msgstr "No s'ha pogut reconnectar %i: %m\n"
 
 #. @-expanded: Error while trying to find /lost+found: %m\n
-#: e2fsck/problem.c:1723
+#: e2fsck/problem.c:1736
 #, c-format
 msgid "Error while trying to find /@l: %m\n"
 msgstr "S'ha produït un error en cercar el directori /@l: %m\n"
 
 #. @-expanded: ext2fs_new_block: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1728
+#: e2fsck/problem.c:1741
 #, c-format
 msgid "ext2fs_new_@b: %m while trying to create /@l @d\n"
 msgstr "ext2fs_new_block: %m en intentar crear el @d /@l\n"
 
 #. @-expanded: ext2fs_new_inode: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1733
+#: e2fsck/problem.c:1746
 #, c-format
 msgid "ext2fs_new_@i: %m while trying to create /@l @d\n"
 msgstr "ext2fs_new_inode: %m en intentar crear el @d /@l\n"
 
 #. @-expanded: ext2fs_new_dir_block: %m while creating new directory block\n
-#: e2fsck/problem.c:1738
+#: e2fsck/problem.c:1751
 #, c-format
 msgid "ext2fs_new_dir_@b: %m while creating new @d @b\n"
 msgstr "ext2fs_new_dir_block: %m en crear el @b de @d nou\n"
 
 #. @-expanded: ext2fs_write_dir_block: %m while writing the directory block for /lost+found\n
-#: e2fsck/problem.c:1743
+#: e2fsck/problem.c:1756
 #, c-format
 msgid "ext2fs_write_dir_@b: %m while writing the @d @b for /@l\n"
 msgstr "ext2fs_new_dir_block: %m en crear el @b de @d nou per a /@l\n"
 
 #. @-expanded: Error while adjusting inode count on inode %i\n
-#: e2fsck/problem.c:1748
+#: e2fsck/problem.c:1761
 #, c-format
 msgid "Error while adjusting @i count on @i %i\n"
 msgstr "S'ha produït un error en ajustar el nombre de nodes-i al @i %i\n"
 
 #. @-expanded: Couldn't fix parent of inode %i: %m\n
 #. @-expanded: \n
-#: e2fsck/problem.c:1753
+#: e2fsck/problem.c:1766
 #, c-format
 msgid ""
 "Couldn't fix parent of @i %i: %m\n"
@@ -2767,7 +2786,7 @@
 
 #. @-expanded: Couldn't fix parent of inode %i: Couldn't find parent directory entry\n
 #. @-expanded: \n
-#: e2fsck/problem.c:1758
+#: e2fsck/problem.c:1771
 #, c-format
 msgid ""
 "Couldn't fix parent of @i %i: Couldn't find parent @d @e\n"
@@ -2777,41 +2796,41 @@
 "\n"
 
 #. @-expanded: Error creating root directory (%s): %m\n
-#: e2fsck/problem.c:1768
+#: e2fsck/problem.c:1781
 #, c-format
 msgid "Error creating root @d (%s): %m\n"
 msgstr "S'ha produït un error en crear el @d arrel (%s): %m\n"
 
 #. @-expanded: Error creating /lost+found directory (%s): %m\n
-#: e2fsck/problem.c:1773
+#: e2fsck/problem.c:1786
 #, c-format
 msgid "Error creating /@l @d (%s): %m\n"
 msgstr "S'ha produït un error en crear el @d /@l (%s): %m\n"
 
 #. @-expanded: root inode is not a directory; aborting.\n
-#: e2fsck/problem.c:1778
+#: e2fsck/problem.c:1791
 msgid "@r is not a @d; aborting.\n"
 msgstr "el @r no és un @d; s'interromprà.\n"
 
 #. @-expanded: Cannot proceed without a root inode.\n
-#: e2fsck/problem.c:1783
+#: e2fsck/problem.c:1796
 msgid "Cannot proceed without a @r.\n"
 msgstr "No es pot continuar sense un @r.\n"
 
 #. @-expanded: /lost+found is not a directory (ino=%i)\n
-#: e2fsck/problem.c:1793
+#: e2fsck/problem.c:1806
 #, c-format
 msgid "/@l is not a @d (ino=%i)\n"
 msgstr "/@l no és un @d (node-i=%i)\n"
 
 #. @-expanded: /lost+found has inline data\n
-#: e2fsck/problem.c:1798
+#: e2fsck/problem.c:1811
 msgid "/@l has inline data\n"
 msgstr ""
 
 #. @-expanded: Cannot allocate space for /lost+found.\n
 #. @-expanded: Place lost files in root directory instead
-#: e2fsck/problem.c:1803
+#: e2fsck/problem.c:1816
 msgid ""
 "Cannot allocate space for /@l.\n"
 "Place lost files in root directory instead"
@@ -2820,7 +2839,7 @@
 #. @-expanded: Insufficient space to recover lost files!\n
 #. @-expanded: Move data off the filesystem and re-run e2fsck.\n
 #. @-expanded: \n
-#: e2fsck/problem.c:1808
+#: e2fsck/problem.c:1821
 msgid ""
 "Insufficient space to recover lost files!\n"
 "Move data off the @f and re-run e2fsck.\n"
@@ -2828,53 +2847,53 @@
 msgstr ""
 
 #. @-expanded: /lost+found is encrypted\n
-#: e2fsck/problem.c:1813
+#: e2fsck/problem.c:1826
 #, fuzzy
 msgid "/@l is encrypted\n"
 msgstr "La imatge (%s) està xifrada\n"
 
-#: e2fsck/problem.c:1820
+#: e2fsck/problem.c:1833
 msgid "Pass 3A: Optimizing directories\n"
 msgstr "Pas 3A: optimització dels directoris\n"
 
-#: e2fsck/problem.c:1825
+#: e2fsck/problem.c:1838
 #, c-format
 msgid "Failed to create dirs_to_hash iterator: %m\n"
 msgstr "No s'ha pogut crear l'iterador dirs_to_hash: %m\n"
 
-#: e2fsck/problem.c:1830
+#: e2fsck/problem.c:1843
 msgid "Failed to optimize directory %q (%d): %m\n"
 msgstr "No s'ha pogut optimitzar el directori %q (%d): %m\n"
 
-#: e2fsck/problem.c:1835
+#: e2fsck/problem.c:1848
 msgid "Optimizing directories: "
 msgstr "S'estan optimitzant els directoris: "
 
-#: e2fsck/problem.c:1852
+#: e2fsck/problem.c:1865
 msgid "Pass 4: Checking reference counts\n"
 msgstr "Pas 4: comprovació dels nombres de referències\n"
 
 #. @-expanded: unattached zero-length inode %i.  
-#: e2fsck/problem.c:1857
+#: e2fsck/problem.c:1870
 #, c-format
 msgid "@u @z @i %i.  "
 msgstr "@i de @z %i @u.  "
 
 #. @-expanded: unattached inode %i\n
-#: e2fsck/problem.c:1862
+#: e2fsck/problem.c:1875
 #, c-format
 msgid "@u @i %i\n"
 msgstr "@i %i @u\n"
 
 #. @-expanded: inode %i ref count is %Il, should be %N.  
-#: e2fsck/problem.c:1867
+#: e2fsck/problem.c:1880
 msgid "@i %i ref count is %Il, @s %N.  "
 msgstr "el nombre de referències del @i %s és %Il, @s %N."
 
 #. @-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
-#: e2fsck/problem.c:1871
+#: e2fsck/problem.c:1884
 msgid ""
 "WARNING: PROGRAMMING BUG IN E2FSCK!\n"
 "\tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n"
@@ -2887,70 +2906,75 @@
 "coincidir!\n"
 
 #. @-expanded: extended attribute inode %i ref count is %N, should be %n. 
-#: e2fsck/problem.c:1878
+#: e2fsck/problem.c:1891
 #, fuzzy
 msgid "@a @i %i ref count is %N, @s %n. "
 msgstr "el nombre de referències del @i %s és %Il, @s %N."
 
+#. @-expanded: directory exceeds max links, but no DIR_NLINK feature in superblock.\n
+#: e2fsck/problem.c:1896
+msgid "@d exceeds max links, but no DIR_NLINK feature in @S.\n"
+msgstr ""
+
 # FIXME
 #. @-expanded: Pass 5: Checking group summary information\n
-#: e2fsck/problem.c:1885
+#: e2fsck/problem.c:1903
 msgid "Pass 5: Checking @g summary information\n"
 msgstr "Pas 5: comprovació del resum de la informació del @g\n"
 
 #. @-expanded: Padding at end of inode bitmap is not set. 
-#: e2fsck/problem.c:1890
+#: e2fsck/problem.c:1908
 msgid "Padding at end of @i @B is not set. "
 msgstr "El farciment al final del @B del @i no està habilitat. "
 
 #. @-expanded: Padding at end of block bitmap is not set. 
-#: e2fsck/problem.c:1895
+#: e2fsck/problem.c:1913
 msgid "Padding at end of @b @B is not set. "
 msgstr "El farciment al final del @B del @b no està habilitat. "
 
 #. @-expanded: block bitmap differences: 
-#: e2fsck/problem.c:1900
+#: e2fsck/problem.c:1918
 msgid "@b @B differences: "
 msgstr "Diferències del @B del @b: "
 
 #. @-expanded: inode bitmap differences: 
-#: e2fsck/problem.c:1920
+#: e2fsck/problem.c:1938
 msgid "@i @B differences: "
 msgstr "Diferències del @B del @i: "
 
 #. @-expanded: Free inodes count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:1940
+#: e2fsck/problem.c:1958
 msgid "Free @is count wrong for @g #%g (%i, counted=%j).\n"
 msgstr ""
 "El nombre de nodes-i lliures no és correcte per al @g núm. %g (%i, recompte="
 "%j).\n"
 
 #. @-expanded: Directories count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:1945
+#: e2fsck/problem.c:1963
 msgid "Directories count wrong for @g #%g (%i, counted=%j).\n"
 msgstr ""
 "El nombre de directoris no és correcte per al @g núm. %g (%i, recompte=%j).\n"
 
 #. @-expanded: Free inodes count wrong (%i, counted=%j).\n
-#: e2fsck/problem.c:1950
+#: e2fsck/problem.c:1968
 msgid "Free @is count wrong (%i, counted=%j).\n"
 msgstr "El nombre de nodes-i lliures no és correcte (%i, recompte=%j).\n"
 
 #. @-expanded: Free blocks count wrong for group #%g (%b, counted=%c).\n
-#: e2fsck/problem.c:1955
+#: e2fsck/problem.c:1973
 msgid "Free @bs count wrong for @g #%g (%b, counted=%c).\n"
 msgstr ""
 "El nombre de @bs lliures no és correcte per al @g núm. %g (%i, recompte="
 "%j).\n"
 
 #. @-expanded: Free blocks count wrong (%b, counted=%c).\n
-#: e2fsck/problem.c:1960
+#: e2fsck/problem.c:1978
 msgid "Free @bs count wrong (%b, counted=%c).\n"
 msgstr "El nombre de @bs lliures no és correcte (%i, recompte=%j).\n"
 
 #. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap 
 #. @-expanded: endpoints (%i, %j)\n
-#: e2fsck/problem.c:1965
+#: e2fsck/problem.c:1983
 msgid ""
 "PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B "
 "endpoints (%i, %j)\n"
@@ -2958,24 +2982,24 @@
 "ERROR DE PROGRAMACIÓ: Els finals del @B (%b, %c) del @f (#%N) no "
 "coincideixen amb els finals del @B (%i, %j) calculats\n"
 
-#: e2fsck/problem.c:1971
+#: e2fsck/problem.c:1989
 msgid "Internal error: fudging end of bitmap (%N)\n"
 msgstr "Error intern: es falseja el final del mapa de bits (%N)\n"
 
 #. @-expanded: Error copying in replacement inode bitmap: %m\n
-#: e2fsck/problem.c:1976
+#: e2fsck/problem.c:1994
 #, c-format
 msgid "Error copying in replacement @i @B: %m\n"
 msgstr "S'ha produït un error copiant en reemplaçar el @B del @i: %m\n"
 
 #. @-expanded: Error copying in replacement block bitmap: %m\n
-#: e2fsck/problem.c:1981
+#: e2fsck/problem.c:1999
 #, c-format
 msgid "Error copying in replacement @b @B: %m\n"
 msgstr "S'ha produït un error copiant en reemplaçar el @B del @b: %m\n"
 
 #. @-expanded: group %g block(s) in use but group is marked BLOCK_UNINIT\n
-#: e2fsck/problem.c:2006
+#: e2fsck/problem.c:2024
 #, c-format
 msgid "@g %g @b(s) in use but @g is marked BLOCK_UNINIT\n"
 msgstr ""
@@ -2983,7 +3007,7 @@
 "BLOCK_UNINIT\n"
 
 #. @-expanded: group %g inode(s) in use but group is marked INODE_UNINIT\n
-#: e2fsck/problem.c:2011
+#: e2fsck/problem.c:2029
 #, c-format
 msgid "@g %g @i(s) in use but @g is marked INODE_UNINIT\n"
 msgstr ""
@@ -2991,61 +3015,61 @@
 "INODE_UNINIT\n"
 
 #. @-expanded: group %g inode bitmap does not match checksum.\n
-#: e2fsck/problem.c:2016
+#: e2fsck/problem.c:2034
 #, c-format
 msgid "@g %g @i @B does not match checksum.\n"
 msgstr ""
 
 #. @-expanded: group %g block bitmap does not match checksum.\n
-#: e2fsck/problem.c:2021
+#: e2fsck/problem.c:2039
 #, c-format
 msgid "@g %g @b @B does not match checksum.\n"
 msgstr ""
 
 #. @-expanded: Recreate journal
-#: e2fsck/problem.c:2028
+#: e2fsck/problem.c:2046
 msgid "Recreate @j"
 msgstr "Torna a crear el @j"
 
-#: e2fsck/problem.c:2033
+#: e2fsck/problem.c:2051
 msgid "Update quota info for quota type %N"
 msgstr "Actualitza la informació de la quota de tipus %N"
 
 #. @-expanded: Error setting block group checksum info: %m\n
-#: e2fsck/problem.c:2038
+#: e2fsck/problem.c:2056
 #, c-format
 msgid "Error setting @b @g checksum info: %m\n"
 msgstr ""
 "S'ha produït un error en establir la informació de suma de verificació del "
 "@g de @b: %m\n"
 
-#: e2fsck/problem.c:2043
+#: e2fsck/problem.c:2061
 #, c-format
 msgid "Error writing file system info: %m\n"
 msgstr "S'ha produït un error quant s'escrivia la informació del sistema: %m\n"
 
-#: e2fsck/problem.c:2048
+#: e2fsck/problem.c:2066
 #, c-format
 msgid "Error flushing writes to storage device: %m\n"
 msgstr ""
 "S'ha produït un error quan es buidaven les escriptures del dispositiu "
 "d'emmagatzemament: %m\n"
 
-#: e2fsck/problem.c:2053
+#: e2fsck/problem.c:2071
 #, fuzzy
 msgid "Error writing quota info for quota type %N: %m\n"
 msgstr "Actualitza la informació de la quota de tipus %N"
 
-#: e2fsck/problem.c:2174
+#: e2fsck/problem.c:2194
 #, c-format
 msgid "Unhandled error code (0x%x)!\n"
 msgstr "S'ha produït un error amb un codi no gestionat (0x%x)\n"
 
-#: e2fsck/problem.c:2300 e2fsck/problem.c:2304
+#: e2fsck/problem.c:2320 e2fsck/problem.c:2324
 msgid "IGNORED"
 msgstr "IGNORAT"
 
-#: e2fsck/quota.c:33 e2fsck/quota.c:46
+#: e2fsck/quota.c:30 e2fsck/quota.c:37 e2fsck/quota.c:50 e2fsck/quota.c:59
 msgid "in move_quota_inode"
 msgstr ""
 
@@ -3067,21 +3091,21 @@
 msgid "while doing inode scan"
 msgstr "en fer l'exploració dels nodes-i"
 
-#: e2fsck/super.c:207
+#: e2fsck/super.c:224
 #, fuzzy, c-format
 msgid "while calling ext2fs_block_iterate for inode %u"
 msgstr "en fer la crida a ext2fs_block_iterate per al node-i %d"
 
-#: e2fsck/super.c:230
+#: e2fsck/super.c:249
 #, fuzzy, c-format
 msgid "while calling ext2fs_adjust_ea_refcount2 for inode %u"
 msgstr "en fer la crida a ext2fs_adjust_ea_refcount2 per al node-i %d"
 
-#: e2fsck/super.c:291
+#: e2fsck/super.c:374
 msgid "Truncating"
 msgstr "Truncament"
 
-#: e2fsck/super.c:292
+#: e2fsck/super.c:375
 msgid "Clearing"
 msgstr "Neteja"
 
@@ -3280,7 +3304,7 @@
 msgstr[0] "%12u fitxer\n"
 msgstr[1] "%12u fitxers\n"
 
-#: e2fsck/unix.c:237 misc/badblocks.c:1002 misc/tune2fs.c:3020 misc/util.c:126
+#: e2fsck/unix.c:237 misc/badblocks.c:1002 misc/tune2fs.c:3022 misc/util.c:126
 #: resize/main.c:354
 #, c-format
 msgid "while determining whether %s is mounted."
@@ -3336,77 +3360,81 @@
 msgid "check aborted.\n"
 msgstr "s'ha interromput la comprovació.\n"
 
-#: e2fsck/unix.c:373
+#: e2fsck/unix.c:374
 msgid " contains a file system with errors"
 msgstr " conté un sistema de fitxers amb errors"
 
-#: e2fsck/unix.c:375
+#: e2fsck/unix.c:376
 msgid " was not cleanly unmounted"
 msgstr " no es va desmuntar correctament"
 
-#: e2fsck/unix.c:377
+#: e2fsck/unix.c:378
 msgid " primary superblock features different from backup"
 msgstr ""
 " les característiques del superbloc primari són diferents de les del de la "
 "còpia de seguretat"
 
-#: e2fsck/unix.c:381
+#: e2fsck/unix.c:382
 #, c-format
 msgid " has been mounted %u times without being checked"
 msgstr " s'ha muntat %u vegades sense haver estat comprovat"
 
-#: e2fsck/unix.c:388
+#: e2fsck/unix.c:389
 msgid " has filesystem last checked time in the future"
 msgstr ""
 "té la darrera hora de comprovació del sistema de fitxers és en el futur"
 
-#: e2fsck/unix.c:394
+#: e2fsck/unix.c:395
 #, c-format
 msgid " has gone %u days without being checked"
 msgstr " no s'ha comprovat des de fa %u dies"
 
 #: e2fsck/unix.c:403
+msgid "ignoring check interval, broken_system_clock set\n"
+msgstr ""
+
+#: e2fsck/unix.c:409
 msgid ", check forced.\n"
 msgstr ", es forçarà la comprovació.\n"
 
-#: e2fsck/unix.c:436
+#: e2fsck/unix.c:442
 #, c-format
 msgid "%s: clean, %u/%u files, %llu/%llu blocks"
 msgstr "%s: net, %u/%u fitxers, %llu/%llu blocs"
 
-#: e2fsck/unix.c:456
+#: e2fsck/unix.c:462
 msgid " (check deferred; on battery)"
 msgstr " (s'ha ajornat la comprovació; s'està utilitzant la bateria)"
 
-#: e2fsck/unix.c:459
+#: e2fsck/unix.c:465
 msgid " (check after next mount)"
 msgstr " (es comprovarà després del muntatge següent)"
 
-#: e2fsck/unix.c:461
+#: e2fsck/unix.c:467
 #, c-format
 msgid " (check in %ld mounts)"
 msgstr " (es comprovarà en %ld muntades)"
 
-#: e2fsck/unix.c:611
+#: e2fsck/unix.c:617
 #, c-format
 msgid "ERROR: Couldn't open /dev/null (%s)\n"
 msgstr "ERROR: no s'ha pogut obrir /dev/null (%s)\n"
 
-#: e2fsck/unix.c:681
+#: e2fsck/unix.c:688
 msgid "Invalid EA version.\n"
 msgstr "La versió dels atributs ampliats no és vàlida.\n"
 
-#: e2fsck/unix.c:694
+#: e2fsck/unix.c:701
 #, fuzzy
 msgid "Invalid readahead buffer size.\n"
 msgstr "Paràmetre de canvi de mida no vàlid: %s\n"
 
-#: e2fsck/unix.c:739
+#: e2fsck/unix.c:750
 #, c-format
 msgid "Unknown extended option: %s\n"
 msgstr "Es desconeix l'opció ampliada: %s\n"
 
-#: e2fsck/unix.c:747
+#: e2fsck/unix.c:758
 #, fuzzy
 msgid ""
 "\n"
@@ -3425,15 +3453,15 @@
 "\tsuperblock=<número de superbloc>\n"
 "\tblocksize=<mida del bloc>\n"
 
-#: e2fsck/unix.c:751
+#: e2fsck/unix.c:762
 msgid "\tea_ver=<ea_version (1 or 2)>\n"
 msgstr ""
 
-#: e2fsck/unix.c:760
+#: e2fsck/unix.c:771
 msgid "\treadahead_kb=<buffer size>\n"
 msgstr ""
 
-#: e2fsck/unix.c:771
+#: e2fsck/unix.c:783
 #, c-format
 msgid ""
 "Syntax error in e2fsck config file (%s, line #%d)\n"
@@ -3443,58 +3471,58 @@
 "%d)\n"
 "\t%s\n"
 
-#: e2fsck/unix.c:844
+#: e2fsck/unix.c:856
 #, c-format
 msgid "Error validating file descriptor %d: %s\n"
 msgstr "S'ha produït un error en validar el descriptor de fitxer %d: %s\n"
 
-#: e2fsck/unix.c:848
+#: e2fsck/unix.c:860
 msgid "Invalid completion information file descriptor"
 msgstr "El fitxer descriptor de la informació de completat no és vàlid"
 
-#: e2fsck/unix.c:863
+#: e2fsck/unix.c:875
 msgid "Only one of the options -p/-a, -n or -y may be specified."
 msgstr ""
 "Només es pot especificar una de les opcions -p/-a, -n o -y a la vegada."
 
-#: e2fsck/unix.c:884
+#: e2fsck/unix.c:896
 #, c-format
 msgid "The -t option is not supported on this version of e2fsck.\n"
 msgstr "L'opció -t no està implementada en aquesta versió de l'e2fsck.\n"
 
-#: e2fsck/unix.c:915 e2fsck/unix.c:992 misc/e2initrd_helper.c:330
-#: misc/tune2fs.c:1739 misc/tune2fs.c:2034 misc/tune2fs.c:2052
+#: e2fsck/unix.c:927 e2fsck/unix.c:1005 misc/e2initrd_helper.c:330
+#: misc/tune2fs.c:1741 misc/tune2fs.c:2036 misc/tune2fs.c:2054
 #, c-format
 msgid "Unable to resolve '%s'"
 msgstr "No s'ha pogut resoldre «%s»"
 
-#: e2fsck/unix.c:971
+#: e2fsck/unix.c:984
 msgid "The -n and -D options are incompatible."
 msgstr "Les opcions -n i -D no són compatibles."
 
-#: e2fsck/unix.c:976
+#: e2fsck/unix.c:989
 msgid "The -n and -c options are incompatible."
 msgstr "Les opcions -n i -c no són compatibles"
 
-#: e2fsck/unix.c:981
+#: e2fsck/unix.c:994
 msgid "The -n and -l/-L options are incompatible."
 msgstr "Les opcions -n i -l/-L no són compatibles."
 
-#: e2fsck/unix.c:1005
+#: e2fsck/unix.c:1018
 #, fuzzy
 msgid "The -D and -E fixes_only options are incompatible."
 msgstr "Les opcions -n i -D no són compatibles."
 
-#: e2fsck/unix.c:1011
+#: e2fsck/unix.c:1024
 #, fuzzy
 msgid "The -E bmap2extent and fixes_only options are incompatible."
 msgstr "Les opcions -n i -D no són compatibles."
 
-#: e2fsck/unix.c:1075
+#: e2fsck/unix.c:1088
 msgid "The -c and the -l/-L options may not be both used at the same time.\n"
 msgstr "No es poden utilitzar les opcions -c i -l/-L al mateix temps.\n"
 
-#: e2fsck/unix.c:1122
+#: e2fsck/unix.c:1135
 #, c-format
 msgid ""
 "E2FSCK_JBD_DEBUG \"%s\" not an integer\n"
@@ -3503,7 +3531,7 @@
 "E2FSCK_JBD_DEBUG «%s» no és un enter\n"
 "\n"
 
-#: e2fsck/unix.c:1131
+#: e2fsck/unix.c:1144
 #, c-format
 msgid ""
 "\n"
@@ -3514,7 +3542,7 @@
 "L'argument no numèric de -%c no és vàlid («%s»)\n"
 "\n"
 
-#: e2fsck/unix.c:1222
+#: e2fsck/unix.c:1235
 #, c-format
 msgid ""
 "MMP interval is %u seconds and total wait time is %u seconds. Please "
@@ -3523,27 +3551,28 @@
 "L'interval MMP és de %u segons i el temps d'espera total és de %u segons. "
 "Espereu si us plau...\n"
 
-#: e2fsck/unix.c:1239 e2fsck/unix.c:1244
+#: e2fsck/unix.c:1252 e2fsck/unix.c:1257
 msgid "while checking MMP block"
 msgstr "mentre es comprovava el bloc MMP"
 
-#: e2fsck/unix.c:1246 misc/tune2fs.c:2934
+#: e2fsck/unix.c:1259
+#, fuzzy, c-format
 msgid ""
 "If you are sure the filesystem is not in use on any node, run:\n"
-"'tune2fs -f -E clear_mmp {device}'\n"
+"'tune2fs -f -E clear_mmp %s'\n"
 msgstr ""
 "Si esteu segur que el sistema de fitxers no s'està fent servir a cap node, "
 "executeu:\n"
 "'tune2fs -f -E clear_mmp {dispositiu}'\n"
 
-#: e2fsck/unix.c:1261
+#: e2fsck/unix.c:1275
 #, fuzzy
 msgid "while reading MMP block"
 msgstr "en llegir el bloc MMP."
 
-#: e2fsck/unix.c:1281 e2fsck/unix.c:1333 misc/e2undo.c:230 misc/e2undo.c:275
-#: misc/mke2fs.c:2603 misc/mke2fs.c:2654 misc/tune2fs.c:2752
-#: misc/tune2fs.c:2797 resize/main.c:188 resize/main.c:233
+#: e2fsck/unix.c:1295 e2fsck/unix.c:1347 misc/e2undo.c:236 misc/e2undo.c:281
+#: misc/mke2fs.c:2613 misc/mke2fs.c:2664 misc/tune2fs.c:2754
+#: misc/tune2fs.c:2799 resize/main.c:188 resize/main.c:233
 #, c-format
 msgid ""
 "Overwriting existing filesystem; this can be undone using the command:\n"
@@ -3555,57 +3584,57 @@
 "    e2undo %s %s\n"
 "\n"
 
-#: e2fsck/unix.c:1322 misc/e2undo.c:264 misc/mke2fs.c:2643 misc/tune2fs.c:2786
+#: e2fsck/unix.c:1336 misc/e2undo.c:270 misc/mke2fs.c:2653 misc/tune2fs.c:2788
 #: resize/main.c:222
 #, c-format
 msgid "while trying to delete %s"
 msgstr "en intentar suprimir %s"
 
-#: e2fsck/unix.c:1348 misc/mke2fs.c:2669 resize/main.c:243
+#: e2fsck/unix.c:1362 misc/mke2fs.c:2679 resize/main.c:243
 msgid "while trying to setup undo file\n"
 msgstr "en provar de configurar el fitxer de desfer\n"
 
-#: e2fsck/unix.c:1391
+#: e2fsck/unix.c:1405
 msgid "Error: ext2fs library version out of date!\n"
 msgstr "Error: la versió de la biblioteca de l'ext2fs és massa antiga.\n"
 
-#: e2fsck/unix.c:1398
+#: e2fsck/unix.c:1412
 msgid "while trying to initialize program"
 msgstr "en intentar inicialitzar el programa"
 
-#: e2fsck/unix.c:1421
+#: e2fsck/unix.c:1435
 #, c-format
 msgid "\tUsing %s, %s\n"
 msgstr "\tS'utilitza %s, %s\n"
 
-#: e2fsck/unix.c:1433
+#: e2fsck/unix.c:1447
 msgid "need terminal for interactive repairs"
 msgstr "cal un terminal per a les reparacions interactives"
 
-#: e2fsck/unix.c:1494
+#: e2fsck/unix.c:1508
 #, c-format
 msgid "%s: %s trying backup blocks...\n"
 msgstr "%s: %s provant els blocs de còpia de seguretat...\n"
 
-#: e2fsck/unix.c:1496
+#: e2fsck/unix.c:1510
 msgid "Superblock invalid,"
 msgstr "Superbloc no vàlid,"
 
-#: e2fsck/unix.c:1497
+#: e2fsck/unix.c:1511
 msgid "Group descriptors look bad..."
 msgstr "Els descriptors de grup no estan en bon estat..."
 
-#: e2fsck/unix.c:1507
+#: e2fsck/unix.c:1521
 #, c-format
 msgid "%s: %s while using the backup blocks"
 msgstr "%s: %s mentre es feien servir els blocs de còpia de seguretat"
 
-#: e2fsck/unix.c:1511
+#: e2fsck/unix.c:1525
 #, c-format
 msgid "%s: going back to original superblock\n"
 msgstr "%s: mentre es tornava al superbloc original\n"
 
-#: e2fsck/unix.c:1540
+#: e2fsck/unix.c:1554
 msgid ""
 "The filesystem revision is apparently too high for this version of e2fsck.\n"
 "(Or the filesystem superblock is corrupt)\n"
@@ -3616,32 +3645,32 @@
 "(O bé el superbloc del sistema de fitxers està malmès)\n"
 "\n"
 
-#: e2fsck/unix.c:1547
+#: e2fsck/unix.c:1561
 msgid "Could this be a zero-length partition?\n"
 msgstr "Pot ser que això sigui una partició de mida zero?\n"
 
-#: e2fsck/unix.c:1549
+#: e2fsck/unix.c:1563
 #, c-format
 msgid "You must have %s access to the filesystem or be root\n"
 msgstr ""
 "Cal que tingueu accés de %s al sistema de fitxers o bé que sigueu l'usuari "
 "primari\n"
 
-#: e2fsck/unix.c:1555
+#: e2fsck/unix.c:1569
 msgid "Possibly non-existent or swap device?\n"
 msgstr "Pot ser que no existeixi el dispositiu o bé que sigui d'intercanvi?\n"
 
-#: e2fsck/unix.c:1557
+#: e2fsck/unix.c:1571
 msgid "Filesystem mounted or opened exclusively by another program?\n"
 msgstr ""
 "Pot ser que el sistema de fitxers l'hagi muntat o obert un altre programa de "
 "manera exclusiva?\n"
 
-#: e2fsck/unix.c:1561
+#: e2fsck/unix.c:1575
 msgid "Possibly non-existent device?\n"
 msgstr "Pot ser que no existeixi el dispositiu?\n"
 
-#: e2fsck/unix.c:1564
+#: e2fsck/unix.c:1578
 msgid ""
 "Disk write-protected; use the -n option to do a read-only\n"
 "check of the device.\n"
@@ -3649,21 +3678,26 @@
 "El disc està protegit contra escriptura; utilitzeu l'opció\n"
 "-n per a fer una comprovació de només-lectura del dispositiu.\n"
 
-#: e2fsck/unix.c:1632
+#: e2fsck/unix.c:1592
+#, c-format
+msgid "%s: Trying to load superblock despite errors...\n"
+msgstr ""
+
+#: e2fsck/unix.c:1667
 msgid "Get a newer version of e2fsck!"
 msgstr "Hauríeu d'obtenir una versió més recent de l'e2fsck"
 
-#: e2fsck/unix.c:1676
+#: e2fsck/unix.c:1711
 #, fuzzy, c-format
 msgid "while checking journal for %s"
 msgstr "en comprovar el registre de transaccions per a %s"
 
-#: e2fsck/unix.c:1679
+#: e2fsck/unix.c:1714
 #, fuzzy
 msgid "Cannot proceed with file system check"
 msgstr "No es pot continuar sense un @r.\n"
 
-#: e2fsck/unix.c:1690
+#: e2fsck/unix.c:1725
 msgid ""
 "Warning: skipping journal recovery because doing a read-only filesystem "
 "check.\n"
@@ -3671,50 +3705,50 @@
 "Avís: s'omet la recuperació del registre de transaccions perquè s'està "
 "comprovant el sistema de fitxers en mode de només-lectura.\n"
 
-#: e2fsck/unix.c:1702
+#: e2fsck/unix.c:1737
 #, c-format
 msgid "unable to set superblock flags on %s\n"
 msgstr "no s'han pogut definir els senyaladors del superbloc a %s\n"
 
-#: e2fsck/unix.c:1708
+#: e2fsck/unix.c:1743
 #, fuzzy, c-format
 msgid "Journal checksum error found in %s\n"
 msgstr "No s'ha trobat el superbloc del registre de transaccions\n"
 
-#: e2fsck/unix.c:1712
+#: e2fsck/unix.c:1747
 #, fuzzy, c-format
 msgid "Journal corrupted in %s\n"
 msgstr "S'ha suprimit el registre de transaccions\n"
 
-#: e2fsck/unix.c:1716
+#: e2fsck/unix.c:1751
 #, fuzzy, c-format
 msgid "while recovering journal of %s"
 msgstr "en recuperar el registre de transaccions ext3 de %s"
 
-#: e2fsck/unix.c:1738
+#: e2fsck/unix.c:1773
 #, c-format
 msgid "%s has unsupported feature(s):"
 msgstr "%s té caracteristiques no implementades:"
 
-#: e2fsck/unix.c:1797
+#: e2fsck/unix.c:1832
 #, c-format
 msgid "%s: %s while reading bad blocks inode\n"
 msgstr "%s: %s en llegir el node-i dels blocs erronis\n"
 
-#: e2fsck/unix.c:1800
+#: e2fsck/unix.c:1835
 msgid "This doesn't bode well, but we'll try to go on...\n"
 msgstr "Això no és un bon presagi, però s'intentarà continuar...\n"
 
-#: e2fsck/unix.c:1840
+#: e2fsck/unix.c:1875
 #, c-format
 msgid "Creating journal (%d blocks): "
 msgstr "Creació del registre de transaccions (%d blocs): "
 
-#: e2fsck/unix.c:1850
+#: e2fsck/unix.c:1885
 msgid " Done.\n"
 msgstr " Fet.\n"
 
-#: e2fsck/unix.c:1852
+#: e2fsck/unix.c:1887
 #, fuzzy
 msgid ""
 "\n"
@@ -3724,24 +3758,24 @@
 "*** s'ha tornat a crear el registre de transaccions - el sist. de fitxers "
 "torna a ser ext3 ***\n"
 
-#: e2fsck/unix.c:1858
+#: e2fsck/unix.c:1893
 msgid "aborted"
 msgstr "s'ha interromput"
 
-#: e2fsck/unix.c:1860
+#: e2fsck/unix.c:1895
 #, c-format
 msgid "%s: e2fsck canceled.\n"
 msgstr "%s: s'ha cancel·lat l'e2fsck.\n"
 
-#: e2fsck/unix.c:1887
+#: e2fsck/unix.c:1922
 msgid "Restarting e2fsck from the beginning...\n"
 msgstr "S'està tornant a iniciar l'e2fsck des del començament...\n"
 
-#: e2fsck/unix.c:1891
+#: e2fsck/unix.c:1926
 msgid "while resetting context"
 msgstr "en reiniciar el context"
 
-#: e2fsck/unix.c:1942
+#: e2fsck/unix.c:1985
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -3750,12 +3784,12 @@
 "\n"
 "%s: ***** S'HA MODIFICAT EL SISTEMA DE FITXERS *****\n"
 
-#: e2fsck/unix.c:1944
+#: e2fsck/unix.c:1987
 #, fuzzy, c-format
 msgid "%s: File system was modified.\n"
 msgstr "%s: l'ordre dels bytes del sistema de fitxers ja està normalitzat.\n"
 
-#: e2fsck/unix.c:1948 e2fsck/util.c:71
+#: e2fsck/unix.c:1991 e2fsck/util.c:71
 #, c-format
 msgid ""
 "\n"
@@ -3764,12 +3798,12 @@
 "\n"
 "%s: ***** S'HA MODIFICAT EL SISTEMA DE FITXERS *****\n"
 
-#: e2fsck/unix.c:1953
+#: e2fsck/unix.c:1996
 #, fuzzy, c-format
 msgid "%s: ***** REBOOT SYSTEM *****\n"
 msgstr "%s: ***** REINICIEU EL LINUX *****\n"
 
-#: e2fsck/unix.c:1961 e2fsck/util.c:77
+#: e2fsck/unix.c:2006 e2fsck/util.c:77
 #, c-format
 msgid ""
 "\n"
@@ -3796,35 +3830,35 @@
 msgid " ('a' enables 'yes' to all) "
 msgstr ""
 
-#: e2fsck/util.c:218
+#: e2fsck/util.c:219
 msgid "<y>"
 msgstr "<s>"
 
-#: e2fsck/util.c:220
+#: e2fsck/util.c:221
 msgid "<n>"
 msgstr "<n>"
 
-#: e2fsck/util.c:222
+#: e2fsck/util.c:223
 msgid " (y/n)"
 msgstr " (s/n)"
 
-#: e2fsck/util.c:245
+#: e2fsck/util.c:246
 msgid "cancelled!\n"
 msgstr "s'ha cancel·lat\n"
 
-#: e2fsck/util.c:278
+#: e2fsck/util.c:279
 msgid "yes to all\n"
 msgstr ""
 
-#: e2fsck/util.c:280
+#: e2fsck/util.c:281
 msgid "yes\n"
 msgstr "sí\n"
 
-#: e2fsck/util.c:282
+#: e2fsck/util.c:283
 msgid "no\n"
 msgstr "no\n"
 
-#: e2fsck/util.c:292
+#: e2fsck/util.c:293
 #, c-format
 msgid ""
 "%s? no\n"
@@ -3833,7 +3867,7 @@
 "%s? no\n"
 "\n"
 
-#: e2fsck/util.c:296
+#: e2fsck/util.c:297
 #, c-format
 msgid ""
 "%s? yes\n"
@@ -3842,38 +3876,38 @@
 "%s? sí\n"
 "\n"
 
-#: e2fsck/util.c:300
+#: e2fsck/util.c:301
 msgid "yes"
 msgstr "sí"
 
-#: e2fsck/util.c:300
+#: e2fsck/util.c:301
 msgid "no"
 msgstr "no"
 
-#: e2fsck/util.c:316
+#: e2fsck/util.c:317
 #, c-format
 msgid "e2fsck_read_bitmaps: illegal bitmap block(s) for %s"
 msgstr "e2fsck_read_bitmaps: El(s) mapa(es) de blocs no és correcte per %s"
 
-#: e2fsck/util.c:321
+#: e2fsck/util.c:322
 msgid "reading inode and block bitmaps"
 msgstr "es llegeixen el mapes de bits dels blocs i dels nodes-i"
 
-#: e2fsck/util.c:333
+#: e2fsck/util.c:334
 #, c-format
 msgid "while retrying to read bitmaps for %s"
 msgstr "en tornar a intentar la lectura dels mapes de bits per a %s"
 
-#: e2fsck/util.c:345
+#: e2fsck/util.c:346
 msgid "writing block and inode bitmaps"
 msgstr "escriptura dels mapes de bits de bloc i de node-i"
 
-#: e2fsck/util.c:350
+#: e2fsck/util.c:351
 #, c-format
 msgid "while rewriting block and inode bitmaps for %s"
 msgstr "en tornar a escriure els mapes de bits de bloc i de node-i per de %s"
 
-#: e2fsck/util.c:362
+#: e2fsck/util.c:363
 #, c-format
 msgid ""
 "\n"
@@ -3886,37 +3920,37 @@
 "%s: INCONSISTÈNCIA INESPERADA; EXECUTEU fsck MANUALMENT.\n"
 "\t(és a dir, sense les opcions -a o -p)\n"
 
-#: e2fsck/util.c:443
+#: e2fsck/util.c:444
 #, c-format
 msgid "Memory used: %luk/%luk (%luk/%luk), "
 msgstr "Memòria utilitzada: %luk/%luk (%luk/%luk), "
 
-#: e2fsck/util.c:447
+#: e2fsck/util.c:448
 #, c-format
 msgid "Memory used: %lu, "
 msgstr "Memòria utilitzada: %lu, "
 
-#: e2fsck/util.c:454
+#: e2fsck/util.c:455
 #, c-format
 msgid "time: %5.2f/%5.2f/%5.2f\n"
 msgstr "temps: %5.2f/%5.2f/%5.2f\n"
 
-#: e2fsck/util.c:459
+#: e2fsck/util.c:460
 #, c-format
 msgid "elapsed time: %6.3f\n"
 msgstr "temps transcorregut: %6.3f\n"
 
-#: e2fsck/util.c:494 e2fsck/util.c:508
+#: e2fsck/util.c:495 e2fsck/util.c:509
 #, c-format
 msgid "while reading inode %lu in %s"
 msgstr "en llegir el node-i %lu a %s"
 
-#: e2fsck/util.c:522 e2fsck/util.c:535
+#: e2fsck/util.c:523 e2fsck/util.c:536
 #, c-format
 msgid "while writing inode %lu in %s"
 msgstr "en escriure el node-i %lu a %s"
 
-#: e2fsck/util.c:779
+#: e2fsck/util.c:792
 msgid ""
 "UNEXPECTED INCONSISTENCY: the filesystem is being modified while fsck is "
 "running.\n"
@@ -4214,8 +4248,8 @@
 msgid "while reading inode %u"
 msgstr "en llegir el node-i %lu a %s"
 
-#: misc/create_inode.c:89 misc/create_inode.c:284 misc/create_inode.c:349
-#: misc/create_inode.c:387
+#: misc/create_inode.c:89 misc/create_inode.c:287 misc/create_inode.c:352
+#: misc/create_inode.c:390
 #, fuzzy
 msgid "while expanding directory"
 msgstr "en expandir el /lost+found"
@@ -4225,143 +4259,143 @@
 msgid "while linking \"%s\""
 msgstr "en obrir %s"
 
-#: misc/create_inode.c:104 misc/create_inode.c:131 misc/create_inode.c:318
+#: misc/create_inode.c:104 misc/create_inode.c:131 misc/create_inode.c:321
 #, fuzzy, c-format
 msgid "while writing inode %u"
 msgstr "en escriure el node-i %lu a %s"
 
-#: misc/create_inode.c:148 misc/create_inode.c:172
+#: misc/create_inode.c:151 misc/create_inode.c:175
 #, fuzzy, c-format
 msgid "while listing attributes of \"%s\""
 msgstr "en intentar truncar %s"
 
-#: misc/create_inode.c:159
+#: misc/create_inode.c:162
 #, fuzzy, c-format
 msgid "while opening inode %u"
 msgstr "en obrir l'escaneig de nodes-i"
 
-#: misc/create_inode.c:165 misc/create_inode.c:192 misc/create_inode.c:971
-#: misc/e2undo.c:176 misc/e2undo.c:473 misc/e2undo.c:479 misc/e2undo.c:485
+#: misc/create_inode.c:168 misc/create_inode.c:195 misc/create_inode.c:975
+#: misc/e2undo.c:182 misc/e2undo.c:479 misc/e2undo.c:485 misc/e2undo.c:491
 #: misc/mke2fs.c:359
 #, fuzzy
 msgid "while allocating memory"
 msgstr "en assignar la memòria intermèdia"
 
-#: misc/create_inode.c:185 misc/create_inode.c:201
+#: misc/create_inode.c:188 misc/create_inode.c:204
 #, fuzzy, c-format
 msgid "while reading attribute \"%s\" of \"%s\""
 msgstr "en llegir els senyaladors a %s"
 
-#: misc/create_inode.c:210
+#: misc/create_inode.c:213
 #, fuzzy, c-format
 msgid "while writing attribute \"%s\" to inode %u"
 msgstr "en escriure el node-i %lu a %s"
 
-#: misc/create_inode.c:220
+#: misc/create_inode.c:223
 #, fuzzy, c-format
 msgid "while closing inode %u"
 msgstr "en fer l'exploració dels nodes-i"
 
-#: misc/create_inode.c:271
+#: misc/create_inode.c:274
 #, fuzzy, c-format
 msgid "while allocating inode \"%s\""
 msgstr "en ubicar la memòria intermèdia per al node-i"
 
-#: misc/create_inode.c:290
+#: misc/create_inode.c:293
 #, fuzzy, c-format
 msgid "while creating inode \"%s\""
 msgstr "en llegir el node-i %lu a %s"
 
-#: misc/create_inode.c:356
+#: misc/create_inode.c:359
 #, fuzzy, c-format
 msgid "while creating symlink \"%s\""
 msgstr "en llegir els senyaladors a %s"
 
-#: misc/create_inode.c:374 misc/create_inode.c:892
+#: misc/create_inode.c:377 misc/create_inode.c:896
 #, fuzzy, c-format
 msgid "while looking up \"%s\""
 msgstr "en cercar el /lost+found"
 
-#: misc/create_inode.c:394
+#: misc/create_inode.c:397
 #, fuzzy, c-format
 msgid "while creating directory \"%s\""
 msgstr "en crear el directori arrel"
 
-#: misc/create_inode.c:622
+#: misc/create_inode.c:625
 #, fuzzy, c-format
 msgid "while opening \"%s\" to copy"
 msgstr "en obrir %s"
 
-#: misc/create_inode.c:736
+#: misc/create_inode.c:739
 #, c-format
 msgid "while changing working directory to \"%s\""
 msgstr ""
 
-#: misc/create_inode.c:744
+#: misc/create_inode.c:747
 #, fuzzy, c-format
 msgid "while opening directory \"%s\""
 msgstr "en obrir %s"
 
-#: misc/create_inode.c:754
+#: misc/create_inode.c:757
 #, fuzzy, c-format
 msgid "while lstat \"%s\""
 msgstr "en intentar mostrar la informació de %s"
 
-#: misc/create_inode.c:804
+#: misc/create_inode.c:808
 #, fuzzy, c-format
 msgid "while creating special file \"%s\""
 msgstr "en llegir el node-i %lu a %s"
 
-#: misc/create_inode.c:813
+#: misc/create_inode.c:817
 #, fuzzy
 msgid "malloc failed"
 msgstr "L'assignació de memòria ha fallat"
 
-#: misc/create_inode.c:821
+#: misc/create_inode.c:825
 #, fuzzy, c-format
 msgid "while trying to read link \"%s\""
 msgstr "en intentar redimensionar %s"
 
-#: misc/create_inode.c:828
+#: misc/create_inode.c:832
 msgid "symlink increased in size between lstat() and readlink()"
 msgstr ""
 
-#: misc/create_inode.c:839
+#: misc/create_inode.c:843
 #, fuzzy, c-format
 msgid "while writing symlink\"%s\""
 msgstr "en escriure el node-i %lu a %s"
 
-#: misc/create_inode.c:850
+#: misc/create_inode.c:854
 #, fuzzy, c-format
 msgid "while writing file \"%s\""
 msgstr "en escriure el node-i %lu a %s"
 
-#: misc/create_inode.c:863
+#: misc/create_inode.c:867
 #, fuzzy, c-format
 msgid "while making dir \"%s\""
 msgstr "en obrir %s"
 
-#: misc/create_inode.c:881
+#: misc/create_inode.c:885
 #, fuzzy
 msgid "while changing directory"
 msgstr "s'està llegint el bloc de directori"
 
-#: misc/create_inode.c:887
+#: misc/create_inode.c:891
 #, c-format
 msgid "ignoring entry \"%s\""
 msgstr ""
 
-#: misc/create_inode.c:900
+#: misc/create_inode.c:904
 #, fuzzy, c-format
 msgid "while setting inode for \"%s\""
 msgstr "en establir la versió a %s"
 
-#: misc/create_inode.c:907
+#: misc/create_inode.c:911
 #, fuzzy, c-format
 msgid "while setting xattrs for \"%s\""
 msgstr "en establir els senyaladors a %s"
 
-#: misc/create_inode.c:933
+#: misc/create_inode.c:937
 #, fuzzy
 msgid "while saving inode data"
 msgstr "en iniciar l'exploració dels nodes-i"
@@ -4369,7 +4403,7 @@
 #: misc/dumpe2fs.c:56
 #, fuzzy, c-format
 msgid ""
-"Usage: %s [-bfghixV] [-o superblock=<num>] [-o blocksize=<num>] device\n"
+"Usage: %s [-bfghimxV] [-o superblock=<num>] [-o blocksize=<num>] device\n"
 msgstr ""
 "Forma d'ús: %s [-bfhixV] [-o superbloc=<num>] [-o midadelbloc=<num>] "
 "dispositiu\n"
@@ -4489,7 +4523,7 @@
 msgid "Bad blocks: %u"
 msgstr "Blocs erronis: %u"
 
-#: misc/dumpe2fs.c:373 misc/tune2fs.c:366
+#: misc/dumpe2fs.c:373 misc/tune2fs.c:367
 msgid "while reading journal inode"
 msgstr "en llegir el node-i del registre de transaccions"
 
@@ -4505,7 +4539,7 @@
 msgid "Journal superblock magic number invalid!\n"
 msgstr "El numero màgic del registre de transaccions no és vàlid!\n"
 
-#: misc/dumpe2fs.c:409 misc/tune2fs.c:215
+#: misc/dumpe2fs.c:409 misc/tune2fs.c:216
 msgid "while reading journal superblock"
 msgstr "en llegir el superbloc del registre de transaccions"
 
@@ -4514,21 +4548,31 @@
 msgstr ""
 "No s'han trobat els números màgics del superbloc del registre de transaccions"
 
-#: misc/dumpe2fs.c:434 misc/mke2fs.c:792 misc/tune2fs.c:2071
+#: misc/dumpe2fs.c:468
+#, fuzzy
+msgid "failed to alloc MMP buffer\n"
+msgstr "en assignar la memòria intermèdia"
+
+#: misc/dumpe2fs.c:479
+#, fuzzy, c-format
+msgid "reading MMP block %llu from '%s'\n"
+msgstr "Comprovació dels blocs %lu a %lu\n"
+
+#: misc/dumpe2fs.c:507 misc/mke2fs.c:798 misc/tune2fs.c:2073
 msgid "Couldn't allocate memory to parse options!\n"
 msgstr "No s'ha pogut assignar memòria per a analitzar les opcions\n"
 
-#: misc/dumpe2fs.c:460
+#: misc/dumpe2fs.c:533
 #, c-format
 msgid "Invalid superblock parameter: %s\n"
 msgstr "Paràmetre del superbloc no vàlid: %s\n"
 
-#: misc/dumpe2fs.c:475
+#: misc/dumpe2fs.c:548
 #, c-format
 msgid "Invalid blocksize parameter: %s\n"
 msgstr "Paràmetre de mida de bloc no vàlida: %s\n"
 
-#: misc/dumpe2fs.c:486
+#: misc/dumpe2fs.c:559
 #, c-format
 msgid ""
 "\n"
@@ -4552,38 +4596,31 @@
 "\tsuperblock=<número de superbloc>\n"
 "\tblocksize=<mida del bloc>\n"
 
-#: misc/dumpe2fs.c:550 misc/mke2fs.c:1835
+#: misc/dumpe2fs.c:649 misc/mke2fs.c:1845
 #, c-format
 msgid "\tUsing %s\n"
 msgstr "\tEn utilitzar %s\n"
 
-#: misc/dumpe2fs.c:590
-msgid ""
-"\n"
-"*** Checksum errors detected in filesystem!  Run e2fsck now!\n"
-"\n"
-msgstr ""
-
-#: misc/dumpe2fs.c:595 misc/e2image.c:1587 misc/tune2fs.c:2947
+#: misc/dumpe2fs.c:694 misc/e2image.c:1590 misc/tune2fs.c:2949
 #: resize/main.c:416
 msgid "Couldn't find valid filesystem superblock.\n"
 msgstr "No s'ha trobat un superbloc del sistema de fitxers vàlid.\n"
 
-#: misc/dumpe2fs.c:630
-msgid ""
-"\n"
-"*** Checksum errors detected in bitmaps!  Run e2fsck now!\n"
-"\n"
+#: misc/dumpe2fs.c:716
+#, c-format
+msgid "%s: MMP feature not enabled.\n"
 msgstr ""
 
-#: misc/dumpe2fs.c:634
-#, c-format
+#: misc/dumpe2fs.c:747
+#, fuzzy, c-format
+msgid "while trying to read '%s' bitmaps\n"
+msgstr "en tornar a intentar la lectura dels mapes de bits per a %s"
+
+#: misc/dumpe2fs.c:756
 msgid ""
+"*** Run e2fsck now!\n"
 "\n"
-"%s: %s: error reading bitmaps: %s\n"
 msgstr ""
-"\n"
-"%s: %s: s'ha produït un error en llegir els mapes de bits: %s\n"
 
 #: misc/e2image.c:107
 #, fuzzy, c-format
@@ -4604,7 +4641,7 @@
 "       %s -ra  [  -cfnp  ] [ -o desplaç_font ] [ -O desplaç_destí ] sf_font "
 "[ sf_destí ]\n"
 
-#: misc/e2image.c:175 misc/e2image.c:580 misc/e2image.c:586 misc/e2image.c:1182
+#: misc/e2image.c:175 misc/e2image.c:580 misc/e2image.c:586 misc/e2image.c:1185
 msgid "while allocating buffer"
 msgstr "en assignar la memòria intermèdia"
 
@@ -4681,7 +4718,7 @@
 msgid " %s remaining at %.2f MB/s"
 msgstr " queden %s a %.2f MB/s"
 
-#: misc/e2image.c:665 misc/e2image.c:1192
+#: misc/e2image.c:665 misc/e2image.c:1195
 #, c-format
 msgid "error reading block %llu"
 msgstr "S'ha produït un error en llegir el bloc %llu"
@@ -4712,77 +4749,77 @@
 "Avís: encara hi ha taules a la memòria cau en el moment de posar-la. Es "
 "perdran dades i la imatge no serà vàlida.\n"
 
-#: misc/e2image.c:1149
+#: misc/e2image.c:1152
 msgid "while allocating ext2_qcow2_image"
 msgstr "en assignar la ext2_qcow2_image"
 
-#: misc/e2image.c:1156
+#: misc/e2image.c:1159
 msgid "while initializing ext2_qcow2_image"
 msgstr "en inicialitzar la ext2_qcow2_image"
 
-#: misc/e2image.c:1215 misc/e2image.c:1233
+#: misc/e2image.c:1218 misc/e2image.c:1236
 msgid "Programming error: multiple sequential refcount blocks created!\n"
 msgstr ""
 "Error de programació: s'han creat múltiples blocs refcount seqüencials!\n"
 
-#: misc/e2image.c:1273
+#: misc/e2image.c:1276
 msgid "while allocating block bitmap"
 msgstr "en assignar el mapa de bits dels blocs"
 
-#: misc/e2image.c:1282
+#: misc/e2image.c:1285
 msgid "while allocating scramble block bitmap"
 msgstr "en assignar el mapa de bits xifrat dels blocs"
 
-#: misc/e2image.c:1289
+#: misc/e2image.c:1292
 msgid "Scanning inodes...\n"
 msgstr "Escaneig de nodes-i...\n"
 
-#: misc/e2image.c:1301
+#: misc/e2image.c:1304
 msgid "Can't allocate block buffer"
 msgstr "No es pot assignar la memòria intermèdia de blocs"
 
-#: misc/e2image.c:1340 misc/e2image.c:1354
+#: misc/e2image.c:1343 misc/e2image.c:1357
 #, c-format
 msgid "while iterating over inode %u"
 msgstr "mentre s'iterava sobre el node-i %u"
 
-#: misc/e2image.c:1386
+#: misc/e2image.c:1389
 msgid "Raw and qcow2 images cannot be installed"
 msgstr "No es poden instal·lar les imatges raw i QCOW2"
 
-#: misc/e2image.c:1408
+#: misc/e2image.c:1411
 msgid "error reading bitmaps"
 msgstr "error en llegir els mapes de bits"
 
-#: misc/e2image.c:1420
+#: misc/e2image.c:1423
 msgid "while opening device file"
 msgstr "en obrir el fitxer de dispositius"
 
-#: misc/e2image.c:1431
+#: misc/e2image.c:1434
 msgid "while restoring the image table"
 msgstr "en restaurar la taula d'imatges"
 
-#: misc/e2image.c:1528
+#: misc/e2image.c:1531
 msgid "-a option can only be used with raw or QCOW2 images."
 msgstr "l'opció -a només es pot fer servir amb imatges raw o QCOW2."
 
-#: misc/e2image.c:1534
+#: misc/e2image.c:1537
 msgid "Offsets are only allowed with raw images."
 msgstr "Els desplaçaments només es poden fer servir en imatges raw."
 
-#: misc/e2image.c:1539
+#: misc/e2image.c:1542
 msgid "Move mode is only allowed with raw images."
 msgstr "El mode «Moure» només es pot fer servir en imatges raw."
 
-#: misc/e2image.c:1544
+#: misc/e2image.c:1547
 msgid "Move mode requires all data mode."
 msgstr "El mode «Moure» necessita el mode «totes les dades»."
 
-#: misc/e2image.c:1554
+#: misc/e2image.c:1557
 msgid "checking if mounted"
 msgstr "es comprova si està muntat"
 
-#: misc/e2image.c:1561
+#: misc/e2image.c:1564
 msgid ""
 "\n"
 "Running e2image on a R/W mounted filesystem can result in an\n"
@@ -4794,48 +4831,53 @@
 "en una imatge inconsistent que pot no ser útil per depurar.\n"
 "Feu servir l'opció -f si realment voleu fer-ho.\n"
 
-#: misc/e2image.c:1615
+#: misc/e2image.c:1618
 msgid "QCOW2 image can not be written to the stdout!\n"
 msgstr "La imatge QCOW2 no es pot escriure a la sortida estàndard (stdout)!\n"
 
-#: misc/e2image.c:1621
+#: misc/e2image.c:1624
 msgid "Can not stat output\n"
 msgstr "No es pot veure l'estat de la sortida\n"
 
-#: misc/e2image.c:1631
+#: misc/e2image.c:1634
 #, c-format
 msgid "Image (%s) is compressed\n"
 msgstr "La imatge (%s) està comprimida\n"
 
-#: misc/e2image.c:1634
+#: misc/e2image.c:1637
 #, c-format
 msgid "Image (%s) is encrypted\n"
 msgstr "La imatge (%s) està xifrada\n"
 
-#: misc/e2image.c:1637
+#: misc/e2image.c:1640
+#, fuzzy, c-format
+msgid "Image (%s) is corrupted\n"
+msgstr "La imatge (%s) està xifrada\n"
+
+#: misc/e2image.c:1644
 #, c-format
 msgid "while trying to convert qcow2 image (%s) into raw image (%s)"
 msgstr "en provar de convertir una imatge QCOW2 (%s) en una imatge raw (%s)"
 
-#: misc/e2image.c:1646
+#: misc/e2image.c:1654
 msgid "The -c option only supported in raw mode\n"
 msgstr "L'opció -c només es pot fer servir en mode raw\n"
 
-#: misc/e2image.c:1651
+#: misc/e2image.c:1659
 msgid "The -c option not supported when writing to stdout\n"
 msgstr ""
 "L'opció -c no es pot fer servir quan s'escriu a la sortida estàndard "
 "(stdout)\n"
 
-#: misc/e2image.c:1658
+#: misc/e2image.c:1666
 msgid "while allocating check_buf"
 msgstr "en assignar check_buf"
 
-#: misc/e2image.c:1664
+#: misc/e2image.c:1672
 msgid "The -p option only supported in raw mode\n"
 msgstr "L'opció -p només es pot fer servir em mode raw\n"
 
-#: misc/e2image.c:1674
+#: misc/e2image.c:1682
 #, c-format
 msgid "%d blocks already contained the data to be copied\n"
 msgstr "%d blocs ja contenen les dades que cal copiar\n"
@@ -4865,7 +4907,7 @@
 msgid "e2label: not an ext2 filesystem\n"
 msgstr "e2label: aquest no és un sistema de fitxers ext2\n"
 
-#: misc/e2label.c:97 misc/tune2fs.c:3150
+#: misc/e2label.c:97 misc/tune2fs.c:3152
 #, c-format
 msgid "Warning: label too long, truncating.\n"
 msgstr "Avís: l'etiqueta és massa llarga, es truncarà.\n"
@@ -4880,173 +4922,173 @@
 msgid "e2label: error writing superblock\n"
 msgstr "e2lable: s'ha produït un error en escriure el superbloc\n"
 
-#: misc/e2label.c:117 misc/tune2fs.c:1731
+#: misc/e2label.c:117 misc/tune2fs.c:1733
 #, c-format
 msgid "Usage: e2label device [newlabel]\n"
 msgstr "Forma d'ús: e2label dispositiu [etiquetanova]\n"
 
-#: misc/e2undo.c:118
+#: misc/e2undo.c:124
 #, fuzzy, c-format
 msgid ""
 "Usage: %s [-f] [-h] [-n] [-o offset] [-v] [-z undo_file] <transaction file> "
 "<filesystem>\n"
 msgstr "Forma d'ús: %s <fitxer de transaccions> <sistema de fitxers>\n"
 
-#: misc/e2undo.c:143
+#: misc/e2undo.c:149
 #, fuzzy
 msgid "The file system superblock doesn't match the undo file.\n"
 msgstr "L'hora de muntatge del sistema de fitxers no concorda amb %u\n"
 
-#: misc/e2undo.c:146
+#: misc/e2undo.c:152
 msgid "UUID does not match.\n"
 msgstr ""
 
-#: misc/e2undo.c:148
+#: misc/e2undo.c:154
 #, fuzzy
 msgid "Last mount time does not match.\n"
 msgstr "L'hora de muntatge del sistema de fitxers no concorda amb %u\n"
 
-#: misc/e2undo.c:150
+#: misc/e2undo.c:156
 msgid "Last write time does not match.\n"
 msgstr ""
 
-#: misc/e2undo.c:152
+#: misc/e2undo.c:158
 msgid "Lifetime write counter does not match.\n"
 msgstr ""
 
-#: misc/e2undo.c:166
+#: misc/e2undo.c:172
 #, fuzzy
 msgid "while reading filesystem superblock."
 msgstr "en llegir el superbloc del registre de transaccions"
 
-#: misc/e2undo.c:182
+#: misc/e2undo.c:188
 #, fuzzy
 msgid "while fetching superblock"
 msgstr "en escriure el superbloc"
 
-#: misc/e2undo.c:195
+#: misc/e2undo.c:201
 #, fuzzy, c-format
 msgid "Undo file superblock checksum doesn't match.\n"
 msgstr "La suma de verificació del superbloc no coincideix amb el superbloc"
 
-#: misc/e2undo.c:334
+#: misc/e2undo.c:340
 #, fuzzy, c-format
 msgid "illegal offset - %s"
 msgstr "El desplaçament no és vàlid: %s\n"
 
-#: misc/e2undo.c:358
+#: misc/e2undo.c:364
 #, c-format
 msgid "Will not write to an undo file while replaying it.\n"
 msgstr ""
 
-#: misc/e2undo.c:367
+#: misc/e2undo.c:373
 #, fuzzy, c-format
 msgid "while opening undo file `%s'\n"
 msgstr "en obrir el fitxer de dispositius"
 
-#: misc/e2undo.c:374
+#: misc/e2undo.c:380
 #, fuzzy
 msgid "while reading undo file"
 msgstr "en llegir el node arrel"
 
-#: misc/e2undo.c:379
+#: misc/e2undo.c:385
 #, fuzzy, c-format
 msgid "%s: Not an undo file.\n"
 msgstr "%s: s'han especificat massa dispositius\n"
 
-#: misc/e2undo.c:390
+#: misc/e2undo.c:396
 #, fuzzy, c-format
 msgid "%s: Header checksum doesn't match.\n"
 msgstr "La suma de verificació del node-i no coincideix amb el node-i"
 
-#: misc/e2undo.c:397
+#: misc/e2undo.c:403
 #, fuzzy, c-format
 msgid "%s: Corrupt undo file header.\n"
 msgstr "La capçalera estesa està corrompuda"
 
-#: misc/e2undo.c:401
+#: misc/e2undo.c:407
 #, c-format
 msgid "%s: Undo block size too large.\n"
 msgstr ""
 
-#: misc/e2undo.c:406
+#: misc/e2undo.c:412
 #, fuzzy, c-format
 msgid "%s: Undo block size too small.\n"
 msgstr "mida del bloc erroni - %s"
 
-#: misc/e2undo.c:419
+#: misc/e2undo.c:425
 #, fuzzy, c-format
 msgid "%s: Unknown undo file feature set.\n"
 msgstr ""
 "El @S del @j té un senyalador de característica no compatible activat no "
 "compatible.\n"
 
-#: misc/e2undo.c:427
+#: misc/e2undo.c:433
 #, fuzzy, c-format
 msgid "Error while determining whether %s is mounted."
 msgstr "S'ha produït un error en determinar si %s està muntat.\n"
 
-#: misc/e2undo.c:433
+#: misc/e2undo.c:439
 #, fuzzy
 msgid "e2undo should only be run on unmounted filesystems"
 msgstr ""
 "e2undo només s'hauria d'executar en un sistema de fitxers sense muntar\n"
 
-#: misc/e2undo.c:449
+#: misc/e2undo.c:455
 #, fuzzy, c-format
 msgid "while opening `%s'"
 msgstr "en obrir %s"
 
-#: misc/e2undo.c:460
+#: misc/e2undo.c:466
 msgid "specified offset is too large"
 msgstr ""
 
-#: misc/e2undo.c:501
+#: misc/e2undo.c:507
 #, fuzzy
 msgid "while reading keys"
 msgstr "en llegir els mapes de bits"
 
-#: misc/e2undo.c:513
+#: misc/e2undo.c:519
 #, c-format
 msgid "%s: wrong key magic at %llu\n"
 msgstr ""
 
-#: misc/e2undo.c:523
+#: misc/e2undo.c:529
 #, c-format
 msgid "%s: key block checksum error at %llu.\n"
 msgstr ""
 
-#: misc/e2undo.c:546
+#: misc/e2undo.c:552
 #, fuzzy, c-format
 msgid "%s: block %llu is too long."
 msgstr "Dels blocs %lu a %lu\n"
 
-#: misc/e2undo.c:558 misc/e2undo.c:594
+#: misc/e2undo.c:564 misc/e2undo.c:600
 #, fuzzy, c-format
 msgid "while fetching block %llu."
 msgstr "S'escriu el bloc %llu\n"
 
-#: misc/e2undo.c:570
+#: misc/e2undo.c:576
 #, c-format
 msgid "checksum error in filesystem block %llu (undo blk %llu)\n"
 msgstr ""
 
-#: misc/e2undo.c:609
+#: misc/e2undo.c:615
 #, fuzzy, c-format
 msgid "while writing block %llu."
 msgstr "S'ha produït un error en escriure el bloc %llu"
 
-#: misc/e2undo.c:615
+#: misc/e2undo.c:621
 #, c-format
 msgid "Undo file corruption; run e2fsck NOW!\n"
 msgstr ""
 
-#: misc/e2undo.c:617
+#: misc/e2undo.c:623
 #, c-format
 msgid "IO error during replay; run e2fsck NOW!\n"
 msgstr ""
 
-#: misc/e2undo.c:620
+#: misc/e2undo.c:626
 #, c-format
 msgid "Incomplete undo record; run e2fsck.\n"
 msgstr ""
@@ -5124,37 +5166,37 @@
 "\tsolucionar corregint el fitxer /etc/fstab com més aviat millor.\n"
 "\n"
 
-#: misc/fsck.c:480
+#: misc/fsck.c:485
 #, c-format
 msgid "fsck: %s: not found\n"
 msgstr "fsck: %s: no s'ha trobat\n"
 
-#: misc/fsck.c:596
+#: misc/fsck.c:601
 #, c-format
 msgid "%s: wait: No more child process?!?\n"
 msgstr "%s: wait: no hi ha cap més procés fill!?\n"
 
-#: misc/fsck.c:618
+#: misc/fsck.c:623
 #, c-format
 msgid "Warning... %s for device %s exited with signal %d.\n"
 msgstr "Avís... %s per al dispositiu %s ha sortit amb el senyal %d.\n"
 
-#: misc/fsck.c:624
+#: misc/fsck.c:629
 #, c-format
 msgid "%s %s: status is %x, should never happen.\n"
 msgstr "%s %s: l'estat és %x, cosa que no hauria de succeir mai.\n"
 
-#: misc/fsck.c:663
+#: misc/fsck.c:668
 #, c-format
 msgid "Finished with %s (exit status %d)\n"
 msgstr "S'ha finalitzat amb %s (estat de sortida %d)\n"
 
-#: misc/fsck.c:723
+#: misc/fsck.c:728
 #, c-format
 msgid "%s: Error %d while executing fsck.%s for %s\n"
 msgstr "%s: s'ha produït l'error %d en executar l'fsck.%s per a %s\n"
 
-#: misc/fsck.c:744
+#: misc/fsck.c:749
 msgid ""
 "Either all or none of the filesystem types passed to -t must be prefixed\n"
 "with 'no' or '!'.\n"
@@ -5163,11 +5205,11 @@
 "prefixar\n"
 "amb «no» o «!».\n"
 
-#: misc/fsck.c:763
+#: misc/fsck.c:768
 msgid "Couldn't allocate memory for filesystem types\n"
 msgstr "No s'ha pogut assignar memòria per al sistema de fitxers\n"
 
-#: misc/fsck.c:886
+#: misc/fsck.c:891
 #, c-format
 msgid ""
 "%s: skipping bad line in /etc/fstab: bind mount with nonzero fsck pass "
@@ -5176,85 +5218,85 @@
 "%s: se salta una línia incorrecta de /etc/fstab: muntatge lligat(bind) amb "
 "un número de contrasenya diferent de zero\n"
 
-#: misc/fsck.c:913
+#: misc/fsck.c:918
 #, c-format
 msgid "fsck: cannot check %s: fsck.%s not found\n"
 msgstr "fsck: no es pot comprovar %s: no s'ha trobat el fsck.%s\n"
 
-#: misc/fsck.c:969
+#: misc/fsck.c:974
 msgid "Checking all file systems.\n"
 msgstr "S'estan comprovant tots els sistemes de fitxers.\n"
 
-#: misc/fsck.c:1060
+#: misc/fsck.c:1065
 #, c-format
 msgid "--waiting-- (pass %d)\n"
 msgstr "--en espera-- (pas %d)\n"
 
-#: misc/fsck.c:1080
+#: misc/fsck.c:1085
 msgid ""
 "Usage: fsck [-AMNPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"
 msgstr ""
 "Forma d'ús: fsck [-AMNPRTV] [ -C [ fd ] ] [-t tipusdesistdefitxers] [opcions-"
 "delsistdefitxers] [sistdefitxers ...]\n"
 
-#: misc/fsck.c:1122
+#: misc/fsck.c:1127
 #, c-format
 msgid "%s: too many devices\n"
 msgstr "%s: s'han especificat massa dispositius\n"
 
-#: misc/fsck.c:1155 misc/fsck.c:1241
+#: misc/fsck.c:1160 misc/fsck.c:1246
 #, c-format
 msgid "%s: too many arguments\n"
 msgstr "%s: s'han especificat massa arguments\n"
 
-#: misc/fuse2fs.c:3732
+#: misc/fuse2fs.c:3739
 #, fuzzy
 msgid "Mounting read-only.\n"
 msgstr "El fitxer s'ha obert com a només de lectura"
 
-#: misc/fuse2fs.c:3756
+#: misc/fuse2fs.c:3763
 #, c-format
 msgid "%s: Allowing users to allocate all blocks. This is dangerous!\n"
 msgstr ""
 
-#: misc/fuse2fs.c:3768 misc/fuse2fs.c:3782
+#: misc/fuse2fs.c:3775 misc/fuse2fs.c:3789
 #, c-format
 msgid "%s: %s.\n"
 msgstr ""
 
-#: misc/fuse2fs.c:3769 misc/fuse2fs.c:3784 misc/tune2fs.c:3047
+#: misc/fuse2fs.c:3776 misc/fuse2fs.c:3791 misc/tune2fs.c:3049
 #, fuzzy, c-format
 msgid "Please run e2fsck -fy %s.\n"
 msgstr ""
 "Executeu «e2fsck -f %s» primer.\n"
 "\n"
 
-#: misc/fuse2fs.c:3791
+#: misc/fuse2fs.c:3798
 msgid "Journal needs recovery; running `e2fsck -E journal_only' is required.\n"
 msgstr ""
 
-#: misc/fuse2fs.c:3799
+#: misc/fuse2fs.c:3806
 #, fuzzy, c-format
 msgid "%s: Writing to the journal is not supported.\n"
 msgstr "La reducció de la mida del node-i no està implementada\n"
 
-#: misc/fuse2fs.c:3814
+#: misc/fuse2fs.c:3821
 msgid "Warning: Mounting unchecked fs, running e2fsck is recommended.\n"
 msgstr ""
 
-#: misc/fuse2fs.c:3818
+#: misc/fuse2fs.c:3825
 msgid "Warning: Maximal mount count reached, running e2fsck is recommended.\n"
 msgstr ""
 
-#: misc/fuse2fs.c:3823
+#: misc/fuse2fs.c:3830
 msgid "Warning: Check time reached; running e2fsck is recommended.\n"
 msgstr ""
 
-#: misc/fuse2fs.c:3827
+#: misc/fuse2fs.c:3834
 msgid "Orphans detected; running e2fsck is recommended.\n"
 msgstr ""
 
-#: misc/fuse2fs.c:3831
+#: misc/fuse2fs.c:3838
 msgid "Errors detected; running e2fsck is required.\n"
 msgstr ""
 
@@ -5347,11 +5389,16 @@
 msgid "while marking bad blocks as used"
 msgstr "en marcar els blocs erronis com a utilitzats"
 
-#: misc/mke2fs.c:414
+#: misc/mke2fs.c:368
+#, fuzzy
+msgid "while writing reserved inodes"
+msgstr "en escriure al node-i del registre de transaccions"
+
+#: misc/mke2fs.c:420
 msgid "Writing inode tables: "
 msgstr "Escriptura de les taules de nodes-i:"
 
-#: misc/mke2fs.c:436
+#: misc/mke2fs.c:442
 #, c-format
 msgid ""
 "\n"
@@ -5361,78 +5408,78 @@
 "No s'han pogut escriure %d blocs a la taula de nodes-i que comença a %llu: "
 "%s\n"
 
-#: misc/mke2fs.c:450 misc/mke2fs.c:2716 misc/mke2fs.c:3119
+#: misc/mke2fs.c:456 misc/mke2fs.c:2726 misc/mke2fs.c:3131
 msgid "done                            \n"
 msgstr "fet                            \n"
 
-#: misc/mke2fs.c:465
+#: misc/mke2fs.c:471
 msgid "while creating root dir"
 msgstr "en crear el directori arrel"
 
-#: misc/mke2fs.c:472
+#: misc/mke2fs.c:478
 msgid "while reading root inode"
 msgstr "en llegir el node arrel"
 
-#: misc/mke2fs.c:484
+#: misc/mke2fs.c:490
 msgid "while setting root inode ownership"
 msgstr "en establir la propietat del node-i arrel"
 
-#: misc/mke2fs.c:502
+#: misc/mke2fs.c:508
 msgid "while creating /lost+found"
 msgstr "en crear /lost+found"
 
-#: misc/mke2fs.c:509
+#: misc/mke2fs.c:515
 msgid "while looking up /lost+found"
 msgstr "en cercar el /lost+found"
 
-#: misc/mke2fs.c:522
+#: misc/mke2fs.c:528
 msgid "while expanding /lost+found"
 msgstr "en expandir el /lost+found"
 
-#: misc/mke2fs.c:537
+#: misc/mke2fs.c:543
 msgid "while setting bad block inode"
 msgstr "en establir el node-i de blocs erronis"
 
-#: misc/mke2fs.c:564
+#: misc/mke2fs.c:570
 #, c-format
 msgid "Out of memory erasing sectors %d-%d\n"
 msgstr "S'ha exhaurit la memòria en esborrar els sectors %d-%d\n"
 
-#: misc/mke2fs.c:574
+#: misc/mke2fs.c:580
 #, c-format
 msgid "Warning: could not read block 0: %s\n"
 msgstr "Avís: no s'ha pogut llegir el bloc 0: %s\n"
 
-#: misc/mke2fs.c:590
+#: misc/mke2fs.c:596
 #, c-format
 msgid "Warning: could not erase sector %d: %s\n"
 msgstr "Avís: no s'ha pogut esborrar el sector %d: %s\n"
 
-#: misc/mke2fs.c:606
+#: misc/mke2fs.c:612
 msgid "while initializing journal superblock"
 msgstr "en inicialitzar el superbloc del registre de transaccions"
 
-#: misc/mke2fs.c:614
+#: misc/mke2fs.c:620
 msgid "Zeroing journal device: "
 msgstr "S'estan escrivint zeros al dispositiu de registre de transaccions:"
 
-#: misc/mke2fs.c:626
+#: misc/mke2fs.c:632
 #, c-format
 msgid "while zeroing journal device (block %llu, count %d)"
 msgstr ""
 "en escriure zeros al dispositiu de registre de transaccions (bloc %llu, "
 "recompte %d)"
 
-#: misc/mke2fs.c:644
+#: misc/mke2fs.c:650
 msgid "while writing journal superblock"
 msgstr "en escriure el superbloc del registre de transaccions"
 
-#: misc/mke2fs.c:659
+#: misc/mke2fs.c:665
 #, c-format
 msgid "Creating filesystem with %llu %dk blocks and %u inodes\n"
 msgstr "S'està creant un sistema de fitxers amb %llu %dk blocs i %u nodes-i\n"
 
-#: misc/mke2fs.c:667
+#: misc/mke2fs.c:673
 #, c-format
 msgid ""
 "warning: %llu blocks unused.\n"
@@ -5441,165 +5488,165 @@
 "avís: %llu blocs no utilitzats.\n"
 "\n"
 
-#: misc/mke2fs.c:672
+#: misc/mke2fs.c:678
 #, c-format
 msgid "Filesystem label=%s\n"
 msgstr "Etiqueta del sistema de fitxers=%s\n"
 
-#: misc/mke2fs.c:675
+#: misc/mke2fs.c:681
 #, c-format
 msgid "OS type: %s\n"
 msgstr "Tipus de sistema operatiu: %s\n"
 
 # FIXME: log
-#: misc/mke2fs.c:677
+#: misc/mke2fs.c:683
 #, c-format
 msgid "Block size=%u (log=%u)\n"
 msgstr "Mida del bloc=%u (log=%u)\n"
 
 # FIXME: log
-#: misc/mke2fs.c:680
+#: misc/mke2fs.c:686
 #, c-format
 msgid "Cluster size=%u (log=%u)\n"
 msgstr "Mida del grup de sectors=%u (log=%u)\n"
 
-#: misc/mke2fs.c:684
+#: misc/mke2fs.c:690
 #, c-format
 msgid "Fragment size=%u (log=%u)\n"
 msgstr "Mida del fragment=%u (log=%u)\n"
 
-#: misc/mke2fs.c:686
+#: misc/mke2fs.c:692
 #, c-format
 msgid "Stride=%u blocks, Stripe width=%u blocks\n"
 msgstr "Stride=%u blocs, amplada del Stripe=%u blocs\n"
 
-#: misc/mke2fs.c:688
+#: misc/mke2fs.c:694
 #, c-format
 msgid "%u inodes, %llu blocks\n"
 msgstr "%u nodes-i, %llu blocs\n"
 
-#: misc/mke2fs.c:690
+#: misc/mke2fs.c:696
 #, c-format
 msgid "%llu blocks (%2.2f%%) reserved for the super user\n"
 msgstr "%llu blocs (%2.2f%%) reservats per al superusuari\n"
 
-#: misc/mke2fs.c:693
+#: misc/mke2fs.c:699
 #, c-format
 msgid "First data block=%u\n"
 msgstr "Bloc de dades inicial=%u\n"
 
-#: misc/mke2fs.c:695
+#: misc/mke2fs.c:701
 #, c-format
 msgid "Root directory owner=%u:%u\n"
 msgstr "Propietari del directori arrel = %u:%u\n"
 
-#: misc/mke2fs.c:697
+#: misc/mke2fs.c:703
 #, c-format
 msgid "Maximum filesystem blocks=%lu\n"
 msgstr "Màxim de blocs del sistema de fitxers=%lu\n"
 
-#: misc/mke2fs.c:701
+#: misc/mke2fs.c:707
 #, c-format
 msgid "%u block groups\n"
 msgstr "%u grups de blocs\n"
 
-#: misc/mke2fs.c:703
+#: misc/mke2fs.c:709
 #, c-format
 msgid "%u block group\n"
 msgstr "%u grup de blocs\n"
 
-#: misc/mke2fs.c:705
+#: misc/mke2fs.c:711
 #, c-format
 msgid "%u blocks per group, %u clusters per group\n"
 msgstr "%u blocs per grup, %u grups de sectors per grup\n"
 
-#: misc/mke2fs.c:708
+#: misc/mke2fs.c:714
 #, c-format
 msgid "%u blocks per group, %u fragments per group\n"
 msgstr "%u blocs per grup, %u fragments per grup\n"
 
-#: misc/mke2fs.c:710
+#: misc/mke2fs.c:716
 #, c-format
 msgid "%u inodes per group\n"
 msgstr "%u nodes-i per grup\n"
 
-#: misc/mke2fs.c:719
+#: misc/mke2fs.c:725
 #, c-format
 msgid "Filesystem UUID: %s\n"
 msgstr "UUID del sistema de fitxers=%s\n"
 
-#: misc/mke2fs.c:720
+#: misc/mke2fs.c:726
 msgid "Superblock backups stored on blocks: "
 msgstr "Còpies de seguretat del superbloc desades en els blocs: "
 
-#: misc/mke2fs.c:814
+#: misc/mke2fs.c:820
 #, c-format
 msgid "%s requires '-O 64bit'\n"
 msgstr "%s necessita «-O 64bit»\n"
 
-#: misc/mke2fs.c:820
+#: misc/mke2fs.c:826
 #, c-format
 msgid "'%s' must be before 'resize=%u'\n"
 msgstr "«%s» ha d'anar abans de «resize=%u»\n"
 
-#: misc/mke2fs.c:833
+#: misc/mke2fs.c:839
 #, c-format
 msgid "Invalid desc_size: '%s'\n"
 msgstr "El desc_size no és vàlid: «%s»\n"
 
-#: misc/mke2fs.c:847
+#: misc/mke2fs.c:853
 #, fuzzy, c-format
 msgid "Invalid hash seed: %s\n"
 msgstr "La mida nova no és vàlida: %s\n"
 
-#: misc/mke2fs.c:859
+#: misc/mke2fs.c:865
 #, c-format
 msgid "Invalid offset: %s\n"
 msgstr "El desplaçament no és vàlid: %s\n"
 
-#: misc/mke2fs.c:873 misc/tune2fs.c:2099
+#: misc/mke2fs.c:879 misc/tune2fs.c:2101
 #, c-format
 msgid "Invalid mmp_update_interval: %s\n"
 msgstr "L'mmp_update_interval no és vàlid: %s\n"
 
-#: misc/mke2fs.c:887
+#: misc/mke2fs.c:896
 #, c-format
 msgid "Invalid # of backup superblocks: %s\n"
 msgstr "El nombre de superblocs de la còpia de seguretat no és vàlid: %s\n"
 
-#: misc/mke2fs.c:909
+#: misc/mke2fs.c:918
 #, c-format
 msgid "Invalid stride parameter: %s\n"
 msgstr "El paràmetre de stride no és vàlid: %s\n"
 
-#: misc/mke2fs.c:924
+#: misc/mke2fs.c:933
 #, c-format
 msgid "Invalid stripe-width parameter: %s\n"
 msgstr "L'amplada del stripe no és vàlida: %s\n"
 
-#: misc/mke2fs.c:947
+#: misc/mke2fs.c:956
 #, c-format
 msgid "Invalid resize parameter: %s\n"
 msgstr "Paràmetre de canvi de mida no vàlid: %s\n"
 
-#: misc/mke2fs.c:954
+#: misc/mke2fs.c:963
 msgid "The resize maximum must be greater than the filesystem size.\n"
 msgstr ""
 "El màxim del canvi de mida ha de ser més gran que la mida del sistema de "
 "fitxers.\n"
 
-#: misc/mke2fs.c:978
+#: misc/mke2fs.c:987
 msgid "On-line resizing not supported with revision 0 filesystems\n"
 msgstr ""
 "El canvi de mida en línia no és compatible amb sistemes de fitxers de versió "
 "0\n"
 
-#: misc/mke2fs.c:1004 misc/mke2fs.c:1013
+#: misc/mke2fs.c:1013 misc/mke2fs.c:1022
 #, c-format
 msgid "Invalid root_owner: '%s'\n"
 msgstr "El root_owner no és vàlid: «%s»\n"
 
-#: misc/mke2fs.c:1056
+#: misc/mke2fs.c:1065
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5649,7 +5696,7 @@
 "\tquotatype=<usuari o grup>\n"
 "\n"
 
-#: misc/mke2fs.c:1081
+#: misc/mke2fs.c:1090
 #, c-format
 msgid ""
 "\n"
@@ -5661,7 +5708,7 @@
 "%u.\n"
 "\n"
 
-#: misc/mke2fs.c:1125
+#: misc/mke2fs.c:1135
 #, c-format
 msgid ""
 "Syntax error in mke2fs config file (%s, line #%d)\n"
@@ -5670,17 +5717,17 @@
 "Error de sintaxi en el fitxer de configuració del mke2fs (%s, línia no. %d)\n"
 "\t%s\n"
 
-#: misc/mke2fs.c:1138 misc/tune2fs.c:1118
+#: misc/mke2fs.c:1148 misc/tune2fs.c:1120
 #, c-format
 msgid "Invalid filesystem option set: %s\n"
 msgstr "S'ha definit una opció del sistema de fitxers no vàlida: %s\n"
 
-#: misc/mke2fs.c:1150 misc/tune2fs.c:410
+#: misc/mke2fs.c:1160 misc/tune2fs.c:411
 #, c-format
 msgid "Invalid mount option set: %s\n"
 msgstr "S'ha establert una opció de muntatge no vàlida: %s\n"
 
-#: misc/mke2fs.c:1286
+#: misc/mke2fs.c:1296
 #, c-format
 msgid ""
 "\n"
@@ -5689,7 +5736,7 @@
 "\n"
 "El vostre fitxer mke2fs.conf no defineix el tipus de sistema de fitxers %s.\n"
 
-#: misc/mke2fs.c:1290
+#: misc/mke2fs.c:1300
 msgid ""
 "You probably need to install an updated mke2fs.conf file.\n"
 "\n"
@@ -5697,11 +5744,11 @@
 "Segurament cal que instal·leu un fitxer mke2fs.conf actualitzat.\n"
 "\n"
 
-#: misc/mke2fs.c:1294
+#: misc/mke2fs.c:1304
 msgid "Aborting...\n"
 msgstr "S'interromp...\n"
 
-#: misc/mke2fs.c:1335
+#: misc/mke2fs.c:1345
 #, c-format
 msgid ""
 "\n"
@@ -5712,72 +5759,72 @@
 "Avis: el fs_type %s no està definit a l'mke2fs.conf\n"
 "\n"
 
-#: misc/mke2fs.c:1517
+#: misc/mke2fs.c:1527
 msgid "Couldn't allocate memory for new PATH.\n"
 msgstr "No s'ha pogut assignar memòria per al nou CAMÍ.\n"
 
-#: misc/mke2fs.c:1554
+#: misc/mke2fs.c:1564
 #, c-format
 msgid "Couldn't init profile successfully (error: %ld).\n"
 msgstr "El perfil no s'ha pogut inicialitzar correctament (error: %ld).\n"
 
-#: misc/mke2fs.c:1587
+#: misc/mke2fs.c:1597
 #, c-format
 msgid "invalid block size - %s"
 msgstr "mida de bloc no vàlida - %s"
 
-#: misc/mke2fs.c:1591
+#: misc/mke2fs.c:1601
 #, c-format
 msgid "Warning: blocksize %d not usable on most systems.\n"
 msgstr ""
 "Avís: la mida de bloc %d no es pot utilitzar a la majoria dels sistemes.\n"
 
-#: misc/mke2fs.c:1607
+#: misc/mke2fs.c:1617
 #, c-format
 msgid "invalid cluster size - %s"
 msgstr "la mida del grup de sectors no és vàlida - %s"
 
-#: misc/mke2fs.c:1620
+#: misc/mke2fs.c:1630
 msgid "'-R' is deprecated, use '-E' instead"
 msgstr "«-R» ja no està suportada, feu servir «-E»"
 
-#: misc/mke2fs.c:1634 misc/tune2fs.c:1828
+#: misc/mke2fs.c:1644 misc/tune2fs.c:1830
 #, c-format
 msgid "bad error behavior - %s"
 msgstr "comportament d'error erroni - %s"
 
-#: misc/mke2fs.c:1646
+#: misc/mke2fs.c:1656
 msgid "Illegal number for blocks per group"
 msgstr "Nombre no vàlid per als blocs per grup"
 
-#: misc/mke2fs.c:1651
+#: misc/mke2fs.c:1661
 msgid "blocks per group must be multiple of 8"
 msgstr "el nombre de blocs per grup ha de ser múltiple de 8"
 
-#: misc/mke2fs.c:1659
+#: misc/mke2fs.c:1669
 msgid "Illegal number for flex_bg size"
 msgstr "Número no vàlid per a la mida de flex_bg"
 
-#: misc/mke2fs.c:1665
+#: misc/mke2fs.c:1675
 msgid "flex_bg size must be a power of 2"
 msgstr "la mida de flex_bg ha de ser una potència de 2"
 
-#: misc/mke2fs.c:1670
+#: misc/mke2fs.c:1680
 #, c-format
 msgid "flex_bg size (%lu) must be less than or equal to 2^31"
 msgstr "la mida de flex_bg (%lu) ha de ser menor o igual a 2^31"
 
-#: misc/mke2fs.c:1680
+#: misc/mke2fs.c:1690
 #, c-format
 msgid "invalid inode ratio %s (min %d/max %d)"
 msgstr "ràtio de nodes-i %s no vàlida (mín %d/màx %d)"
 
-#: misc/mke2fs.c:1690
+#: misc/mke2fs.c:1700
 #, c-format
 msgid "invalid inode size - %s"
 msgstr "mida de node-i errònia - %s"
 
-#: misc/mke2fs.c:1703
+#: misc/mke2fs.c:1713
 msgid ""
 "Warning: -K option is deprecated and should not be used anymore. Use '-E "
 "nodiscard' extended option instead!\n"
@@ -5785,82 +5832,82 @@
 "Avís: L'opció K ja no està suportada i no s'hauria de fer servir. Feu servir "
 "l'opció estesa «-E nodiscard»!\n"
 
-#: misc/mke2fs.c:1714
+#: misc/mke2fs.c:1724
 msgid "in malloc for bad_blocks_filename"
 msgstr "en malloc el bad_blocks_filename"
 
-#: misc/mke2fs.c:1723
+#: misc/mke2fs.c:1733
 #, fuzzy, c-format
 msgid ""
 "Warning: label too long; will be truncated to '%s'\n"
 "\n"
 msgstr "Avís: l'etiqueta és massa llarga, es truncarà.\n"
 
-#: misc/mke2fs.c:1732
+#: misc/mke2fs.c:1742
 #, c-format
 msgid "invalid reserved blocks percent - %s"
 msgstr "percentatge de blocs reservats no vàlid - %s"
 
-#: misc/mke2fs.c:1747
+#: misc/mke2fs.c:1757
 #, c-format
 msgid "bad num inodes - %s"
 msgstr "nombre de nodes-i no vàlid - %s"
 
-#: misc/mke2fs.c:1760
+#: misc/mke2fs.c:1770
 #, fuzzy
 msgid "while allocating fs_feature string"
 msgstr "en assignar les memòries intermèdies"
 
-#: misc/mke2fs.c:1777
+#: misc/mke2fs.c:1787
 #, c-format
 msgid "bad revision level - %s"
 msgstr "nivell de versió erroni - %s"
 
-#: misc/mke2fs.c:1782
+#: misc/mke2fs.c:1792
 #, c-format
 msgid "while trying to create revision %d"
 msgstr "en provar de crear la versió %d"
 
-#: misc/mke2fs.c:1796
+#: misc/mke2fs.c:1806
 msgid "The -t option may only be used once"
 msgstr "L'opció -t només es pot especificar una vegada"
 
-#: misc/mke2fs.c:1804
+#: misc/mke2fs.c:1814
 msgid "The -T option may only be used once"
 msgstr "L'opció -T només es pot especificar una vegada"
 
-#: misc/mke2fs.c:1860 misc/mke2fs.c:3203
+#: misc/mke2fs.c:1870 misc/mke2fs.c:3215
 #, c-format
 msgid "while trying to open journal device %s\n"
 msgstr "en intentar obrir el dispositiu de registre de transaccions %s\n"
 
-#: misc/mke2fs.c:1866
+#: misc/mke2fs.c:1876
 #, c-format
 msgid "Journal dev blocksize (%d) smaller than minimum blocksize %d\n"
 msgstr ""
 "La mida de bloc del dispositiu de registre de transaccions (%d) és menor que "
 "la mida mínima de bloc %d\n"
 
-#: misc/mke2fs.c:1872
+#: misc/mke2fs.c:1882
 #, c-format
 msgid "Using journal device's blocksize: %d\n"
 msgstr ""
 "Mida de bloc del dispositiu de registre de transaccions a utilitzar: %d\n"
 
-#: misc/mke2fs.c:1883
+#: misc/mke2fs.c:1893
 #, c-format
 msgid "invalid blocks '%s' on device '%s'"
 msgstr "nombre de blocs «%s» no vàlid al dispositiu «%s»"
 
-#: misc/mke2fs.c:1913
+#: misc/mke2fs.c:1923
 msgid "filesystem"
 msgstr "sistema de fitxers"
 
-#: misc/mke2fs.c:1931 resize/main.c:497
+#: misc/mke2fs.c:1941 resize/main.c:497
 msgid "while trying to determine filesystem size"
 msgstr "en intentar determinar la mida del sistema de fitxers"
 
-#: misc/mke2fs.c:1937
+#: misc/mke2fs.c:1947
 msgid ""
 "Couldn't determine device size; you must specify\n"
 "the size of the filesystem\n"
@@ -5868,7 +5915,7 @@
 "No s'ha pogut determinar la mida del dispositiu; hau d'especificar\n"
 "la mida del sistema de fitxers\n"
 
-#: misc/mke2fs.c:1944
+#: misc/mke2fs.c:1954
 msgid ""
 "Device size reported to be zero.  Invalid partition specified, or\n"
 "\tpartition table wasn't reread after running fdisk, due to\n"
@@ -5881,49 +5928,49 @@
 "\tser que hàgiu de reiniciar perquè es pugui tornar a llegir la taula de.\n"
 "\tparticions.\n"
 
-#: misc/mke2fs.c:1961
+#: misc/mke2fs.c:1971
 msgid "Filesystem larger than apparent device size."
 msgstr ""
 "La mida del sistema de fitxers és més gran que la mida aparent del "
 "dispositiu."
 
-#: misc/mke2fs.c:1981
+#: misc/mke2fs.c:1991
 msgid "Failed to parse fs types list\n"
 msgstr "No s'ha pogut analitzar la llista de sistemes de fitxers\n"
 
-#: misc/mke2fs.c:2030
+#: misc/mke2fs.c:2040
 #, fuzzy
 msgid "The HURD does not support the filetype feature.\n"
 msgstr "El Hurd no és compatible amb la característica de tipus de fitxer.\n"
 
-#: misc/mke2fs.c:2035
+#: misc/mke2fs.c:2045
 #, fuzzy
 msgid "The HURD does not support the huge_file feature.\n"
 msgstr "El Hurd no és compatible amb la característica de tipus de fitxer.\n"
 
-#: misc/mke2fs.c:2040
+#: misc/mke2fs.c:2050
 #, fuzzy
 msgid "The HURD does not support the metadata_csum feature.\n"
 msgstr "El Hurd no és compatible amb la característica de tipus de fitxer.\n"
 
-#: misc/mke2fs.c:2045
+#: misc/mke2fs.c:2055
 #, fuzzy
 msgid "The HURD does not support the ea_inode feature.\n"
 msgstr "El Hurd no és compatible amb la característica de tipus de fitxer.\n"
 
-#: misc/mke2fs.c:2055
+#: misc/mke2fs.c:2065
 msgid "while trying to determine hardware sector size"
 msgstr "en intentar determinar la mida del sector del maquinari"
 
-#: misc/mke2fs.c:2061
+#: misc/mke2fs.c:2071
 msgid "while trying to determine physical sector size"
 msgstr "en intentar determinar la mida física del sector"
 
-#: misc/mke2fs.c:2093
+#: misc/mke2fs.c:2103
 msgid "while setting blocksize; too small for device\n"
 msgstr "en establir la mida del bloc. Massa petita pel dispositiu\n"
 
-#: misc/mke2fs.c:2098
+#: misc/mke2fs.c:2108
 #, c-format
 msgid ""
 "Warning: specified blocksize %d is less than device physical sectorsize %d\n"
@@ -5931,7 +5978,7 @@
 "Avís: la mida del bloc especificada %d és més petita que la mida física del "
 "sector del dispositiu %d\n"
 
-#: misc/mke2fs.c:2122
+#: misc/mke2fs.c:2132
 #, c-format
 msgid ""
 "%s: Size of device (0x%llx blocks) %s too big to be expressed\n"
@@ -5941,7 +5988,7 @@
 "la \n"
 "\ten 32 bits. S'utilitzarà una mida de bloc de %d.\n"
 
-#: misc/mke2fs.c:2134
+#: misc/mke2fs.c:2144
 #, fuzzy, c-format
 msgid ""
 "%s: Size of device (0x%llx blocks) %s too big to create\n"
@@ -5951,34 +5998,34 @@
 "la \n"
 "\ten 32 bits. S'utilitzarà una mida de bloc de %d.\n"
 
-#: misc/mke2fs.c:2156
+#: misc/mke2fs.c:2166
 msgid "fs_types for mke2fs.conf resolution: "
 msgstr "Resolució del fs_types per mke2fs.conf: "
 
-#: misc/mke2fs.c:2163
+#: misc/mke2fs.c:2173
 msgid "Filesystem features not supported with revision 0 filesystems\n"
 msgstr ""
 "Les característiques del sistema de fitxers no són compatibles amb sistemes "
 "de fitxers amb versió 0\n"
 
-#: misc/mke2fs.c:2171
+#: misc/mke2fs.c:2181
 msgid "Sparse superblocks not supported with revision 0 filesystems\n"
 msgstr ""
 "Els superblocs dispersos no són compatibles amb sistemes de fitxers amb "
 "versió 0\n"
 
-#: misc/mke2fs.c:2181
+#: misc/mke2fs.c:2191
 msgid "Journals not supported with revision 0 filesystems\n"
 msgstr ""
 "Els registres de transaccions no són compatibles amb sistemes de fitxers amb "
 "versió 0\n"
 
-#: misc/mke2fs.c:2194
+#: misc/mke2fs.c:2204
 #, c-format
 msgid "invalid reserved blocks percent - %lf"
 msgstr "percentatge de blocs reservats no vàlid - %lf"
 
-#: misc/mke2fs.c:2211
+#: misc/mke2fs.c:2221
 msgid ""
 "Extents MUST be enabled for a 64-bit filesystem.  Pass -O extents to "
 "rectify.\n"
@@ -5986,29 +6033,29 @@
 "«Extents» HA d'estar habilitat per sistemes de fitxers de 64 bits.  Indiqueu "
 "-O extents per rectificar-ho.\n"
 
-#: misc/mke2fs.c:2231
+#: misc/mke2fs.c:2241
 msgid "The cluster size may not be smaller than the block size.\n"
 msgstr ""
 "La mida del grup de sectors no hauria de ser més petita que la mida del "
 "bloc.\n"
 
-#: misc/mke2fs.c:2237
+#: misc/mke2fs.c:2247
 msgid "specifying a cluster size requires the bigalloc feature"
 msgstr ""
 "L'especificació de la mida del grup de sectors necessita la característica "
 "bigalloc"
 
-#: misc/mke2fs.c:2257
+#: misc/mke2fs.c:2267
 #, c-format
 msgid "warning: Unable to get device geometry for %s\n"
 msgstr "avís: No es pot obtenir la geometria del dispositiu de %s\n"
 
-#: misc/mke2fs.c:2260
+#: misc/mke2fs.c:2270
 #, c-format
 msgid "%s alignment is offset by %lu bytes.\n"
 msgstr "L'alineació de %s està desplaçada %lu bytes.\n"
 
-#: misc/mke2fs.c:2262
+#: misc/mke2fs.c:2272
 #, c-format
 msgid ""
 "This may result in very poor performance, (re)-partitioning suggested.\n"
@@ -6016,12 +6063,12 @@
 "Això pot resultar en un funcionament molt pobre. Se suggereix (tornar a) fer "
 "les particions.\n"
 
-#: misc/mke2fs.c:2283
+#: misc/mke2fs.c:2293
 #, c-format
 msgid "%d-byte blocks too big for system (max %d)"
 msgstr "Els blocs de %d-byte són massa grans pel sistema (màx %d)"
 
-#: misc/mke2fs.c:2287
+#: misc/mke2fs.c:2297
 #, c-format
 msgid ""
 "Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
@@ -6029,14 +6076,14 @@
 "Avís: Els blocs de %d-byte són massa grans pel sistema (màx %d), es força a "
 "continuar\n"
 
-#: misc/mke2fs.c:2295
+#: misc/mke2fs.c:2305
 #, c-format
 msgid ""
 "Suggestion: Use Linux kernel >= 3.18 for improved stability of the metadata "
 "and journal checksum features.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2350
+#: misc/mke2fs.c:2360
 #, c-format
 msgid ""
 "\n"
@@ -6046,18 +6093,18 @@
 "\n"
 msgstr ""
 
-#: misc/mke2fs.c:2365
+#: misc/mke2fs.c:2375
 #, c-format
 msgid "%d byte inodes are too small for project quota"
 msgstr ""
 
-#: misc/mke2fs.c:2387
+#: misc/mke2fs.c:2397
 msgid "Can't support bigalloc feature without extents feature"
 msgstr ""
 "No es pot fer servir la característica bigalloc sense la característica "
 "«extents»"
 
-#: misc/mke2fs.c:2394
+#: misc/mke2fs.c:2404
 msgid ""
 "The resize_inode and meta_bg features are not compatible.\n"
 "They can not be both enabled simultaneously.\n"
@@ -6065,7 +6112,7 @@
 "Les característiques resize_inode i meta_bg no són compatibles.\n"
 "No es poden activar de manera simultània.\n"
 
-#: misc/mke2fs.c:2402
+#: misc/mke2fs.c:2412
 msgid ""
 "\n"
 "Warning: the bigalloc feature is still under development\n"
@@ -6077,44 +6124,44 @@
 "Vegeu https://ext4.wiki.kernel.org/index.php/Bigalloc per més informació\n"
 "\n"
 
-#: misc/mke2fs.c:2414
+#: misc/mke2fs.c:2424
 msgid "reserved online resize blocks not supported on non-sparse filesystem"
 msgstr ""
 "La funció reservada per redimensionar blocs en línia no està implementada "
 "per sistemes de fitxers no dispersos"
 
-#: misc/mke2fs.c:2423
+#: misc/mke2fs.c:2433
 msgid "blocks per group count out of range"
 msgstr "el nombre de blocs per grup està fora de l'interval permès"
 
-#: misc/mke2fs.c:2445
+#: misc/mke2fs.c:2455
 msgid "Flex_bg feature not enabled, so flex_bg size may not be specified"
 msgstr ""
 "La característica flex_bg no està habilitada, per la qual cosa no és permès "
 "especificar la mida de flex_bg"
 
-#: misc/mke2fs.c:2457
+#: misc/mke2fs.c:2467
 #, c-format
 msgid "invalid inode size %d (min %d/max %d)"
 msgstr "mida de node-i no vàlida (%d) (mín %d/màx %d)"
 
-#: misc/mke2fs.c:2472
+#: misc/mke2fs.c:2482
 #, c-format
 msgid "%d byte inodes are too small for inline data; specify larger size"
 msgstr ""
 
-#: misc/mke2fs.c:2487
+#: misc/mke2fs.c:2497
 #, c-format
 msgid "too many inodes (%llu), raise inode ratio?"
 msgstr "hi ha massa nodes-i (%llu), voleu incrementar-ne la ràtio?"
 
-#: misc/mke2fs.c:2494
+#: misc/mke2fs.c:2504
 #, c-format
 msgid "too many inodes (%llu), specify < 2^32 inodes"
 msgstr ""
 "hi ha massa nodes-i (%llu), hauríeu d'especificar-ne un nombre menor a 2^32"
 
-#: misc/mke2fs.c:2508
+#: misc/mke2fs.c:2518
 #, c-format
 msgid ""
 "inode_size (%u) * inodes_count (%u) too big for a\n"
@@ -6125,76 +6172,76 @@
 "\tun sistema de fitxers amb %llu blocs. Especifiqueu una inode_ratio (-i)\n"
 "\tmés gran o bé un nombre menor de nodes-i (-N).\n"
 
-#: misc/mke2fs.c:2695
+#: misc/mke2fs.c:2705
 msgid "Discarding device blocks: "
 msgstr "Es descarten els blocs del dispositiu: "
 
-#: misc/mke2fs.c:2711
+#: misc/mke2fs.c:2721
 msgid "failed - "
 msgstr "ha fallat - "
 
-#: misc/mke2fs.c:2770
+#: misc/mke2fs.c:2780
 #, fuzzy
 msgid "while initializing quota context"
 msgstr "en inicialitzar la ext2_qcow2_image"
 
-#: misc/mke2fs.c:2777
+#: misc/mke2fs.c:2787
 #, fuzzy
 msgid "while writing quota inodes"
 msgstr "en escriure al node-i del registre de transaccions"
 
-#: misc/mke2fs.c:2802
+#: misc/mke2fs.c:2812
 #, fuzzy, c-format
 msgid "bad error behavior in profile - %s"
 msgstr "comportament d'error erroni - %s"
 
-#: misc/mke2fs.c:2877
+#: misc/mke2fs.c:2888
 #, fuzzy
 msgid "in malloc for android_sparse_params"
 msgstr "en malloc el bad_blocks_filename"
 
-#: misc/mke2fs.c:2890
+#: misc/mke2fs.c:2902
 msgid "while setting up superblock"
 msgstr "en configurar el superbloc"
 
-#: misc/mke2fs.c:2906
+#: misc/mke2fs.c:2918
 msgid ""
 "Extents are not enabled.  The file extent tree can be checksummed, whereas "
 "block maps cannot.  Not enabling extents reduces the coverage of metadata "
 "checksumming.  Pass -O extents to rectify.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2913
+#: misc/mke2fs.c:2925
 msgid ""
 "64-bit filesystem support is not enabled.  The larger fields afforded by "
 "this feature enable full-strength checksumming.  Pass -O 64bit to rectify.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2921
+#: misc/mke2fs.c:2933
 #, fuzzy
 msgid "The metadata_csum_seed feature requires the metadata_csum feature.\n"
 msgstr "El Hurd no és compatible amb la característica de tipus de fitxer.\n"
 
-#: misc/mke2fs.c:2945
+#: misc/mke2fs.c:2957
 msgid "Discard succeeded and will return 0s - skipping inode table wipe\n"
 msgstr ""
 "S'ha descartat correctament i es posaran 0s - se salta la neteja de la taula "
 "de nodes-i\n"
 
-#: misc/mke2fs.c:3044
+#: misc/mke2fs.c:3056
 #, c-format
 msgid "unknown os - %s"
 msgstr "sistema operatiu desconegut - %s"
 
-#: misc/mke2fs.c:3107
+#: misc/mke2fs.c:3119
 msgid "Allocating group tables: "
 msgstr "S'assignen les taules de grup: "
 
-#: misc/mke2fs.c:3115
+#: misc/mke2fs.c:3127
 msgid "while trying to allocate filesystem tables"
 msgstr "en intentar assignar les taules del sistema de fitxers"
 
-#: misc/mke2fs.c:3124
+#: misc/mke2fs.c:3136
 msgid ""
 "\n"
 "\twhile converting subcluster bitmap"
@@ -6202,30 +6249,30 @@
 "\n"
 "\ten convertir el mapa de bits del subgrup de sectors"
 
-#: misc/mke2fs.c:3130
+#: misc/mke2fs.c:3142
 #, c-format
 msgid "%s may be further corrupted by superblock rewrite\n"
 msgstr ""
 
-#: misc/mke2fs.c:3171
+#: misc/mke2fs.c:3183
 #, c-format
 msgid "while zeroing block %llu at end of filesystem"
 msgstr "en escriure zeros al bloc %llu al final del sistema de fitxers"
 
-#: misc/mke2fs.c:3184
+#: misc/mke2fs.c:3196
 msgid "while reserving blocks for online resize"
 msgstr "en reservar blocs per al canvi de mida en línia"
 
-#: misc/mke2fs.c:3196 misc/tune2fs.c:1536
+#: misc/mke2fs.c:3208 misc/tune2fs.c:1538
 msgid "journal"
 msgstr "registre de transaccions"
 
-#: misc/mke2fs.c:3208
+#: misc/mke2fs.c:3220
 #, c-format
 msgid "Adding journal to device %s: "
 msgstr "Addició d'un registre de transaccions al dispositiu %s:"
 
-#: misc/mke2fs.c:3215
+#: misc/mke2fs.c:3227
 #, c-format
 msgid ""
 "\n"
@@ -6234,22 +6281,22 @@
 "\n"
 "\ten intentar afegir un registre de transaccions al dispositiu %s"
 
-#: misc/mke2fs.c:3220 misc/mke2fs.c:3249 misc/mke2fs.c:3287
-#: misc/mk_hugefiles.c:598 misc/tune2fs.c:1565 misc/tune2fs.c:1584
+#: misc/mke2fs.c:3232 misc/mke2fs.c:3261 misc/mke2fs.c:3299
+#: misc/mk_hugefiles.c:598 misc/tune2fs.c:1567 misc/tune2fs.c:1586
 msgid "done\n"
 msgstr "fet\n"
 
-#: misc/mke2fs.c:3226
+#: misc/mke2fs.c:3238
 msgid "Skipping journal creation in super-only mode\n"
 msgstr ""
 "Es salta la creació del registre de transaccions en el mode només súper\n"
 
-#: misc/mke2fs.c:3236
+#: misc/mke2fs.c:3248
 #, c-format
 msgid "Creating journal (%u blocks): "
 msgstr "Creació del registre de transaccions (%u blocs): "
 
-#: misc/mke2fs.c:3245
+#: misc/mke2fs.c:3257
 msgid ""
 "\n"
 "\twhile trying to create journal"
@@ -6257,7 +6304,7 @@
 "\n"
 "\ten intentar crear el registre de transaccions"
 
-#: misc/mke2fs.c:3257 misc/tune2fs.c:1183
+#: misc/mke2fs.c:3269 misc/tune2fs.c:1185
 msgid ""
 "\n"
 "Error while enabling multiple mount protection feature."
@@ -6266,41 +6313,37 @@
 "S'ha produït un error en habilitar la característica de protecció de "
 "muntatge múltiple."
 
-#: misc/mke2fs.c:3262
+#: misc/mke2fs.c:3274
 #, c-format
 msgid "Multiple mount protection is enabled with update interval %d seconds.\n"
 msgstr ""
 "S'ha habilitat la protecció de muntatge múltiple amb un interval "
 "d'actualització de %d segons.\n"
 
-#: misc/mke2fs.c:3278
+#: misc/mke2fs.c:3290
 #, fuzzy
 msgid "Copying files into the device: "
 msgstr ""
 "S'ha produït un error quan es buidaven les escriptures del dispositiu "
 "d'emmagatzemament: %m\n"
 
-#: misc/mke2fs.c:3284
+#: misc/mke2fs.c:3296
 #, fuzzy
 msgid "while populating file system"
 msgstr "en assignar la taula l1"
 
-#: misc/mke2fs.c:3291
+#: misc/mke2fs.c:3303
 msgid "Writing superblocks and filesystem accounting information: "
 msgstr ""
 "Escriptura de la informació dels superblocs i de comptabilitat del sistema "
 "de fitxers:"
 
-#: misc/mke2fs.c:3298
+#: misc/mke2fs.c:3310
 #, fuzzy
-msgid ""
-"\n"
-"Warning, had trouble writing out superblocks.\n"
-msgstr ""
-"\n"
-"Avís: hi ha hagut problemes en escriure els superblocs."
+msgid "while writing out and closing file system"
+msgstr "en escriure zeros al bloc %llu al final del sistema de fitxers"
 
-#: misc/mke2fs.c:3300
+#: misc/mke2fs.c:3313
 msgid ""
 "done\n"
 "\n"
@@ -6419,26 +6462,26 @@
 "\t[-E opció_estesa[,...]] [-T últim_cop_comprovat] [-U UUID]\n"
 "\t[ -I nova_mida_node-i] dispositiu\n"
 
-#: misc/tune2fs.c:222
+#: misc/tune2fs.c:223
 msgid "Journal superblock not found!\n"
 msgstr "No s'ha trobat el superbloc del registre de transaccions\n"
 
-#: misc/tune2fs.c:280
+#: misc/tune2fs.c:281
 msgid "while trying to open external journal"
 msgstr "en intentar obrir el registre de transaccions extern"
 
-#: misc/tune2fs.c:286 misc/tune2fs.c:2843
+#: misc/tune2fs.c:287 misc/tune2fs.c:2845
 #, c-format
 msgid "%s is not a journal device.\n"
 msgstr "%s no és un dispositiu de registre de transaccions.\n"
 
-#: misc/tune2fs.c:296 misc/tune2fs.c:2854
+#: misc/tune2fs.c:297 misc/tune2fs.c:2856
 msgid "Filesystem's UUID not found on journal device.\n"
 msgstr ""
 "No s'ha trobat l'UUID del sistema de fitxers en el dispositiu del registre "
 "de transaccions.\n"
 
-#: misc/tune2fs.c:320
+#: misc/tune2fs.c:321
 msgid ""
 "Cannot locate journal device. It was NOT removed\n"
 "Use -f option to remove missing journal device.\n"
@@ -6448,74 +6491,74 @@
 "Feu servir l'opció -f per treure el dispositiu per al registre de "
 "transaccions que falta.\n"
 
-#: misc/tune2fs.c:329
+#: misc/tune2fs.c:330
 msgid "Journal removed\n"
 msgstr "S'ha suprimit el registre de transaccions\n"
 
-#: misc/tune2fs.c:373
+#: misc/tune2fs.c:374
 msgid "while reading bitmaps"
 msgstr "en llegir els mapes de bits"
 
-#: misc/tune2fs.c:381
+#: misc/tune2fs.c:382
 msgid "while clearing journal inode"
 msgstr "en netejar el node-i del registre de transaccions"
 
-#: misc/tune2fs.c:392
+#: misc/tune2fs.c:393
 msgid "while writing journal inode"
 msgstr "en escriure al node-i del registre de transaccions"
 
-#: misc/tune2fs.c:428 misc/tune2fs.c:451 misc/tune2fs.c:464
+#: misc/tune2fs.c:429 misc/tune2fs.c:452 misc/tune2fs.c:465
 msgid "(and reboot afterwards!)\n"
 msgstr "(i reinicieu després)\n"
 
-#: misc/tune2fs.c:479
+#: misc/tune2fs.c:480
 #, c-format
 msgid "After running e2fsck, please run `resize2fs %s %s"
 msgstr ""
 
-#: misc/tune2fs.c:482
+#: misc/tune2fs.c:483
 #, fuzzy, c-format
 msgid "Please run `resize2fs %s %s"
 msgstr ""
 "Executeu «e2fsck -f %s» primer.\n"
 "\n"
 
-#: misc/tune2fs.c:486
+#: misc/tune2fs.c:487
 #, c-format
 msgid " -z \"%s\""
 msgstr ""
 
-#: misc/tune2fs.c:488
+#: misc/tune2fs.c:489
 #, c-format
 msgid "' to enable 64-bit mode.\n"
 msgstr ""
 
-#: misc/tune2fs.c:490
+#: misc/tune2fs.c:491
 #, c-format
 msgid "' to disable 64-bit mode.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1085
+#: misc/tune2fs.c:1087
 msgid ""
 "WARNING: Could not confirm kernel support for metadata_csum_seed.\n"
 "  This requires Linux >= v4.4.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1121
+#: misc/tune2fs.c:1123
 #, c-format
 msgid "Clearing filesystem feature '%s' not supported.\n"
 msgstr ""
 "La característica de neteja del sistema de fitxers «%s» no està "
 "implementada.\n"
 
-#: misc/tune2fs.c:1127
+#: misc/tune2fs.c:1129
 #, c-format
 msgid "Setting filesystem feature '%s' not supported.\n"
 msgstr ""
 "L'establiment de la característica del sistema de fitxers «%s» no està "
 "implementada.\n"
 
-#: misc/tune2fs.c:1136
+#: misc/tune2fs.c:1138
 msgid ""
 "The has_journal feature may only be cleared when the filesystem is\n"
 "unmounted or mounted read-only.\n"
@@ -6524,7 +6567,7 @@
 "no\n"
 "està muntat, o bé està muntat en mode de només lectura.\n"
 
-#: misc/tune2fs.c:1144
+#: misc/tune2fs.c:1146
 msgid ""
 "The needs_recovery flag is set.  Please run e2fsck before clearing\n"
 "the has_journal flag.\n"
@@ -6532,7 +6575,7 @@
 "El senyalador needs_recovery està establert. Hauríeu d'executar l'e2fsck\n"
 "abans de netejar el senyalador has_journal.\n"
 
-#: misc/tune2fs.c:1162
+#: misc/tune2fs.c:1164
 msgid ""
 "Setting filesystem feature 'sparse_super' not supported\n"
 "for filesystems with the meta_bg feature enabled.\n"
@@ -6541,7 +6584,7 @@
 "està implementada\n"
 "per als sistemes de fitxers amb l'opció meta_bg habilitada\n"
 
-#: misc/tune2fs.c:1175
+#: misc/tune2fs.c:1177
 msgid ""
 "The multiple mount protection feature can't\n"
 "be set if the filesystem is mounted or\n"
@@ -6551,14 +6594,14 @@
 "no es pot habilitar si el sistema de fitxers està muntat\n"
 "o és de només lectura.\n"
 
-#: misc/tune2fs.c:1193
+#: misc/tune2fs.c:1195
 #, c-format
 msgid "Multiple mount protection has been enabled with update interval %ds.\n"
 msgstr ""
 "S'ha habilitat la protecció contra muntatges múltiples amb un interval "
 "d'actualització de %ds.\n"
 
-#: misc/tune2fs.c:1202
+#: misc/tune2fs.c:1204
 msgid ""
 "The multiple mount protection feature cannot\n"
 "be disabled if the filesystem is readonly.\n"
@@ -6566,21 +6609,21 @@
 "La protecció contra muntatges múltiples no es pot\n"
 "deshabilitar si el sistema de fitxers és de només lectura.\n"
 
-#: misc/tune2fs.c:1210
+#: misc/tune2fs.c:1212
 msgid "Error while reading bitmaps\n"
 msgstr "S'ha produït un en llegir els mapes de bits\n"
 
-#: misc/tune2fs.c:1219
+#: misc/tune2fs.c:1221
 #, c-format
 msgid "Magic number in MMP block does not match. expected: %x, actual: %x\n"
 msgstr ""
 "Els númeri màgic del bloc MMP no coincideix. S'esperava: %x, i és: %x\n"
 
-#: misc/tune2fs.c:1224
+#: misc/tune2fs.c:1226
 msgid "while reading MMP block."
 msgstr "en llegir el bloc MMP."
 
-#: misc/tune2fs.c:1256
+#: misc/tune2fs.c:1258
 msgid ""
 "Clearing the flex_bg flag would cause the the filesystem to be\n"
 "inconsistent.\n"
@@ -6588,7 +6631,7 @@
 "Treure el senyalador flex_bg pot fer que el sistema de fitxers\n"
 "no sigui consistent.\n"
 
-#: misc/tune2fs.c:1267
+#: misc/tune2fs.c:1269
 msgid ""
 "The huge_file feature may only be cleared when the filesystem is\n"
 "unmounted or mounted read-only.\n"
@@ -6597,52 +6640,52 @@
 "no\n"
 "està muntat, o bé està muntat en mode de només lectura.\n"
 
-#: misc/tune2fs.c:1278
+#: misc/tune2fs.c:1280
 msgid "Enabling checksums could take some time."
 msgstr ""
 
-#: misc/tune2fs.c:1280
+#: misc/tune2fs.c:1282
 msgid "Cannot enable metadata_csum on a mounted filesystem!\n"
 msgstr ""
 
-#: misc/tune2fs.c:1286
+#: misc/tune2fs.c:1288
 msgid ""
 "Extents are not enabled.  The file extent tree can be checksummed, whereas "
 "block maps cannot.  Not enabling extents reduces the coverage of metadata "
 "checksumming.  Re-run with -O extent to rectify.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1293
+#: misc/tune2fs.c:1295
 msgid ""
 "64-bit filesystem support is not enabled.  The larger fields afforded by "
 "this feature enable full-strength checksumming.  Run resize2fs -b to "
 "rectify.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1319
+#: misc/tune2fs.c:1321
 msgid "Disabling checksums could take some time."
 msgstr ""
 
-#: misc/tune2fs.c:1321
+#: misc/tune2fs.c:1323
 msgid "Cannot disable metadata_csum on a mounted filesystem!\n"
 msgstr ""
 
-#: misc/tune2fs.c:1384
+#: misc/tune2fs.c:1386
 #, c-format
 msgid "Cannot enable 64-bit mode while mounted!\n"
 msgstr ""
 
-#: misc/tune2fs.c:1394
+#: misc/tune2fs.c:1396
 #, c-format
 msgid "Cannot disable 64-bit mode while mounted!\n"
 msgstr ""
 
-#: misc/tune2fs.c:1424
+#: misc/tune2fs.c:1426
 #, c-format
 msgid "Cannot enable project feature; inode size too small.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1445
+#: misc/tune2fs.c:1447
 msgid ""
 "\n"
 "Warning: '^quota' option overrides '-Q'arguments.\n"
@@ -6650,7 +6693,7 @@
 "\n"
 "Avís: L'opció «^quota» substitueix els arguments de «-Q».\n"
 
-#: misc/tune2fs.c:1463
+#: misc/tune2fs.c:1465
 #, fuzzy
 msgid ""
 "Setting feature 'metadata_csum_seed' is only supported\n"
@@ -6660,22 +6703,22 @@
 "està implementada\n"
 "per als sistemes de fitxers amb l'opció meta_bg habilitada\n"
 
-#: misc/tune2fs.c:1481
+#: misc/tune2fs.c:1483
 msgid ""
 "UUID has changed since enabling metadata_csum.  Filesystem must be "
 "unmounted \n"
 "to safely rewrite all metadata to match the new UUID.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1487
+#: misc/tune2fs.c:1489
 msgid "Recalculating checksums could take some time."
 msgstr ""
 
-#: misc/tune2fs.c:1529
+#: misc/tune2fs.c:1531
 msgid "The filesystem already has a journal.\n"
 msgstr "El sistema de fitxers ja té un registre de transaccions.\n"
 
-#: misc/tune2fs.c:1549
+#: misc/tune2fs.c:1551
 #, c-format
 msgid ""
 "\n"
@@ -6684,21 +6727,21 @@
 "\n"
 "\ten intentar obrir el registre de transaccions a %s\n"
 
-#: misc/tune2fs.c:1553
+#: misc/tune2fs.c:1555
 #, c-format
 msgid "Creating journal on device %s: "
 msgstr "Creació del registre de transaccions al dispositiu %s:"
 
-#: misc/tune2fs.c:1561
+#: misc/tune2fs.c:1563
 #, c-format
 msgid "while adding filesystem to journal on %s"
 msgstr "en afegir un sistema de fitxers al registre de transaccions a %s"
 
-#: misc/tune2fs.c:1567
+#: misc/tune2fs.c:1569
 msgid "Creating journal inode: "
 msgstr "Creació del node-i del registre de transaccions:"
 
-#: misc/tune2fs.c:1581
+#: misc/tune2fs.c:1583
 msgid ""
 "\n"
 "\twhile trying to create journal file"
@@ -6706,32 +6749,32 @@
 "\n"
 "\ten intentar crear el fitxer del registre de transaccions"
 
-#: misc/tune2fs.c:1619
+#: misc/tune2fs.c:1621
 #, c-format
 msgid "Cannot enable project quota; inode size too small.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1632
+#: misc/tune2fs.c:1634
 #, fuzzy
 msgid "while initializing quota context in support library"
 msgstr "en inicialitzar el superbloc del registre de transaccions"
 
-#: misc/tune2fs.c:1647
+#: misc/tune2fs.c:1649
 #, fuzzy, c-format
 msgid "while updating quota limits (%d)"
 msgstr "en actualitzar el node-i de block erronis"
 
-#: misc/tune2fs.c:1655
+#: misc/tune2fs.c:1657
 #, fuzzy, c-format
 msgid "while writing quota file (%d)"
 msgstr "en escriure la taula dels nodes-i (grup %d)"
 
-#: misc/tune2fs.c:1673
+#: misc/tune2fs.c:1675
 #, fuzzy, c-format
 msgid "while removing quota file (%d)"
 msgstr "en llegir la taula dels nodes-i (grup %d)"
 
-#: misc/tune2fs.c:1716
+#: misc/tune2fs.c:1718
 #, fuzzy
 msgid ""
 "\n"
@@ -6754,65 +6797,65 @@
 "\n"
 "\n"
 
-#: misc/tune2fs.c:1774
+#: misc/tune2fs.c:1776
 #, c-format
 msgid "Couldn't parse date/time specifier: %s"
 msgstr "No s'ha pogut analitzar l'especificador de data/hora: %s"
 
-#: misc/tune2fs.c:1799 misc/tune2fs.c:1812
+#: misc/tune2fs.c:1801 misc/tune2fs.c:1814
 #, c-format
 msgid "bad mounts count - %s"
 msgstr "nombre de muntatges erroni - %s"
 
-#: misc/tune2fs.c:1855
+#: misc/tune2fs.c:1857
 #, c-format
 msgid "bad gid/group name - %s"
 msgstr "nom de grup/gid erroni - %s"
 
-#: misc/tune2fs.c:1888
+#: misc/tune2fs.c:1890
 #, c-format
 msgid "bad interval - %s"
 msgstr "interval erroni - %s"
 
-#: misc/tune2fs.c:1917
+#: misc/tune2fs.c:1919
 #, c-format
 msgid "bad reserved block ratio - %s"
 msgstr "ràtio de blocs reservats errònia - %s"
 
-#: misc/tune2fs.c:1932
+#: misc/tune2fs.c:1934
 msgid "-o may only be specified once"
 msgstr "-o només es pot especificar una vegada"
 
-#: misc/tune2fs.c:1941
+#: misc/tune2fs.c:1943
 msgid "-O may only be specified once"
 msgstr "-O només es pot especificar una vegada"
 
-#: misc/tune2fs.c:1958
+#: misc/tune2fs.c:1960
 #, c-format
 msgid "bad reserved blocks count - %s"
 msgstr "número de blocs reservats erroni - %s"
 
-#: misc/tune2fs.c:1987
+#: misc/tune2fs.c:1989
 #, c-format
 msgid "bad uid/user name - %s"
 msgstr "nom d'usuari/uid erroni - %s"
 
-#: misc/tune2fs.c:2004
+#: misc/tune2fs.c:2006
 #, c-format
 msgid "bad inode size - %s"
 msgstr "mida del node-i errònia - %s"
 
-#: misc/tune2fs.c:2011
+#: misc/tune2fs.c:2013
 #, c-format
 msgid "Inode size must be a power of two- %s"
 msgstr "La mida del node-i ha de ser una potència de 2 - %s"
 
-#: misc/tune2fs.c:2108
+#: misc/tune2fs.c:2110
 #, c-format
 msgid "mmp_update_interval too big: %lu\n"
 msgstr "L'mmp_update_interval és massa gran: %lu\n"
 
-#: misc/tune2fs.c:2113
+#: misc/tune2fs.c:2115
 #, c-format
 msgid "Setting multiple mount protection update interval to %lu second\n"
 msgid_plural ""
@@ -6824,27 +6867,27 @@
 "S'estableix l'interval d'actualització de la protecció contra muntatges "
 "múltiples a %lu segons\n"
 
-#: misc/tune2fs.c:2136
+#: misc/tune2fs.c:2138
 #, c-format
 msgid "Invalid RAID stride: %s\n"
 msgstr "L'stride del RAID no és vàlid: %s\n"
 
-#: misc/tune2fs.c:2151
+#: misc/tune2fs.c:2153
 #, c-format
 msgid "Invalid RAID stripe-width: %s\n"
 msgstr "L'stripe-width del RAID no és vàlid: %s\n"
 
-#: misc/tune2fs.c:2166
+#: misc/tune2fs.c:2168
 #, c-format
 msgid "Invalid hash algorithm: %s\n"
 msgstr "Algorisme de resum no vàlid: %s\n"
 
-#: misc/tune2fs.c:2172
+#: misc/tune2fs.c:2174
 #, c-format
 msgid "Setting default hash algorithm to %s (%d)\n"
 msgstr "Establiment de l'algorisme de resum predeterminat a %s (%d)\n"
 
-#: misc/tune2fs.c:2191
+#: misc/tune2fs.c:2193
 #, fuzzy
 msgid ""
 "\n"
@@ -6877,32 +6920,32 @@
 "\ttest_fs\n"
 "\t^test_fs\n"
 
-#: misc/tune2fs.c:2661
+#: misc/tune2fs.c:2663
 msgid "Failed to read inode bitmap\n"
 msgstr "No s'ha pogut llegit el mapa de bits del node-i\n"
 
-#: misc/tune2fs.c:2666
+#: misc/tune2fs.c:2668
 msgid "Failed to read block bitmap\n"
 msgstr "No s'ha pogut llegit el mapa de bits del bloc\n"
 
-#: misc/tune2fs.c:2683 resize/resize2fs.c:1276
+#: misc/tune2fs.c:2685 resize/resize2fs.c:1277
 msgid "blocks to be moved"
 msgstr "blocs a moure"
 
-#: misc/tune2fs.c:2686
+#: misc/tune2fs.c:2688
 msgid "Failed to allocate block bitmap when increasing inode size\n"
 msgstr ""
 "No s'ha pogut assignar el mapa de bits del bloc en fer més gran el node-i\n"
 
-#: misc/tune2fs.c:2692
+#: misc/tune2fs.c:2694
 msgid "Not enough space to increase inode size \n"
 msgstr "No hi ha prou espai per fer més gran el node-i\n"
 
-#: misc/tune2fs.c:2697
+#: misc/tune2fs.c:2699
 msgid "Failed to relocate blocks during inode resize \n"
 msgstr "No s'ha pogut reubicar els blocs en canviar la mida de node-i\n"
 
-#: misc/tune2fs.c:2729
+#: misc/tune2fs.c:2731
 msgid ""
 "Error in resizing the inode size.\n"
 "Run e2undo to undo the file system changes. \n"
@@ -6910,7 +6953,16 @@
 "S'ha produït un error en canviar la mida del node-i.\n"
 "Executeu l'e2undo per a desfer els canvis al sistema de fitxers. \n"
 
-#: misc/tune2fs.c:2941
+#: misc/tune2fs.c:2936
+msgid ""
+"If you are sure the filesystem is not in use on any node, run:\n"
+"'tune2fs -f -E clear_mmp {device}'\n"
+msgstr ""
+"Si esteu segur que el sistema de fitxers no s'està fent servir a cap node, "
+"executeu:\n"
+"'tune2fs -f -E clear_mmp {dispositiu}'\n"
+
+#: misc/tune2fs.c:2943
 #, c-format
 msgid ""
 "MMP block magic is bad. Try to fix it by running:\n"
@@ -6919,30 +6971,30 @@
 "El bloc màgic MMP està malament. Proveu d'arreglar-lo fent servir:\n"
 "'e2fsck -f %s'\n"
 
-#: misc/tune2fs.c:2953
+#: misc/tune2fs.c:2955
 #, fuzzy
 msgid "Cannot modify a journal device.\n"
 msgstr "%s no és un dispositiu de registre de transaccions.\n"
 
-#: misc/tune2fs.c:2966
+#: misc/tune2fs.c:2968
 #, c-format
 msgid "The inode size is already %lu\n"
 msgstr "La mida del node-i ja és %lu\n"
 
-#: misc/tune2fs.c:2973
+#: misc/tune2fs.c:2975
 msgid "Shrinking inode size is not supported\n"
 msgstr "La reducció de la mida del node-i no està implementada\n"
 
-#: misc/tune2fs.c:2978
+#: misc/tune2fs.c:2980
 #, c-format
 msgid "Invalid inode size %lu (max %d)\n"
 msgstr "La mida del node-i no és vàlida %lu (màx %d)\n"
 
-#: misc/tune2fs.c:2984
+#: misc/tune2fs.c:2986
 msgid "Resizing inodes could take some time."
 msgstr ""
 
-#: misc/tune2fs.c:3032
+#: misc/tune2fs.c:3034
 #, c-format
 msgid ""
 "Warning: The journal is dirty. You may wish to replay the journal like:\n"
@@ -6953,57 +7005,57 @@
 "by journal recovery.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3043
+#: misc/tune2fs.c:3045
 #, fuzzy, c-format
 msgid "Recovering journal.\n"
 msgstr "%s: recuperació del registre de transaccions\n"
 
-#: misc/tune2fs.c:3061
+#: misc/tune2fs.c:3063
 #, c-format
 msgid "Setting maximal mount count to %d\n"
 msgstr "Establiment del nombre màxim de muntatges a %d\n"
 
-#: misc/tune2fs.c:3067
+#: misc/tune2fs.c:3069
 #, c-format
 msgid "Setting current mount count to %d\n"
 msgstr "Establiment del nombre de muntatges actual a %d\n"
 
-#: misc/tune2fs.c:3072
+#: misc/tune2fs.c:3074
 #, c-format
 msgid "Setting error behavior to %d\n"
 msgstr "Establiment del comportament d'error a %d\n"
 
-#: misc/tune2fs.c:3077
+#: misc/tune2fs.c:3079
 #, c-format
 msgid "Setting reserved blocks gid to %lu\n"
 msgstr "Establiment del GID dels blocs reservats a %lu\n"
 
-#: misc/tune2fs.c:3082
+#: misc/tune2fs.c:3084
 #, c-format
 msgid "interval between checks is too big (%lu)"
 msgstr "L'interval entre comprovacions és massa gran (%lu)"
 
-#: misc/tune2fs.c:3089
+#: misc/tune2fs.c:3091
 #, c-format
 msgid "Setting interval between checks to %lu seconds\n"
 msgstr "Establiment de l'interval entre comprovacions a %lu segons\n"
 
-#: misc/tune2fs.c:3096
+#: misc/tune2fs.c:3098
 #, c-format
 msgid "Setting reserved blocks percentage to %g%% (%llu blocks)\n"
 msgstr "S'estableix el percentatge de blocs reservats a %g%% (%llu blocs)\n"
 
-#: misc/tune2fs.c:3102
+#: misc/tune2fs.c:3104
 #, c-format
 msgid "reserved blocks count is too big (%llu)"
 msgstr "el contador de blocs reservats és massa gran (%llu)"
 
-#: misc/tune2fs.c:3109
+#: misc/tune2fs.c:3111
 #, c-format
 msgid "Setting reserved blocks count to %llu\n"
 msgstr "S'estableix el contador de blocs reservats a %llu\n"
 
-#: misc/tune2fs.c:3114
+#: misc/tune2fs.c:3116
 msgid ""
 "\n"
 "The filesystem already has sparse superblocks.\n"
@@ -7011,7 +7063,7 @@
 "\n"
 "El sistema de fitxers ja té superblocs dispersos.\n"
 
-#: misc/tune2fs.c:3117
+#: misc/tune2fs.c:3119
 msgid ""
 "\n"
 "Setting the sparse superblock flag not supported\n"
@@ -7021,7 +7073,7 @@
 "L'establiment del senyalador de superbloc dispers no està implementat\n"
 "pels sistemes de fitxers amb la característica meta_bg  habilitada.\n"
 
-#: misc/tune2fs.c:3127
+#: misc/tune2fs.c:3129
 #, c-format
 msgid ""
 "\n"
@@ -7030,7 +7082,7 @@
 "\n"
 "S'ha establert el senyalador de superbloc dispers. %s"
 
-#: misc/tune2fs.c:3132
+#: misc/tune2fs.c:3134
 msgid ""
 "\n"
 "Clearing the sparse superblock flag not supported.\n"
@@ -7038,58 +7090,58 @@
 "\n"
 "La neteja del senyalador de superbloc dispers no està implementada.\n"
 
-#: misc/tune2fs.c:3140
+#: misc/tune2fs.c:3142
 #, c-format
 msgid "Setting time filesystem last checked to %s\n"
 msgstr "Establiment de la darrera comprovació del sistema de fitxers a %s\n"
 
-#: misc/tune2fs.c:3146
+#: misc/tune2fs.c:3148
 #, c-format
 msgid "Setting reserved blocks uid to %lu\n"
 msgstr "Establiment de l'UID dels blocs reservats a %lu\n"
 
-#: misc/tune2fs.c:3178
+#: misc/tune2fs.c:3180
 msgid "Error in using clear_mmp. It must be used with -f\n"
 msgstr ""
 "S'ha produït un error en fer servir clear_mmp. S'ha de fer servir amb -f\n"
 
-#: misc/tune2fs.c:3196
+#: misc/tune2fs.c:3198
 msgid ""
 "The quota feature may only be changed when the filesystem is unmounted.\n"
 msgstr ""
 "La característica quota s'ha de canviar només quan el sistema de fitxers "
 "està desmuntat.\n"
 
-#: misc/tune2fs.c:3220
+#: misc/tune2fs.c:3222
 msgid "The UUID may only be changed when the filesystem is unmounted.\n"
 msgstr ""
 "L'UUID s'ha de canviar només quan el sistema de fitxers està desmuntat.\n"
 
-#: misc/tune2fs.c:3223
+#: misc/tune2fs.c:3225
 msgid ""
 "If you only use kernels newer than v4.4, run 'tune2fs -O metadata_csum_seed' "
 "and re-run this command.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3232
+#: misc/tune2fs.c:3234
 msgid "Setting UUID on a checksummed filesystem could take some time."
 msgstr ""
 
-#: misc/tune2fs.c:3257
+#: misc/tune2fs.c:3259
 msgid "Invalid UUID format\n"
 msgstr "El format de l'UUID no és vàlid\n"
 
-#: misc/tune2fs.c:3273
+#: misc/tune2fs.c:3275
 msgid "Need to update journal superblock.\n"
 msgstr "S'ha d'actualitzar el registre de transaccions\n"
 
-#: misc/tune2fs.c:3299
+#: misc/tune2fs.c:3301
 msgid "The inode size may only be changed when the filesystem is unmounted.\n"
 msgstr ""
 "La mida del node-i només es pot canviar quan el sistema de fitxers està "
 "desmuntat.\n"
 
-#: misc/tune2fs.c:3306
+#: misc/tune2fs.c:3308
 msgid ""
 "Changing the inode size not supported for filesystems with the flex_bg\n"
 "feature enabled.\n"
@@ -7097,26 +7149,26 @@
 "No està implementat el canvi de mida del node-i en sistemes de fitxers\n"
 "amb la característica flex_bg habilitada.\n"
 
-#: misc/tune2fs.c:3324
+#: misc/tune2fs.c:3326
 #, c-format
 msgid "Setting inode size %lu\n"
 msgstr "S'estableix la mida de node-i a %lu\n"
 
-#: misc/tune2fs.c:3328
+#: misc/tune2fs.c:3330
 msgid "Failed to change inode size\n"
 msgstr "No s'ha pogut canviar la mida del node-i\n"
 
-#: misc/tune2fs.c:3342
+#: misc/tune2fs.c:3344
 #, c-format
 msgid "Setting stride size to %d\n"
 msgstr "S'estableix la mida de l'stride a %d\n"
 
-#: misc/tune2fs.c:3347
+#: misc/tune2fs.c:3349
 #, c-format
 msgid "Setting stripe width to %d\n"
 msgstr "S'estableix l'amplada de l'stride a %d\n"
 
-#: misc/tune2fs.c:3354
+#: misc/tune2fs.c:3356
 #, c-format
 msgid "Setting extended default mount options to '%s'\n"
 msgstr "S'estableix les opcions esteses de muntatge per defecte «%s»\n"
@@ -7637,12 +7689,12 @@
 msgid "While trying to extend the last group"
 msgstr "En intentar ampliar el darrer grup"
 
-#: resize/online.c:284
+#: resize/online.c:277
 #, c-format
 msgid "While trying to add group #%d"
 msgstr "En intentar afegir el grup #%d"
 
-#: resize/online.c:295
+#: resize/online.c:288
 #, c-format
 msgid ""
 "Filesystem at %s is mounted on %s, and on-line resizing is not supported on "
@@ -7652,38 +7704,38 @@
 "compatible amb el canvi de mida en línia.\n"
 
 #: resize/resize2fs.c:759
-#, c-format
-msgid "inodes (%llu) must be less than %u"
+#, fuzzy, c-format
+msgid "inodes (%llu) must be less than %u\n"
 msgstr "el nombre de nodes-i (%llu) ha de ser menor que %u"
 
-#: resize/resize2fs.c:1037
+#: resize/resize2fs.c:1038
 msgid "reserved blocks"
 msgstr "blocs reservats"
 
-#: resize/resize2fs.c:1281
+#: resize/resize2fs.c:1282
 msgid "meta-data blocks"
 msgstr "blocs de metadades"
 
-#: resize/resize2fs.c:1385 resize/resize2fs.c:2473
+#: resize/resize2fs.c:1386 resize/resize2fs.c:2475
 msgid "new meta blocks"
 msgstr "nous blocs de metadades"
 
-#: resize/resize2fs.c:2696
+#: resize/resize2fs.c:2698
 msgid "Should never happen!  No sb in last super_sparse bg?\n"
 msgstr "No hauria de passar mai!  No hi ha sb al darrer super_sparse bg?\n"
 
-#: resize/resize2fs.c:2701
+#: resize/resize2fs.c:2703
 msgid "Should never happen!  Unexpected old_desc in super_sparse bg?\n"
 msgstr "No hauria de passar mai!  old_desc inesperat al super_sparse bg?\n"
 
 # FIXME: (dpm)
-#: resize/resize2fs.c:2774
+#: resize/resize2fs.c:2776
 msgid "Should never happen: resize inode corrupt!\n"
 msgstr "Això no hauria de passar mai: canvi de mida del node-i malmesa\n"
 
 #: lib/ext2fs/ext2_err.c:11
 #, fuzzy
-msgid "EXT2FS Library version 1.44.0-rc1"
+msgid "EXT2FS Library version 1.44.4"