Merge tag 'v1.46.2' into debian/master

v1.46.2
diff --git a/.release-checklist b/.release-checklist
index c8a6fc2..276dd8a 100644
--- a/.release-checklist
+++ b/.release-checklist
@@ -2,19 +2,18 @@
 
 2)  "make check"!!!
 
-3)  Use "git log" to assemble release notes.
+3)  Use "git log" to assemble release notes and update RELEASE-NOTES symlink.
 
-4)  Run "(cd po; make e2fsprogs.pot-update)" to update the translation template.
-
-5)  Update files which contain version information
+4)  Update files which contain version information
 	version.h
 	README
-	RELEASE-NOTES
 	e2fsprogs.lsm
 	e2fsprogs.spec
 	doc/libext2fs.texinfo (three places)
 
-6)  Make source distribution
+5)  Run "(cd po; make e2fsprogs.pot-update)" to update the translation template.
 
-7)  Adjust sizes in e2fsprogs-VER.lsm; rebuild source files; rebuild RPM files
+6)  Make source tarfile
+
+7)  Adjust sizes in e2fsprogs-VER.lsm; rebuild source files; regenerate source tarfile
 
diff --git a/README b/README
index 4f516e0..fa4d997 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-	This is the new version (1.46.1) of the second extended file
+	This is the new version (1.46.2) of the second extended file
 system management programs.
 
 	From time to time, I release new versions of e2fsprogs, to fix
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index c894cce..a0e8f57 120000
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -1 +1 @@
-doc/RelNotes/v1.46.1.txt
\ No newline at end of file
+doc/RelNotes/v1.46.2.txt
\ No newline at end of file
diff --git a/contrib/fallocate.c b/contrib/fallocate.c
index d4273d8..16c08ab 100644
--- a/contrib/fallocate.c
+++ b/contrib/fallocate.c
@@ -95,8 +95,8 @@
 	int	fd;
 	char	*fname;
 	int	opt;
-	loff_t	length = -2LL;
-	loff_t	offset = 0;
+	ext2_loff_t length = -2LL;
+	ext2_loff_t offset = 0;
 	int	falloc_mode = 0;
 	int	error;
 	int	tflag = 0;
diff --git a/debian/changelog b/debian/changelog
index 42d4b77..f462967 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,29 @@
+e2fsprogs (1.46.2-1) unstable; urgency=medium
+
+  * New upstream release
+  * Add support for the FS_NOCOMP_FL flag to chattr and lsattr.
+  * Fix Direct I/O support on block devices where the logical block size is
+    greater 1k.
+  * Fix debugfs's logdump so it works on file systems whose block size is
+    greater than 8k.
+  * Fix the debugfs rdump and ls commands so they will work correctly for
+    uid's and gid's => 65536.
+  * Teach the tune2fs program to support "random" as an argument to the -c
+    option, which sets the maximum mount count.  (Closes: #926293)
+  * Fix a where e2fsck could a crash when there is error while e2fsck is
+    trying to open the file system, and e2fsck calls ext2fs_mmp_stop()
+    before MMP has been initialized.  (Closes: #696609)
+  * Fix the debugfs write and symlink commands so they support targets which
+    contain a pathname (instead of only working when writing a file or
+    creating a symlink in the current directory).
+  * When resizing a small file systems to a super-large file system size,
+    avoid issuing some scary bitmap operation warnings.  
+  * Improved error checking in the fast commit replay code in e2fsck.
+  * Updated and clarified the chattr man page.
+  * Update the Spanish translation from the translation project.
+
+ -- Theodore Y. Ts'o <tytso@mit.edu>  Sun, 28 Feb 2021 21:24:34 -0500
+
 e2fsprogs (1.46.1-1) unstable; urgency=medium
 
   * Drop transitional packages libcomerr2, e2fslibs, and e2fslibs-dev
diff --git a/debugfs/debugfs.c b/debugfs/debugfs.c
index 132c5f9..b67a88b 100644
--- a/debugfs/debugfs.c
+++ b/debugfs/debugfs.c
@@ -493,11 +493,12 @@
 		        "inode table at %llu\n"
 		        "           %u free %s%s, "
 		        "%u free %s, "
-		        "%u used %s%s",
-		        i, ext2fs_block_bitmap_loc(current_fs, i),
-		        ext2fs_inode_bitmap_loc(current_fs, i),
-			ext2fs_inode_table_loc(current_fs, i),
-		        ext2fs_bg_free_blocks_count(current_fs, i), units,
+		        "%u used %s%s", i,
+		        (unsigned long long) ext2fs_block_bitmap_loc(current_fs, i),
+		        (unsigned long long) ext2fs_inode_bitmap_loc(current_fs, i),
+			(unsigned long long) ext2fs_inode_table_loc(current_fs, i),
+		        ext2fs_bg_free_blocks_count(current_fs, i),
+			units,
 		        ext2fs_bg_free_blocks_count(current_fs, i) != 1 ?
 			"s" : "",
 		        ext2fs_bg_free_inodes_count(current_fs, i),
@@ -567,11 +568,13 @@
 		fprintf(lb->f, ", ");
 	if (lb->first_block == lb->last_block)
 		fprintf(lb->f, "(%lld):%llu",
-			(long long)lb->first_bcnt, lb->first_block);
+			(long long)lb->first_bcnt,
+			(unsigned long long) lb->first_block);
 	else
 		fprintf(lb->f, "(%lld-%lld):%llu-%llu",
 			(long long)lb->first_bcnt, (long long)lb->last_bcnt,
-			lb->first_block, lb->last_block);
+			(unsigned long long) lb->first_block,
+			(unsigned long long) lb->last_block);
 	lb->first_block = 0;
 }
 
@@ -721,18 +724,18 @@
 					info.curr_level, info.max_depth,
 					info.curr_entry, info.num_entries,
 					logical_width,
-					extent.e_lblk,
+					(unsigned long long) extent.e_lblk,
 					logical_width,
-					extent.e_lblk + (extent.e_len - 1),
+					(unsigned long long) extent.e_lblk + (extent.e_len - 1),
 					physical_width,
-					extent.e_pblk,
+					(unsigned long long) extent.e_pblk,
 					physical_width+3, "", extent.e_len);
 				continue;
 			}
 
 			fprintf(f, "%s(ETB%d):%llu",
 				printed ? ", " : "", info.curr_level,
-				extent.e_pblk);
+				(unsigned long long) extent.e_pblk);
 			printed = 1;
 			continue;
 		}
@@ -743,13 +746,13 @@
 				info.curr_level, info.max_depth,
 				info.curr_entry, info.num_entries,
 				logical_width,
-				extent.e_lblk,
+				(unsigned long long) extent.e_lblk,
 				logical_width,
-				extent.e_lblk + (extent.e_len - 1),
+				(unsigned long long) extent.e_lblk + (extent.e_len - 1),
 				physical_width,
-				extent.e_pblk,
+				(unsigned long long) extent.e_pblk,
 				physical_width,
-				extent.e_pblk + (extent.e_len - 1),
+				(unsigned long long) extent.e_pblk + (extent.e_len - 1),
 				extent.e_len,
 				extent.e_flags & EXT2_EXTENT_FLAGS_UNINIT ?
 					"Uninit" : "");
@@ -762,20 +765,20 @@
 			fprintf(f,
 				"%s(%lld%s):%lld",
 				printed ? ", " : "",
-				extent.e_lblk,
+				(unsigned long long) extent.e_lblk,
 				extent.e_flags & EXT2_EXTENT_FLAGS_UNINIT ?
 				"[u]" : "",
-				extent.e_pblk);
+				(unsigned long long) extent.e_pblk);
 		else
 			fprintf(f,
 				"%s(%lld-%lld%s):%lld-%lld",
 				printed ? ", " : "",
-				extent.e_lblk,
-				extent.e_lblk + (extent.e_len - 1),
+				(unsigned long long) extent.e_lblk,
+				(unsigned long long) extent.e_lblk + (extent.e_len - 1),
 				extent.e_flags & EXT2_EXTENT_FLAGS_UNINIT ?
 					"[u]" : "",
-				extent.e_pblk,
-				extent.e_pblk + (extent.e_len - 1));
+				(unsigned long long) extent.e_pblk,
+				(unsigned long long) extent.e_pblk + (extent.e_len - 1));
 		printed = 1;
 	}
 	if (printed)
@@ -861,7 +864,7 @@
 		fprintf(out, "   Project: %5d", large_inode->i_projid);
 	fputs("   Size: ", out);
 	if (LINUX_S_ISREG(inode->i_mode) || LINUX_S_ISDIR(inode->i_mode))
-		fprintf(out, "%llu\n", EXT2_I_SIZE(inode));
+		fprintf(out, "%llu\n", (unsigned long long) EXT2_I_SIZE(inode));
 	else
 		fprintf(out, "%u\n", inode->i_size);
 	if (os == EXT2_OS_HURD)
@@ -1085,7 +1088,7 @@
 			     int ref_offset EXT2FS_ATTR((unused)),
 			     void *private EXT2FS_ATTR((unused)))
 {
-	printf("%llu ", *blocknr);
+	printf("%llu ", (unsigned long long) *blocknr);
 	return 0;
 }
 
@@ -1232,7 +1235,7 @@
 	while (count-- > 0) {
 		if (!ext2fs_test_block_bitmap2(current_fs->block_map,block))
 			com_err(argv[0], 0, "Warning: block %llu already clear",
-				block);
+				(unsigned long long) block);
 		ext2fs_unmark_block_bitmap2(current_fs->block_map,block);
 		block++;
 	}
@@ -1252,7 +1255,7 @@
 	while (count-- > 0) {
 		if (ext2fs_test_block_bitmap2(current_fs->block_map,block))
 			com_err(argv[0], 0, "Warning: block %llu already set",
-				block);
+				(unsigned long long) block);
 		ext2fs_mark_block_bitmap2(current_fs->block_map,block);
 		block++;
 	}
@@ -1270,9 +1273,11 @@
 		return;
 	while (count-- > 0) {
 		if (ext2fs_test_block_bitmap2(current_fs->block_map,block))
-			printf("Block %llu marked in use\n", block);
+			printf("Block %llu marked in use\n",
+			       (unsigned long long) block);
 		else
-			printf("Block %llu not in use\n", block);
+			printf("Block %llu not in use\n",
+			       (unsigned long long) block);
 		block++;
 	}
 }
@@ -1708,7 +1713,7 @@
 			com_err("ext2fs_new_block", retval, 0);
 			return;
 		} else
-			printf("%llu ", free_blk);
+			printf("%llu ", (unsigned long long) free_blk);
 	}
  	printf("\n");
 }
@@ -2110,10 +2115,11 @@
 			       &ret_flags, &pblk);
 	if (errcode) {
 		com_err(argv[0], errcode,
-			"while mapping logical block %llu\n", blk);
+			"while mapping logical block %llu\n",
+			(unsigned long long) blk);
 		return;
 	}
-	printf("%llu", pblk);
+	printf("%llu", (unsigned long long) pblk);
 	if (ret_flags & BMAP_RET_UNINIT)
 		fputs(" (uninit)", stdout);
 	fputc('\n', stdout);
@@ -2447,17 +2453,19 @@
 	retval = ext2fs_mmp_read(current_fs, mmp_block, current_fs->mmp_buf);
 	if (retval) {
 		com_err(argv[0], retval, "reading MMP block %llu.\n",
-			mmp_block);
+			(unsigned long long) mmp_block);
 		return;
 	}
 
 	t = mmp_s->mmp_time;
-	fprintf(stdout, "block_number: %llu\n", current_fs->super->s_mmp_block);
+	fprintf(stdout, "block_number: %llu\n",
+		(unsigned long long) current_fs->super->s_mmp_block);
 	fprintf(stdout, "update_interval: %d\n",
 		current_fs->super->s_mmp_update_interval);
 	fprintf(stdout, "check_interval: %d\n", mmp_s->mmp_check_interval);
 	fprintf(stdout, "sequence: %08x\n", mmp_s->mmp_seq);
-	fprintf(stdout, "time: %lld -- %s", mmp_s->mmp_time, ctime(&t));
+	fprintf(stdout, "time: %llu -- %s",
+		(unsigned long long) mmp_s->mmp_time, ctime(&t));
 	fprintf(stdout, "node_name: %.*s\n",
 		EXT2_LEN_STR(mmp_s->mmp_nodename));
 	fprintf(stdout, "device_name: %.*s\n",
diff --git a/debugfs/do_journal.c b/debugfs/do_journal.c
index c25e894..38439c6 100644
--- a/debugfs/do_journal.c
+++ b/debugfs/do_journal.c
@@ -530,8 +530,6 @@
 	}
 
 	err = journal_close_trans(&trans);
-	if (err)
-		goto error;
 error:
 	return err;
 }
@@ -556,15 +554,19 @@
 		switch (opt) {
 		case 'b':
 			err = read_list(optarg, &blist, &bn);
-			if (err)
+			if (err) {
 				com_err(argv[0], err,
 					"while reading block list");
+				goto out;
+			}
 			break;
 		case 'r':
 			err = read_list(optarg, &rlist, &rn);
-			if (err)
+			if (err) {
 				com_err(argv[0], err,
 					"while reading revoke list");
+				goto out;
+			}
 			break;
 		case 'c':
 			flags |= JOURNAL_WRITE_NO_COMMIT;
diff --git a/debugfs/dump.c b/debugfs/dump.c
index fdd6619..42f5204 100644
--- a/debugfs/dump.c
+++ b/debugfs/dump.c
@@ -81,12 +81,12 @@
 		com_err(cmd, errno, "while setting permissions of %s", name);
 
 #ifndef HAVE_FCHOWN
-	i = chown(name, inode->i_uid, inode->i_gid);
+	i = chown(name, inode_uid(*inode), inode_gid(*inode));
 #else
 	if (fd != -1)
-		i = fchown(fd, inode->i_uid, inode->i_gid);
+		i = fchown(fd, inode_uid(*inode), inode_gid(*inode));
 	else
-		i = chown(name, inode->i_uid, inode->i_gid);
+		i = chown(name, inode_uid(*inode), inode_gid(*inode));
 #endif
 	if (i == -1)
 		com_err(cmd, errno, "while changing ownership of %s", name);
diff --git a/debugfs/extent_inode.c b/debugfs/extent_inode.c
index 6706629..e4e815e 100644
--- a/debugfs/extent_inode.c
+++ b/debugfs/extent_inode.c
@@ -33,8 +33,9 @@
 	if (desc)
 		printf("%s: ", desc);
 	printf("extent: lblk %llu--%llu, len %u, pblk %llu, flags: ",
-	       extent->e_lblk, extent->e_lblk + extent->e_len - 1,
-	       extent->e_len, extent->e_pblk);
+	       (unsigned long long) extent->e_lblk,
+	       (unsigned long long) extent->e_lblk + extent->e_len - 1,
+	       extent->e_len, (unsigned long long) extent->e_pblk);
 	if (extent->e_flags & EXT2_EXTENT_FLAGS_LEAF)
 		fputs("LEAF ", stdout);
 	if (extent->e_flags & EXT2_EXTENT_FLAGS_UNINIT)
@@ -527,8 +528,9 @@
 	printf("Current handle location: %d/%d (max: %d, bytes %d), level %d/%d\n",
 	       info.curr_entry, info.num_entries, info.max_entries,
 	       info.bytes_avail, info.curr_level, info.max_depth);
-	printf("\tmax lblk: %llu, max pblk: %llu\n", info.max_lblk,
-	       info.max_pblk);
+	printf("\tmax lblk: %llu, max pblk: %llu\n",
+	       (unsigned long long) info.max_lblk,
+	       (unsigned long long) info.max_pblk);
 	printf("\tmax_len: %u, max_uninit_len: %u\n", info.max_len,
 	       info.max_uninit_len);
 }
diff --git a/debugfs/filefrag.c b/debugfs/filefrag.c
index 961b696..31c1440 100644
--- a/debugfs/filefrag.c
+++ b/debugfs/filefrag.c
@@ -85,14 +85,17 @@
 			fprintf(fs->f, "%4d %*lu %*llu %*llu %*lu\n", fs->ext,
 				fs->logical_width,
 				(unsigned long) fs->logical_start,
-				fs->physical_width, fs->physical_start,
-				fs->physical_width, fs->expected,
+				fs->physical_width,
+				(unsigned long long) fs->physical_start,
+				fs->physical_width,
+				(unsigned long long) fs->expected,
 				fs->logical_width, (unsigned long) fs->num);
 		else
 			fprintf(fs->f, "%4d %*lu %*llu %*s %*lu\n", fs->ext,
 				fs->logical_width,
 				(unsigned long) fs->logical_start,
-				fs->physical_width, fs->physical_start,
+				fs->physical_width,
+				(unsigned long long) fs->physical_start,
 				fs->physical_width, "",
 				fs->logical_width, (unsigned long) fs->num);
 	}
@@ -150,7 +153,8 @@
 			num_blocks /= current_fs->blocksize / 512;
 
 		fprintf(fs->f, "\n%s has %llu block(s), i_size is %llu\n",
-			fs->name, num_blocks, EXT2_I_SIZE(inode));
+			fs->name, (unsigned long long) num_blocks,
+			(unsigned long long) EXT2_I_SIZE(inode));
 	}
 	print_header(fs);
 	if (ext2fs_inode_has_valid_blocks2(current_fs, inode)) {
diff --git a/debugfs/htree.c b/debugfs/htree.c
index 23a9467..a9f9211 100644
--- a/debugfs/htree.c
+++ b/debugfs/htree.c
@@ -53,16 +53,18 @@
 	errcode = ext2fs_bmap2(fs, ino, inode, buf, 0, blk, 0, &pblk);
 	if (errcode) {
 		com_err("htree_dump_leaf_node", errcode,
-			"while mapping logical block %llu\n", blk);
+			"while mapping logical block %llu\n",
+			(unsigned long long) blk);
 		return;
 	}
 
-	fprintf(pager, "Reading directory block %llu, phys %llu\n", blk, pblk);
+	fprintf(pager, "Reading directory block %llu, phys %llu\n",
+		(unsigned long long) blk, (unsigned long long) pblk);
 	errcode = ext2fs_read_dir_block4(current_fs, pblk, buf, 0, ino);
 	if (errcode) {
 		com_err("htree_dump_leaf_node", errcode,
 			"while reading block %llu (%llu)\n",
-			blk, pblk);
+			(unsigned long long) blk, (unsigned long long) pblk);
 		return;
 	}
 	hash_alg = rootnode->hash_version;
@@ -85,7 +87,7 @@
 		    ((rec_len % 4) != 0) ||
 		    ((unsigned) thislen + 8 > rec_len)) {
 			fprintf(pager, "Corrupted directory block (%llu)!\n",
-				blk);
+				(unsigned long long) blk);
 			break;
 		}
 		strncpy(name, dirent->name, thislen);
@@ -213,14 +215,16 @@
 	errcode = ext2fs_bmap2(fs, ino, inode, buf, 0, blk, 0, &pblk);
 	if (errcode) {
 		com_err("htree_dump_int_block", errcode,
-			"while mapping logical block %llu\n", blk);
+			"while mapping logical block %llu\n",
+			(unsigned long long) blk);
 		goto errout;
 	}
 
 	errcode = io_channel_read_blk64(current_fs->io, pblk, 1, buf);
 	if (errcode) {
 		com_err("htree_dump_int_block", errcode,
-			"while reading block %llu\n", blk);
+			"while reading block %llu\n",
+			(unsigned long long) blk);
 		goto errout;
 	}
 
@@ -473,7 +477,7 @@
 			    p->len) == 0) {
 			printf("Entry found at logical block %lld, "
 			       "phys %llu, offset %u\n", (long long)blockcnt,
-			       *blocknr, offset);
+			       (unsigned long long) *blocknr, offset);
 			printf("offset %u\n", offset);
 			return BLOCK_ABORT;
 		}
diff --git a/debugfs/icheck.c b/debugfs/icheck.c
index 71164cf..ed6e950 100644
--- a/debugfs/icheck.c
+++ b/debugfs/icheck.c
@@ -159,10 +159,12 @@
 	printf("Block\tInode number\n");
 	for (i=0, binfo = bw.barray; i < bw.num_blocks; i++, binfo++) {
 		if (binfo->ino == 0) {
-			printf("%llu\t<block not found>\n", binfo->blk);
+			printf("%llu\t<block not found>\n",
+			       (unsigned long long) binfo->blk);
 			continue;
 		}
-		printf("%llu\t%u\n", binfo->blk, binfo->ino);
+		printf("%llu\t%u\n", (unsigned long long) binfo->blk,
+		       binfo->ino);
 	}
 
 error_out:
diff --git a/debugfs/logdump.c b/debugfs/logdump.c
index 354bc96..27e2e72 100644
--- a/debugfs/logdump.c
+++ b/debugfs/logdump.c
@@ -56,7 +56,7 @@
 
 static void dump_descriptor_block(FILE *, struct journal_source *,
 				  char *, journal_superblock_t *,
-				  unsigned int *, int, tid_t);
+				  unsigned int *, int, __u32, tid_t);
 
 static void dump_revoke_block(FILE *, char *, journal_superblock_t *,
 				  unsigned int, int, tid_t);
@@ -71,10 +71,9 @@
 
 static void do_hexdump (FILE *, char *, int);
 
-#define WRAP(jsb, blocknr)					\
-	if (blocknr >= be32_to_cpu((jsb)->s_maxlen))		\
-		blocknr -= (be32_to_cpu((jsb)->s_maxlen) -	\
-			    be32_to_cpu((jsb)->s_first));
+#define WRAP(jsb, blocknr, maxlen)					\
+	if (blocknr >= (maxlen))					\
+	    blocknr -= (maxlen - be32_to_cpu((jsb)->s_first));
 
 void do_logdump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
 		    void *infop EXT2FS_ATTR((unused)))
@@ -86,11 +85,11 @@
 
 	char		*inode_spec = NULL;
 	char		*journal_fn = NULL;
-	int		journal_fd = 0;
+	int		journal_fd = -1;
 	int		use_sb = 0;
 	ext2_ino_t	journal_inum;
 	struct ext2_inode journal_inode;
-	ext2_file_t 	journal_file;
+	ext2_file_t 	journal_file = NULL;
 	char		*tmp;
 	struct journal_source journal_source;
 	struct ext2_super_block *es = NULL;
@@ -150,9 +149,6 @@
 		goto print_usage;
 	}
 
-	if (current_fs)
-		es = current_fs->super;
-
 	if (inode_spec) {
 		int inode_group, group_offset, inodes_per_block;
 
@@ -163,6 +159,7 @@
 		if (!inode_to_dump)
 			return;
 
+		es = current_fs->super;
 		inode_group = ((inode_to_dump - 1)
 			       / es->s_inodes_per_group);
 		group_offset = ((inode_to_dump - 1)
@@ -177,7 +174,8 @@
 					* sizeof(struct ext2_inode));
 		printf("Inode %u is at group %u, block %llu, offset %u\n",
 		       inode_to_dump, inode_group,
-		       inode_block_to_dump, inode_offset_to_dump);
+		       (unsigned long long) inode_block_to_dump,
+		       inode_offset_to_dump);
 	}
 
 	if (optind == argc) {
@@ -188,37 +186,44 @@
 		if (!out_file) {
 			com_err(argv[0], errno, "while opening %s for logdump",
 				out_fn);
-			goto errout;
+			goto cleanup;
 		}
 	}
 
-	if (block_to_dump != ANY_BLOCK && current_fs != NULL) {
+	if (block_to_dump != ANY_BLOCK) {
+		if (check_fs_open(argv[0]))
+			goto cleanup;
+		es = current_fs->super;
 		group_to_dump = ((block_to_dump -
 				  es->s_first_data_block)
 				 / es->s_blocks_per_group);
 		bitmap_to_dump = ext2fs_block_bitmap_loc(current_fs, group_to_dump);
 	}
 
-	if (!journal_fn && check_fs_open(argv[0]))
-		goto errout;
-
 	if (journal_fn) {
 		/* Set up to read journal from a regular file somewhere */
 		journal_fd = open(journal_fn, O_RDONLY, 0);
 		if (journal_fd < 0) {
 			com_err(argv[0], errno, "while opening %s for logdump",
 				journal_fn);
-			goto errout;
+			goto cleanup;
 		}
-
 		journal_source.where = JOURNAL_IS_EXTERNAL;
 		journal_source.fd = journal_fd;
-	} else if ((journal_inum = es->s_journal_inum)) {
+		dump_journal(argv[0], out_file, &journal_source);
+		goto cleanup;
+
+	}
+	if (check_fs_open(argv[0]))
+		goto cleanup;
+	es = current_fs->super;
+
+	if ((journal_inum = es->s_journal_inum)) {
 		if (use_sb) {
 			if (es->s_jnl_backup_type != EXT3_JNL_BACKUP_BLOCKS) {
 				com_err(argv[0], 0,
 					"no journal backup in super block\n");
-				goto errout;
+				goto cleanup;
 			}
 			memset(&journal_inode, 0, sizeof(struct ext2_inode));
 			memcpy(&journal_inode.i_block[0], es->s_jnl_blocks,
@@ -230,14 +235,14 @@
 		} else {
 			if (debugfs_read_inode(journal_inum, &journal_inode,
 					       argv[0]))
-				goto errout;
+				goto cleanup;
 		}
 
 		retval = ext2fs_file_open2(current_fs, journal_inum,
 					   &journal_inode, 0, &journal_file);
 		if (retval) {
 			com_err(argv[0], retval, "while opening ext2 file");
-			goto errout;
+			goto cleanup;
 		}
 		journal_source.where = JOURNAL_IS_INTERNAL;
 		journal_source.file = journal_file;
@@ -250,14 +255,14 @@
 				journal_fn = blkid_devno_to_devname(es->s_journal_dev);
 		if (!journal_fn) {
 			com_err(argv[0], 0, "filesystem has no journal");
-			goto errout;
+			goto cleanup;
 		}
 		journal_fd = open(journal_fn, O_RDONLY, 0);
 		if (journal_fd < 0) {
 			com_err(argv[0], errno, "while opening %s for logdump",
 				journal_fn);
 			free(journal_fn);
-			goto errout;
+			goto cleanup;
 		}
 		fprintf(out_file, "Using external journal found at %s\n",
 			journal_fn);
@@ -265,15 +270,12 @@
 		journal_source.where = JOURNAL_IS_EXTERNAL;
 		journal_source.fd = journal_fd;
 	}
-
 	dump_journal(argv[0], out_file, &journal_source);
-
-	if (journal_source.where == JOURNAL_IS_INTERNAL)
-		ext2fs_file_close(journal_file);
-	else
+cleanup:
+	if (journal_fd >= 0)
 		close(journal_fd);
-
-errout:
+	if (journal_file)
+		ext2fs_file_close(journal_file);
 	if (out_file && (out_file != stdout))
 		fclose(out_file);
 
@@ -349,7 +351,7 @@
 {
 	struct ext2_super_block *sb;
 	char			jsb_buffer[1024];
-	char			buf[8192];
+	char			buf[EXT2_MAX_BLOCK_SIZE];
 	journal_superblock_t	*jsb;
 	unsigned int		blocksize = 1024;
 	int			retval;
@@ -358,6 +360,8 @@
 	tid_t			transaction;
 	unsigned int		blocknr = 0;
 	int			fc_done;
+	__u64			total_len;
+	__u32			maxlen;
 
 	/* First, check to see if there's an ext2 superblock header */
 	retval = read_journal_block(cmdname, source, 0, buf, 2048);
@@ -406,8 +410,35 @@
 		return;
 	}
 	blocksize = be32_to_cpu(jsb->s_blocksize);
+	if ((current_fs && (blocksize != current_fs->blocksize)) ||
+	    (!current_fs && (!blocksize || (blocksize & (blocksize - 1)) ||
+			     (blocksize > EXT2_MAX_BLOCK_SIZE)))) {
+		fprintf(out_file,
+			"Journal block size invalid: %u (%u)\n",
+			be32_to_cpu(jsb->s_blocksize), blocksize);
+		return;
+	}
 	transaction = be32_to_cpu(jsb->s_sequence);
 	blocknr = be32_to_cpu(jsb->s_start);
+	if (source->where == JOURNAL_IS_INTERNAL) {
+		retval = ext2fs_file_get_lsize(source->file, &total_len);
+		if (retval) {
+		stat_err:
+			com_err("dump_journal", retval,
+				"while getting journal inode size");
+			return;
+		}
+		total_len /= blocksize;
+	} else {
+			struct stat st;
+
+			if (fstat(source->fd, &st) < 0)
+				goto stat_err;
+			total_len = st.st_size / blocksize;
+	}
+	maxlen = be32_to_cpu(jsb->s_maxlen);
+	if (maxlen > total_len)
+		maxlen = total_len;
 
 	fprintf(out_file, "Journal starts at block %u, transaction %u\n",
 		blocknr, transaction);
@@ -457,14 +488,14 @@
 		switch (blocktype) {
 		case JBD2_DESCRIPTOR_BLOCK:
 			dump_descriptor_block(out_file, source, buf, jsb,
-					      &blocknr, blocksize,
+					      &blocknr, blocksize, maxlen,
 					      transaction);
 			continue;
 
 		case JBD2_COMMIT_BLOCK:
 			transaction++;
 			blocknr++;
-			WRAP(jsb, blocknr);
+			WRAP(jsb, blocknr, maxlen);
 			continue;
 
 		case JBD2_REVOKE_BLOCK:
@@ -472,7 +503,7 @@
 					  blocknr, blocksize,
 					  transaction);
 			blocknr++;
-			WRAP(jsb, blocknr);
+			WRAP(jsb, blocknr, maxlen);
 			continue;
 
 		default:
@@ -483,8 +514,8 @@
 	}
 
 fc:
-	blocknr = be32_to_cpu(jsb->s_maxlen) - jbd2_journal_get_num_fc_blks(jsb) + 1;
-	while (blocknr <= be32_to_cpu(jsb->s_maxlen)) {
+	blocknr = maxlen - jbd2_journal_get_num_fc_blks(jsb) + 1;
+	while (blocknr <= maxlen) {
 		retval = read_journal_block(cmdname, source,
 				((ext2_loff_t) blocknr) * blocksize,
 				buf, blocksize);
@@ -541,7 +572,7 @@
 				le32_to_cpu(add_range->fc_ino),
 				le32_to_cpu(ex->ee_block),
 				le32_to_cpu(ex->ee_start) +
-				(((__u64) le16_to_cpu(ex->ee_start_hi)) << 32),
+				(((unsigned long long) le16_to_cpu(ex->ee_start_hi)) << 32),
 				le16_to_cpu(ex->ee_len) > EXT_INIT_MAX_LEN ?
 				le16_to_cpu(ex->ee_len) - EXT_INIT_MAX_LEN :
 				le16_to_cpu(ex->ee_len));
@@ -613,6 +644,7 @@
 				  char *buf,
 				  journal_superblock_t *jsb,
 				  unsigned int *blockp, int blocksize,
+				  __u32 maxlen,
 				  tid_t transaction)
 {
 	int			offset, tag_size, csum_size = 0;
@@ -635,7 +667,7 @@
 			"block %u:\n", transaction, blocknr);
 
 	++blocknr;
-	WRAP(jsb, blocknr);
+	WRAP(jsb, blocknr, maxlen);
 
 	do {
 		/* Work out the location of the current tag, and skip to
@@ -660,7 +692,7 @@
 				    transaction);
 
 		++blocknr;
-		WRAP(jsb, blocknr);
+		WRAP(jsb, blocknr, maxlen);
 
 	} while (!(tag_flags & JBD2_FLAG_LAST_TAG));
 
@@ -689,6 +721,11 @@
 	header = (jbd2_journal_revoke_header_t *) buf;
 	offset = sizeof(jbd2_journal_revoke_header_t);
 	max = be32_to_cpu(header->r_count);
+	if (max > jsb->s_blocksize) {
+		fprintf(out_file, "Revoke block's r_count invalid: %u\b",
+			max);
+		max = jsb->s_blocksize;
+	}
 
 	while (offset < max) {
 		if (tag_size == sizeof(__u32)) {
@@ -699,7 +736,8 @@
 			rblock = ext2fs_be64_to_cpu(*entry);
 		}
 		if (dump_all || rblock == block_to_dump) {
-			fprintf(out_file, "  Revoke FS block %llu", rblock);
+			fprintf(out_file, "  Revoke FS block %llu",
+				(unsigned long long) rblock);
 			if (dump_all)
 				fprintf(out_file, "\n");
 			else
@@ -735,7 +773,7 @@
 				tid_t transaction)
 {
 	int		retval;
-	char 		buf[8192];
+	char 		buf[EXT2_MAX_BLOCK_SIZE];
 
 	if (!(dump_all
 	      || (fs_blocknr == block_to_dump)
@@ -783,7 +821,7 @@
 
 		fprintf(out_file, "    (block bitmap for block %llu: "
 			"block is %s)\n",
-			block_to_dump,
+			(unsigned long long) block_to_dump,
 			ext2fs_test_bit(offset, buf) ? "SET" : "CLEAR");
 	}
 
diff --git a/debugfs/ls.c b/debugfs/ls.c
index ae8b2d3..525f084 100644
--- a/debugfs/ls.c
+++ b/debugfs/ls.c
@@ -114,11 +114,12 @@
 		} else
 			memset(&inode, 0, sizeof(struct ext2_inode));
 		fprintf(ls->f,"/%u/%06o/%d/%d/%.*s/", ino, inode.i_mode,
-			inode.i_uid, inode.i_gid, thislen, dirent->name);
+			inode_uid(inode), inode_gid(inode), thislen, dirent->name);
 		if (LINUX_S_ISDIR(inode.i_mode))
 			fprintf(ls->f, "/");
 		else
-			fprintf(ls->f, "%lld/", EXT2_I_SIZE(&inode));
+			fprintf(ls->f, "%llu/",
+				(unsigned long long) EXT2_I_SIZE(&inode));
 		fprintf(ls->f, "\n");
 	} else if (options & LONG_OPT) {
 		if (ino) {
@@ -143,7 +144,8 @@
 		fprintf(ls->f, "(%d)  %5d  %5d   ",
 			ext2fs_dirent_file_type(dirent),
 			inode_uid(inode), inode_gid(inode));
-			fprintf(ls->f, "%5llu", EXT2_I_SIZE(&inode));
+			fprintf(ls->f, "%5llu",
+				(unsigned long long) EXT2_I_SIZE(&inode));
 		fprintf(ls->f, " %s ", datestr);
 		print_filename(ls->f, dirent, options);
 		fputc('\n', ls->f);
diff --git a/debugfs/lsdel.c b/debugfs/lsdel.c
index c0d5890..52c7419 100644
--- a/debugfs/lsdel.c
+++ b/debugfs/lsdel.c
@@ -198,8 +198,10 @@
 	for (i = 0; i < num_delarray; i++) {
 		fprintf(out, "%6u %6d %6o %6llu %6lld/%6lld %s",
 			delarray[i].ino,
-			delarray[i].uid, delarray[i].mode, delarray[i].size,
-			delarray[i].free_blocks, delarray[i].num_blocks,
+			delarray[i].uid, delarray[i].mode,
+			(unsigned long long) delarray[i].size,
+			(long long) delarray[i].free_blocks,
+			(long long) delarray[i].num_blocks,
 			time_to_string(delarray[i].dtime));
 	}
 	fprintf(out, "%d deleted inodes found.\n", num_delarray);
diff --git a/debugfs/unused.c b/debugfs/unused.c
index a6b44b5..08191a0 100644
--- a/debugfs/unused.c
+++ b/debugfs/unused.c
@@ -53,7 +53,7 @@
 		if (i >= current_fs->blocksize)
 			continue;
 		printf("\nUnused block %llu contains non-zero data:\n\n",
-		       blk);
+		       (unsigned long long) blk);
 		for (i=0; i < current_fs->blocksize; i++)
 			fputc(buf[i], stdout);
 	}
diff --git a/debugfs/util.c b/debugfs/util.c
index fb05e89..9e88054 100644
--- a/debugfs/util.c
+++ b/debugfs/util.c
@@ -521,7 +521,7 @@
 	blk64_t *lst = *list;
 	size_t ln = *len;
 	char *tok, *p = str;
-	errcode_t retval;
+	errcode_t retval = 0;
 
 	while ((tok = strtok(p, ","))) {
 		blk64_t *l;
@@ -530,23 +530,29 @@
 
 		errno = 0;
 		y = x = strtoull(tok, &e, 0);
-		if (errno)
-			return errno;
+		if (errno) {
+			retval = errno;
+			break;
+		}
 		if (*e == '-') {
 			y = strtoull(e + 1, NULL, 0);
-			if (errno)
-				return errno;
+			if (errno) {
+				retval = errno;
+				break;
+			}
 		} else if (*e != 0) {
 			retval = EINVAL;
-			goto err;
+			break;
 		}
 		if (y < x) {
 			retval = EINVAL;
-			goto err;
+			break;
 		}
 		l = realloc(lst, sizeof(blk64_t) * (ln + y - x + 1));
-		if (l == NULL)
-			return ENOMEM;
+		if (l == NULL) {
+			retval = ENOMEM;
+			break;
+		}
 		lst = l;
 		for (; x <= y; x++)
 			lst[ln++] = x;
@@ -555,9 +561,6 @@
 
 	*list = lst;
 	*len = ln;
-	return 0;
-err:
-	free(lst);
 	return retval;
 }
 
diff --git a/debugfs/zap.c b/debugfs/zap.c
index f120377..f862482 100644
--- a/debugfs/zap.c
+++ b/debugfs/zap.c
@@ -133,7 +133,8 @@
 				       block, 0, &block);
 		if (errcode) {
 			com_err(argv[0], errcode,
-				"while mapping logical block %llu\n", block);
+				"while mapping logical block %llu\n",
+				(unsigned long long) block);
 			return;
 		}
 	}
@@ -147,7 +148,8 @@
 	errcode = io_channel_read_blk64(current_fs->io, block, 1, buf);
 	if (errcode) {
 		com_err(argv[0], errcode,
-			"while reading block %llu\n", block);
+			"while reading block %llu\n",
+			(unsigned long long) block);
 		goto errout;
 	}
 
@@ -159,7 +161,8 @@
 	errcode = io_channel_write_blk64(current_fs->io, block, 1, buf);
 	if (errcode) {
 		com_err(argv[0], errcode,
-			"while write block %llu\n", block);
+			"while write block %llu\n",
+			(unsigned long long) block);
 		goto errout;
 	}
 
@@ -214,7 +217,8 @@
 				       block, 0, &block);
 		if (errcode) {
 			com_err(argv[0], errcode,
-				"while mapping logical block %llu\n", block);
+				"while mapping logical block %llu\n",
+				(unsigned long long) block);
 			return;
 		}
 	}
@@ -228,7 +232,8 @@
 	errcode = io_channel_read_blk64(current_fs->io, block, 1, buf);
 	if (errcode) {
 		com_err(argv[0], errcode,
-			"while reading block %llu\n", block);
+			"while reading block %llu\n",
+			(unsigned long long) block);
 		goto errout;
 	}
 
diff --git a/doc/RelNotes/v1.46.2.txt b/doc/RelNotes/v1.46.2.txt
new file mode 100644
index 0000000..8f15738
--- /dev/null
+++ b/doc/RelNotes/v1.46.2.txt
@@ -0,0 +1,64 @@
+E2fsprogs 1.46.2 (February 28, 2021)
+===================================
+
+Updates/Fixes since v1.46.1:
+
+UI and Features
+---------------
+
+Teach the tune2fs program to support "random" as an argument to the -c
+option, which sets the maximum mount count.  (Addresses Debian Bug:
+#926293)
+
+Add support for the FS_NOCOMP_FL flag to chattr and lsattr.
+
+
+Fixes
+-----
+
+When resizing a small file systems to a super-large file system size,
+avoid issuing some scary bitmap operation warnings.  (Addresses Github
+issue https://github.com/tytso/e2fsprogs/issues/60)
+
+Fix the debugfs rdump and ls commands so they will work correctly for
+uid's and gid's => 65536.  (Addresses Github issue issue
+https://github.com/tytso/e2fsprogs/issues/63)
+
+Fix the debugfs write and symlink commands so they support targets which
+contain a pathname (instead of only working when writing a file or
+creating a symlink in the current directory).  (Addresses Github issue
+https://github.com/tytso/e2fsprogs/issues/61)
+
+Fix Direct I/O support on block devices where the logical block size is
+greater 1k.  (This includes Advanced Format HDD's, where the sector size
+is 4k, and IBM Mainframe DASD's, where the sector size is 2k.)
+
+Fix debugfs's logdump so it works on file systems whose block size is
+greater than 8k.
+
+Fix a where e2fsck could a crash when there is error while e2fsck is
+trying to open the file system, and e2fsck calls ext2fs_mmp_stop()
+before MMP has been initialized.  (Addresses Debian Bug: #696609)
+
+Improved error checking in the fast commit replay code in e2fsck.
+
+Updated and clarified the chattr man page.
+
+
+Performance, Internal Implementation, Development Support etc.
+--------------------------------------------------------------
+
+Fix various compiler and Coverity warnings.
+
+Update the Spanish translation from the translation project.
+
+Update the e2fsck/iscan.c test program so that it builds again.
+
+Fix an environmental dependency bug for the m_rootdir_acl regression
+test.
+
+Avoid the use of loff_t, which is not available for all compilers /
+system include files.
+
+Fix failure of the t_mmp_fail test when running on a device with a 4k
+logical sector size.
diff --git a/doc/libext2fs.texinfo b/doc/libext2fs.texinfo
index 7ebcfba..26cfb0a 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.46.1)
+@settitle The EXT2FS Library (version 1.46.2)
 @synindex tp fn
 @comment %**end of header
 
@@ -60,7 +60,7 @@
 
 @title The EXT2FS Library
 @subtitle The EXT2FS Library
-@subtitle Version 1.46.1
+@subtitle Version 1.46.2
 @subtitle February 2021
 
 @author by Theodore Ts'o
@@ -101,7 +101,7 @@
 
 @top The EXT2FS Library
 
-This manual documents the EXT2FS Library, version 1.46.1.
+This manual documents the EXT2FS Library, version 1.46.2.
 
 @menu
 * Introduction to the EXT2FS Library::  
diff --git a/e2fsck/Makefile.in b/e2fsck/Makefile.in
index a0867f8..71ac3cf 100644
--- a/e2fsck/Makefile.in
+++ b/e2fsck/Makefile.in
@@ -168,9 +168,13 @@
 	$(E) "	LD $@"
 	$(Q) $(LD) $(ALL_LDFLAGS) -o flushb flushb.o $(CHECKLIB)
 
-iscan: iscan.o util.o ehandler.o $(DEPLIBS)
+iscan: iscan.o $(DEPLIBS)
 	$(E) "	LD $@"
-	$(Q) $(LD) $(ALL_LDFLAGS) -o iscan iscan.o util.o ehandler.o $(LIBS)
+	$(Q) $(LD) $(ALL_LDFLAGS) -o iscan iscan.o $(LIBS)
+
+iscan.static: iscan.o $(STATIC_DEPLIBS)
+	$(E) "	LD $@"
+	$(Q) $(LD) $(LDFLAGS_STATIC) -o iscan.static iscan.o $(STATIC_LIBS)
 
 test_profile: $(srcdir)/profile.c profile_helpers.o argv_parse.o \
 		prof_err.o profile.h $(DEPSTATIC_LIBCOM_ERR)
@@ -254,7 +258,7 @@
 		e2fsck.shared e2fsck.profiled flushb e2fsck.8 \
 		tst_problem tst_region tst_refcount tst_crc32 \
 		gen_crc32table e2fsck.conf.5 \
-		prof_err.c prof_err.h test_profile
+		prof_err.c prof_err.h test_profile iscan iscan.static
 	$(RM) -rf profiled
 
 mostlyclean: clean
diff --git a/e2fsck/badblocks.c b/e2fsck/badblocks.c
index 7f3641b..fec5f10 100644
--- a/e2fsck/badblocks.c
+++ b/e2fsck/badblocks.c
@@ -76,7 +76,8 @@
 		sprintf(buf, "badblocks -b %d -X %s%s%s %llu", fs->blocksize,
 			(ctx->options & E2F_OPT_PREEN) ? "" : "-s ",
 			(ctx->options & E2F_OPT_WRITECHECK) ? "-n " : "",
-			fs->device_name, ext2fs_blocks_count(fs->super)-1);
+			fs->device_name,
+			(unsigned long long) ext2fs_blocks_count(fs->super)-1);
 		f = popen(buf, "r");
 		if (!f) {
 			com_err("read_bad_blocks_file", errno,
diff --git a/e2fsck/ea_refcount.c b/e2fsck/ea_refcount.c
index aa5d7d7..7154b47 100644
--- a/e2fsck/ea_refcount.c
+++ b/e2fsck/ea_refcount.c
@@ -313,8 +313,10 @@
 		if (refcount->list[i-1].ea_key >= refcount->list[i].ea_key) {
 			fprintf(out,
 				"%s: list[%d].ea_key=%llu, list[%d].ea_key=%llu\n",
-				bad, i-1, refcount->list[i-1].ea_key, i,
-				refcount->list[i].ea_key);
+				bad, i-1,
+				(unsigned long long) refcount->list[i-1].ea_key,
+				i,
+				(unsigned long long) refcount->list[i].ea_key);
 			ret = EXT2_ET_INVALID_ARGUMENT;
 		}
 	}
@@ -399,22 +401,26 @@
 		case BCODE_STORE:
 			ea_key = (size_t) bcode_program[i++];
 			arg = bcode_program[i++];
-			printf("Storing ea_key %llu with value %llu\n", ea_key,
-			       arg);
+			printf("Storing ea_key %llu with value %llu\n",
+			       (unsigned long long) ea_key,
+			       (unsigned long long) arg);
 			retval = ea_refcount_store(refcount, ea_key, arg);
 			if (retval)
 				com_err("ea_refcount_store", retval,
-					"while storing ea_key %llu", ea_key);
+					"while storing ea_key %llu",
+					(unsigned long long) ea_key);
 			break;
 		case BCODE_FETCH:
 			ea_key = (size_t) bcode_program[i++];
 			retval = ea_refcount_fetch(refcount, ea_key, &arg);
 			if (retval)
 				com_err("ea_refcount_fetch", retval,
-					"while fetching ea_key %llu", ea_key);
+					"while fetching ea_key %llu",
+					(unsigned long long) ea_key);
 			else
 				printf("bcode_fetch(%llu) returns %llu\n",
-				       ea_key, arg);
+				       (unsigned long long) ea_key,
+				       (unsigned long long) arg);
 			break;
 		case BCODE_INCR:
 			ea_key = (size_t) bcode_program[i++];
@@ -422,10 +428,11 @@
 			if (retval)
 				com_err("ea_refcount_increment", retval,
 					"while incrementing ea_key %llu",
-					ea_key);
+					(unsigned long long) ea_key);
 			else
 				printf("bcode_increment(%llu) returns %llu\n",
-				       ea_key, arg);
+				       (unsigned long long) ea_key,
+				       (unsigned long long) arg);
 			break;
 		case BCODE_DECR:
 			ea_key = (size_t) bcode_program[i++];
@@ -433,10 +440,11 @@
 			if (retval)
 				com_err("ea_refcount_decrement", retval,
 					"while decrementing ea_key %llu",
-					ea_key);
+					(unsigned long long) ea_key);
 			else
 				printf("bcode_decrement(%llu) returns %llu\n",
-				       ea_key, arg);
+				       (unsigned long long) ea_key,
+				       (unsigned long long) arg);
 			break;
 		case BCODE_VALIDATE:
 			retval = ea_refcount_validate(refcount, stderr);
@@ -452,8 +460,9 @@
 				ea_key = ea_refcount_intr_next(refcount, &arg);
 				if (!ea_key)
 					break;
-				printf("\tea_key=%llu, count=%llu\n", ea_key,
-				       arg);
+				printf("\tea_key=%llu, count=%llu\n",
+				       (unsigned long long) ea_key,
+				       (unsigned long long) arg);
 			}
 			break;
 		case BCODE_COLLAPSE:
diff --git a/e2fsck/extents.c b/e2fsck/extents.c
index 600dbc9..4e6e261 100644
--- a/e2fsck/extents.c
+++ b/e2fsck/extents.c
@@ -290,8 +290,10 @@
 	errcode_t err;
 
 	memset(&inode, 0, sizeof(inode));
-	ext2fs_read_inode_full(ctx->fs, list->ino, EXT2_INODE(&inode),
-				sizeof(inode));
+	err = ext2fs_read_inode_full(ctx->fs, list->ino, EXT2_INODE(&inode),
+				     sizeof(inode));
+	if (err)
+		return err;
 
 	/* Skip deleted inodes and inline data files */
 	if (inode.i_flags & EXT4_INLINE_DATA_FL)
@@ -305,11 +307,11 @@
 				  &blk_count);
 	if (err)
 		return err;
-	ext2fs_iblk_set(ctx->fs, EXT2_INODE(&inode), blk_count);
-	ext2fs_write_inode_full(ctx->fs, list->ino, EXT2_INODE(&inode),
-		sizeof(inode));
-
-	return 0;
+	err = ext2fs_iblk_set(ctx->fs, EXT2_INODE(&inode), blk_count);
+	if (err)
+		return err;
+	return ext2fs_write_inode_full(ctx->fs, list->ino, EXT2_INODE(&inode),
+				       sizeof(inode));
 }
 
 errcode_t e2fsck_read_extents(e2fsck_t ctx, struct extent_list *extents)
@@ -325,7 +327,7 @@
 	retval = ext2fs_get_array(NUM_EXTENTS, sizeof(struct ext2fs_extent),
 				  &extents->extents);
 	if (retval)
-		return -ENOMEM;
+		return ENOMEM;
 
 	retval = ext2fs_read_inode(ctx->fs, extents->ino, EXT2_INODE(&inode));
 	if (retval)
diff --git a/e2fsck/iscan.c b/e2fsck/iscan.c
index 52cad11..607e475 100644
--- a/e2fsck/iscan.c
+++ b/e2fsck/iscan.c
@@ -20,11 +20,31 @@
 #ifdef HAVE_MALLOC_H
 #include <malloc.h>
 #endif
+#include <sys/time.h>
+#include <sys/resource.h>
+
+#if EXT2_FLAT_INCLUDES
+#include "ext2_fs.h"
+#include "ext2fs.h"
+#include "blkid.h"
+#else
+#include "ext2fs/ext2_fs.h"
+#include "ext2fs/ext2fs.h"
+#include "blkid/blkid.h"
+#endif
 
 #include "et/com_err.h"
-#include "e2fsck.h"
 #include "../version.h"
 
+struct resource_track {
+	struct timeval time_start;
+	struct timeval user_start;
+	struct timeval system_start;
+	void	*brk_start;
+	unsigned long long bytes_read;
+	unsigned long long bytes_written;
+};
+
 extern int isatty(int);
 
 const char * program_name = "iscan";
@@ -38,10 +58,109 @@
 
 struct resource_track	global_rtrack;
 
+void init_resource_track(struct resource_track *track, io_channel channel)
+{
+#ifdef HAVE_GETRUSAGE
+	struct rusage r;
+#endif
+	io_stats io_start = 0;
+
+	track->brk_start = sbrk(0);
+	gettimeofday(&track->time_start, 0);
+#ifdef HAVE_GETRUSAGE
+#ifdef sun
+	memset(&r, 0, sizeof(struct rusage));
+#endif
+	getrusage(RUSAGE_SELF, &r);
+	track->user_start = r.ru_utime;
+	track->system_start = r.ru_stime;
+#else
+	track->user_start.tv_sec = track->user_start.tv_usec = 0;
+	track->system_start.tv_sec = track->system_start.tv_usec = 0;
+#endif
+	track->bytes_read = 0;
+	track->bytes_written = 0;
+	if (channel && channel->manager && channel->manager->get_stats)
+		channel->manager->get_stats(channel, &io_start);
+	if (io_start) {
+		track->bytes_read = io_start->bytes_read;
+		track->bytes_written = io_start->bytes_written;
+	}
+}
+
+static float timeval_subtract(struct timeval *tv1,
+				       struct timeval *tv2)
+{
+	return ((tv1->tv_sec - tv2->tv_sec) +
+		((float) (tv1->tv_usec - tv2->tv_usec)) / 1000000);
+}
+
+void print_resource_track(const char *desc,
+			  struct resource_track *track, io_channel channel)
+{
+#ifdef HAVE_GETRUSAGE
+	struct rusage r;
+#endif
+	struct timeval time_end;
+
+	gettimeofday(&time_end, 0);
+
+	if (desc)
+		printf("%s: ", desc);
+
+#define kbytes(x)	(((unsigned long long)(x) + 1023) / 1024)
+#ifdef HAVE_MALLINFO
+	/* don't use mallinfo() if over 2GB used, since it returns "int" */
+	if ((char *)sbrk(0) - (char *)track->brk_start < 2LL << 30) {
+		struct mallinfo	malloc_info = mallinfo();
+
+		printf("Memory used: %lluk/%lluk (%lluk/%lluk), ",
+		       kbytes(malloc_info.arena), kbytes(malloc_info.hblkhd),
+		       kbytes(malloc_info.uordblks),
+		       kbytes(malloc_info.fordblks));
+	} else
+#endif
+		printf("Memory used: %lluk, ",
+		       kbytes(((char *)sbrk(0)) - ((char *)track->brk_start)));
+
+#ifdef HAVE_GETRUSAGE
+	getrusage(RUSAGE_SELF, &r);
+
+	printf("time: %5.2f/%5.2f/%5.2f\n",
+	       timeval_subtract(&time_end, &track->time_start),
+	       timeval_subtract(&r.ru_utime, &track->user_start),
+	       timeval_subtract(&r.ru_stime, &track->system_start));
+#else
+	printf("elapsed time: %6.3f\n",
+	       timeval_subtract(&time_end, &track->time_start));
+#endif
+#define mbytes(x)	(((x) + 1048575) / 1048576)
+	if (channel && channel->manager && channel->manager->get_stats) {
+		io_stats delta = 0;
+		unsigned long long bytes_read = 0;
+		unsigned long long bytes_written = 0;
+
+		if (desc)
+			printf("%s: ", desc);
+
+		channel->manager->get_stats(channel, &delta);
+		if (delta) {
+			bytes_read = delta->bytes_read - track->bytes_read;
+			bytes_written = delta->bytes_written -
+				track->bytes_written;
+		}
+		printf("I/O read: %lluMB, write: %lluMB, "
+		       "rate: %.2fMB/s\n",
+		       mbytes(bytes_read), mbytes(bytes_written),
+		       (double)mbytes(bytes_read + bytes_written) /
+		       timeval_subtract(&time_end, &track->time_start));
+	}
+}
+
 static void usage(void)
 {
 	fprintf(stderr,
-		_("Usage: %s [-F] [-I inode_buffer_blocks] device\n"),
+		"Usage: %s [-F] [-I inode_buffer_blocks] device\n",
 		program_name);
 	exit(1);
 }
@@ -78,13 +197,13 @@
 
 		if (fd < 0) {
 			com_err("open", errno,
-			    _("while opening %s for flushing"), device_name);
-			exit(FSCK_ERROR);
+			    "while opening %s for flushing", device_name);
+			exit(1);
 		}
 		if ((retval = ext2fs_sync_device(fd, 1))) {
 			com_err("ext2fs_sync_device", retval,
-				_("while trying to flush %s"), device_name);
-			exit(FSCK_ERROR);
+				"while trying to flush %s", device_name);
+			exit(1);
 		}
 		close(fd);
 	}
@@ -93,30 +212,28 @@
 int main (int argc, char *argv[])
 {
 	errcode_t	retval = 0;
-	int		exit_value = FSCK_OK;
+	int		exit_value = 0;
 	ext2_filsys	fs;
 	ext2_ino_t	ino;
 	__u32	num_inodes = 0;
 	struct ext2_inode inode;
 	ext2_inode_scan	scan;
 
-	init_resource_track(&global_rtrack);
-
 	PRS(argc, argv);
 
 	retval = ext2fs_open(device_name, 0,
 			     0, 0, unix_io_manager, &fs);
 	if (retval) {
-		com_err(program_name, retval, _("while trying to open '%s'"),
+		com_err(program_name, retval, "while trying to open '%s'",
 			device_name);
 		exit(1);
 	}
 
-	ehandler_init(fs->io);
+	init_resource_track(&global_rtrack, fs->io);
 
 	retval = ext2fs_open_inode_scan(fs, inode_buffer_blocks, &scan);
 	if (retval) {
-		com_err(program_name, retval, _("while opening inode scan"));
+		com_err(program_name, retval, "while opening inode scan");
 		exit(1);
 	}
 
@@ -124,7 +241,7 @@
 		retval = ext2fs_get_next_inode(scan, &ino, &inode);
 		if (retval) {
 			com_err(program_name, retval,
-				_("while getting next inode"));
+				"while getting next inode");
 			exit(1);
 		}
 		if (ino == 0)
@@ -132,8 +249,8 @@
 		num_inodes++;
 	}
 
-	print_resource_track(NULL, &global_rtrack);
-	printf(_("%u inodes scanned.\n"), num_inodes);
+	print_resource_track(NULL, &global_rtrack, fs->io);
+	printf("%u inodes scanned.\n", num_inodes);
 
 	exit(0);
 }
diff --git a/e2fsck/journal.c b/e2fsck/journal.c
index 2708942..a425bbd 100644
--- a/e2fsck/journal.c
+++ b/e2fsck/journal.c
@@ -289,7 +289,7 @@
 	struct ext4_fc_tail *tail;
 	__u8 *start, *end;
 	struct ext4_fc_head *head;
-	struct ext2fs_extent ext2fs_ex;
+	struct ext2fs_extent ext2fs_ex = {0};
 
 	state = &ctx->fc_replay_state;
 
@@ -325,6 +325,7 @@
 				ret = JBD2_FC_REPLAY_STOP;
 			else
 				ret = JBD2_FC_REPLAY_CONTINUE;
+			/* fallthrough */
 		case EXT4_FC_TAG_DEL_RANGE:
 		case EXT4_FC_TAG_LINK:
 		case EXT4_FC_TAG_UNLINK:
@@ -621,7 +622,7 @@
 
 	darg->parent_ino = le32_to_cpu(fcd->fc_parent_ino);
 	darg->ino = le32_to_cpu(fcd->fc_ino);
-	darg->dname = fcd->fc_dname;
+	darg->dname = (char *) fcd->fc_dname;
 	darg->dname_len = ext4_fc_tag_len(tl) -
 			sizeof(struct ext4_fc_dentry_info);
 	darg->dname = malloc(darg->dname_len + 1);
diff --git a/e2fsck/message.c b/e2fsck/message.c
index 05d914d..ba38038 100644
--- a/e2fsck/message.c
+++ b/e2fsck/message.c
@@ -281,7 +281,7 @@
 
 	switch (ch) {
 	case 's':
-		fprintf(f, "%llu", EXT2_I_SIZE(inode));
+		fprintf(f, "%llu", (unsigned long long) EXT2_I_SIZE(inode));
 		break;
 	case 'S':
 		fprintf(f, "%u", large_inode->i_extra_isize);
@@ -307,7 +307,8 @@
 		fprintf(f, "%u", inode->i_faddr);
 		break;
 	case 'f':
-		fprintf(f, "%llu", ext2fs_file_acl_block(fs, inode));
+		fprintf(f, "%llu",
+			(unsigned long long) ext2fs_file_acl_block(fs, inode));
 		break;
 	case 'd':
 		fprintf(f, "%u", (LINUX_S_ISDIR(inode->i_mode) ?
@@ -462,7 +463,9 @@
 		fprintf(f, "%*lld", width, (long long) ctx->blkcount);
 		break;
 	case 'S':
-		fprintf(f, "%llu", get_backup_sb(NULL, fs, NULL, NULL));
+		fprintf(f, "%llu",
+			(unsigned long long) get_backup_sb(NULL, fs,
+							   NULL, NULL));
 		break;
 	case 's':
 		fprintf(f, "%*s", width, ctx->str ? ctx->str : "NULL");
diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c
index 7d39097..9d43089 100644
--- a/e2fsck/pass1.c
+++ b/e2fsck/pass1.c
@@ -2898,9 +2898,10 @@
 		if (is_leaf && problem == 0 && extent.e_len > 0) {
 #if 0
 			printf("extent_region(ino=%u, expect=%llu, "
-			       "lblk=%llu, len=%u)\n",
-			       pb->ino, pb->next_lblock,
-			       extent.e_lblk, extent.e_len);
+			       "lblk=%llu, len=%u)\n", pb->ino,
+			       (unsigned long long) pb->next_lblock,
+			       (unsigned long long) extent.e_lblk,
+			       extent.e_len);
 #endif
 			if (extent.e_lblk < pb->next_lblock)
 				problem = PR_1_EXTENT_COLLISION;
@@ -3026,7 +3027,12 @@
 			if (extent.e_lblk != lblk) {
 				struct ext2_extent_info e_info;
 
-				ext2fs_extent_get_info(ehandle, &e_info);
+				pctx->errcode = ext2fs_extent_get_info(ehandle,
+								       &e_info);
+				if (pctx->errcode) {
+					pctx->str = "ext2fs_extent_get_info";
+					return;
+				}
 				pctx->blk = lblk;
 				pctx->blk2 = extent.e_lblk;
 				pctx->num = e_info.curr_level - 1;
@@ -3495,8 +3501,9 @@
 	pb.num_blocks *= EXT2FS_CLUSTER_RATIO(fs);
 #if 0
 	printf("inode %u, i_size = %u, last_block = %llu, i_blocks=%llu, num_blocks = %llu\n",
-	       ino, inode->i_size, pb.last_block, ext2fs_inode_i_blocks(fs, inode),
-	       pb.num_blocks);
+	       ino, inode->i_size, (unsigned long long) pb.last_block,
+	       (unsigned long long) ext2fs_inode_i_blocks(fs, inode),
+	       (unsigned long long) pb.num_blocks);
 #endif
 	size = EXT2_I_SIZE(inode);
 	if (pb.is_dir) {
@@ -3721,7 +3728,7 @@
 				       (unsigned long) pctx->ino, type,
 				       (unsigned long) p->previous_block+1,
 				       (unsigned long) blk,
-				       blockcnt);
+				       (long long) blockcnt);
 			}
 			p->fragmented = 1;
 		}
diff --git a/e2fsck/pass1b.c b/e2fsck/pass1b.c
index 2f8c14c..656a275 100644
--- a/e2fsck/pass1b.c
+++ b/e2fsck/pass1b.c
@@ -670,7 +670,7 @@
 		} else
 			com_err("delete_file_block", 0,
 			    _("internal error: can't find dup_blk for %llu\n"),
-				*block_nr);
+				(unsigned long long) *block_nr);
 	} else {
 		if ((*block_nr % EXT2FS_CLUSTER_RATIO(ctx->fs)) == 0)
 			ext2fs_block_alloc_stats2(fs, *block_nr, -1);
@@ -828,7 +828,7 @@
 		if (!n) {
 			com_err("clone_file_block", 0,
 			    _("internal error: can't find dup_blk for %llu\n"),
-				*block_nr);
+				(unsigned long long) *block_nr);
 			return 0;
 		}
 
@@ -878,7 +878,8 @@
 		}
 #if 0
  		printf("Cloning block #%lld from %llu to %llu\n",
-		       blockcnt, *block_nr, new_block);
+		       blockcnt, (unsigned long long) *block_nr,
+		       (unsigned long long) new_block);
 #endif
 		retval = io_channel_read_blk64(fs->io, *block_nr, 1, cs->buf);
 		if (retval) {
@@ -978,7 +979,8 @@
 		if (!n) {
 			com_err("clone_file", 0,
 				_("internal error: couldn't lookup EA "
-				  "block record for %llu"), blk);
+				  "block record for %llu"),
+				(unsigned long long) blk);
 			retval = 0; /* OK to stumble on... */
 			goto errout;
 		}
diff --git a/e2fsck/pass2.c b/e2fsck/pass2.c
index 9d682a9..e504b30 100644
--- a/e2fsck/pass2.c
+++ b/e2fsck/pass2.c
@@ -359,7 +359,8 @@
 	de_b = (const struct ext2_dir_entry *) b;
 	b_len = ext2fs_dirent_name_len(de_b);
 
-	return ext2fs_casefold_cmp(tbl, de_a->name, a_len, de_b->name, b_len);
+	return ext2fs_casefold_cmp(tbl, (unsigned char *) de_a->name, a_len,
+				   (unsigned char *) de_b->name, b_len);
 }
 
 /*
diff --git a/e2fsck/problem.c b/e2fsck/problem.c
index 8d90739..eb2824f 100644
--- a/e2fsck/problem.c
+++ b/e2fsck/problem.c
@@ -2386,11 +2386,11 @@
 	if (pctx->dir)
 		fprintf(f, " dir=\"%u\"", pctx->dir);
 	if (pctx->blk)
-		fprintf(f, " blk=\"%llu\"", pctx->blk);
+		fprintf(f, " blk=\"%llu\"", (unsigned long long) pctx->blk);
 	if (pctx->blk2)
-		fprintf(f, " blk2=\"%llu\"", pctx->blk2);
+		fprintf(f, " blk2=\"%llu\"", (unsigned long long) pctx->blk2);
 	if (pctx->blkcount != (e2_blkcnt_t) -1)
-		fprintf(f, " blkcount=\"%lld\"", pctx->blkcount);
+		fprintf(f, " blkcount=\"%lld\"", (unsigned long long) pctx->blkcount);
 	if (pctx->group != (dgrp_t) -1)
 		fprintf(f, " group=\"%u\"", pctx->group);
 	if (pctx->csum1)
@@ -2398,9 +2398,9 @@
 	if (pctx->csum2)
 		fprintf(f, " csum2=\"%u\"", pctx->csum2);
 	if (pctx->num)
-		fprintf(f, " num=\"%llu\"", pctx->num);
+		fprintf(f, " num=\"%llu\"", (unsigned long long) pctx->num);
 	if (pctx->num2)
-		fprintf(f, " num2=\"%llu\"", pctx->num2);
+		fprintf(f, " num2=\"%llu\"", (unsigned long long) pctx->num2);
 	if (pctx->str)
 		fprintf(f, " str=\"%s\"", pctx->str);
 	fputs("/>\n", f);
diff --git a/e2fsck/region.c b/e2fsck/region.c
index 788e0d0..698f7bd 100644
--- a/e2fsck/region.c
+++ b/e2fsck/region.c
@@ -180,10 +180,13 @@
 	struct region_el	*r;
 	int	i = 0;
 
-	fprintf(f, "Printing region (min=%llu. max=%llu)\n\t", region->min,
-		region->max);
+	fprintf(f, "Printing region (min=%llu. max=%llu)\n\t",
+		(unsigned long long) region->min,
+		(unsigned long long) region->max);
 	for (r = region->allocated; r; r = r->next) {
-		fprintf(f, "(%llu, %llu)  ", r->start, r->end);
+		fprintf(f, "(%llu, %llu)  ",
+			(unsigned long long) r->start,
+			(unsigned long long) r->end);
 		if (++i >= 8)
 			fprintf(f, "\n\t");
 	}
@@ -205,7 +208,8 @@
 			start = bcode_program[pc++];
 			end = bcode_program[pc++];
 			printf("Creating region with args(%llu, %llu)\n",
-			       start, end);
+			       (unsigned long long) start,
+			       (unsigned long long) end);
 			r = region_create(start, end);
 			if (!r) {
 				fprintf(stderr, "Couldn't create region.\n");
@@ -217,7 +221,8 @@
 			end = bcode_program[pc++];
 			ret = region_allocate(r, start, end);
 			printf("Region_allocate(%llu, %llu) returns %d\n",
-			       start, end, ret);
+			       (unsigned long long) start,
+			       (unsigned long long) end, ret);
 			break;
 		case BCODE_PRINT:
 			region_print(r, stdout);
diff --git a/e2fsck/unix.c b/e2fsck/unix.c
index 08f1863..c5f9e44 100644
--- a/e2fsck/unix.c
+++ b/e2fsck/unix.c
@@ -138,7 +138,8 @@
 			       "%llu/%llu blocks\n"),
 			ctx->device_name, inodes_used, inodes,
 			frag_percent_total / 10, frag_percent_total % 10,
-			blocks_used, blocks);
+			(unsigned long long) blocks_used,
+			(unsigned long long) blocks);
 		return;
 	}
 	profile_get_boolean(ctx->profile, "options", "report_features", 0, 0,
@@ -194,7 +195,8 @@
 	log_out(ctx, P_("%12llu block used (%2.2f%%, out of %llu)\n",
 			"%12llu blocks used (%2.2f%%, out of %llu)\n",
 		   blocks_used),
-		blocks_used, 100.0 * blocks_used / blocks, blocks);
+		(unsigned long long) blocks_used, 100.0 * blocks_used / blocks,
+		(unsigned long long) blocks);
 	log_out(ctx, P_("%12u bad block\n", "%12u bad blocks\n",
 			ctx->fs_badblocks_count), ctx->fs_badblocks_count);
 	log_out(ctx, P_("%12u large file\n", "%12u large files\n",
@@ -444,9 +446,9 @@
 		ctx->device_name,
 		fs->super->s_inodes_count - fs->super->s_free_inodes_count,
 		fs->super->s_inodes_count,
-		ext2fs_blocks_count(fs->super) -
+		(unsigned long long) ext2fs_blocks_count(fs->super) -
 		ext2fs_free_blocks_count(fs->super),
-		ext2fs_blocks_count(fs->super));
+		(unsigned long long) ext2fs_blocks_count(fs->super));
 	next_check = 100000;
 	if (fs->super->s_max_mnt_count > 0) {
 		next_check = fs->super->s_max_mnt_count - fs->super->s_mnt_count;
@@ -821,7 +823,7 @@
 #ifdef CONFIG_JBD_DEBUG
 	char 		*jbd_debug;
 #endif
-	unsigned long long phys_mem_kb;
+	unsigned long long phys_mem_kb, blk;
 
 	retval = e2fsck_allocate_context(&ctx);
 	if (retval)
@@ -922,7 +924,8 @@
 			/* What we do by default, anyway! */
 			break;
 		case 'b':
-			res = sscanf(optarg, "%llu", &ctx->use_superblock);
+			res = sscanf(optarg, "%llu", &blk);
+			ctx->use_superblock = blk;
 			if (res != 1)
 				goto sscanf_err;
 			ctx->flags |= E2F_FLAG_SB_SPECIFIED;
diff --git a/e2fsck/util.c b/e2fsck/util.c
index 0a7cafe..3fe3c98 100644
--- a/e2fsck/util.c
+++ b/e2fsck/util.c
@@ -771,7 +771,8 @@
 		       mmp->mmp_check_interval);
 		printf("    mmp_sequence: %08x\n", mmp->mmp_seq);
 		printf("    mmp_update_date: %s", ctime(&t));
-		printf("    mmp_update_time: %lld\n", mmp->mmp_time);
+		printf("    mmp_update_time: %lld\n",
+		       (long long) mmp->mmp_time);
 		printf("    mmp_node_name: %.*s\n",
 		       EXT2_LEN_STR(mmp->mmp_nodename));
 		printf("    mmp_device_name: %.*s\n",
diff --git a/e2fsprogs.lsm b/e2fsprogs.lsm
index 00bf9ce..9f99921 100644
--- a/e2fsprogs.lsm
+++ b/e2fsprogs.lsm
@@ -1,15 +1,15 @@
 Begin3
 Title:          EXT2 Filesystem utilities
-Version:        1.46.1
-Entered-date:   2021-02-9
+Version:        1.46.2
+Entered-date:   2021-02-28
 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
-                9272kB e2fsprogs-1.46.1.tar.gz
-                1kB    e2fsprogs-1.46.1.lsm
+                9276kB e2fsprogs-1.46.2.tar.gz
+                1kB    e2fsprogs-1.46.2.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/5.x
 Copying-policy: GPL-2/LGPL-2
diff --git a/lib/e2p/fgetflags.c b/lib/e2p/fgetflags.c
index 7b93cba..0f1a059 100644
--- a/lib/e2p/fgetflags.c
+++ b/lib/e2p/fgetflags.c
@@ -39,11 +39,14 @@
 
 #include "e2p.h"
 
-#ifdef O_LARGEFILE
-#define OPEN_FLAGS (O_RDONLY|O_NONBLOCK|O_LARGEFILE)
-#else
-#define OPEN_FLAGS (O_RDONLY|O_NONBLOCK)
+#ifndef O_LARGEFILE
+#define O_LARGEFILE 0
 #endif
+#ifndef O_NOFOLLOW
+#define O_NOFOLLOW 0
+#endif
+
+#define OPEN_FLAGS (O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_NOFOLLOW)
 
 int fgetflags (const char * name, unsigned long * flags)
 {
@@ -68,35 +71,35 @@
 #endif
 
 	return 0;
-#else /* !HAVE_STAT_FLAGS || (APPLE_DARWIN && HAVE_EXT2_IOCTLS) */
-#if HAVE_EXT2_IOCTLS
+#elif APPLE_DARWIN && HAVE_EXT2_IOCTLS
+	int f, save_errno = 0;
+
+	f = -1;
+	save_errno = syscall(SYS_fsctl, name, EXT2_IOC_GETFLAGS, &f, 0);
+	*flags = f;
+	return (save_errno);
+#elif HAVE_EXT2_IOCTLS
 	int fd, r, f, save_errno = 0;
 
-	if (!lstat(name, &buf) &&
-	    !S_ISREG(buf.st_mode) && !S_ISDIR(buf.st_mode)) {
-		goto notsupp;
-	}
-#if !APPLE_DARWIN
-	fd = open (name, OPEN_FLAGS);
-	if (fd == -1)
+	fd = open(name, OPEN_FLAGS);
+	if (fd == -1) {
+		if (errno == ELOOP || errno == ENXIO)
+			errno = EOPNOTSUPP;
 		return -1;
-	r = ioctl (fd, EXT2_IOC_GETFLAGS, &f);
-	if (r == -1)
+	}
+	r = ioctl(fd, EXT2_IOC_GETFLAGS, &f);
+	if (r == -1) {
+		if (errno == ENOTTY)
+			errno = EOPNOTSUPP;
 		save_errno = errno;
+	}
 	*flags = f;
-	close (fd);
+	close(fd);
 	if (save_errno)
 		errno = save_errno;
 	return r;
-#else /* APPLE_DARWIN */
-   f = -1;
-   save_errno = syscall(SYS_fsctl, name, EXT2_IOC_GETFLAGS, &f, 0);
-   *flags = f;
-   return (save_errno);
-#endif /* !APPLE_DARWIN */
-notsupp:
-#endif /* HAVE_EXT2_IOCTLS */
-#endif
+#else
 	errno = EOPNOTSUPP;
 	return -1;
+#endif
 }
diff --git a/lib/e2p/fsetflags.c b/lib/e2p/fsetflags.c
index 027834b..2851554 100644
--- a/lib/e2p/fsetflags.c
+++ b/lib/e2p/fsetflags.c
@@ -48,11 +48,14 @@
 #undef HAVE_CHFLAGS
 #endif
 
-#ifdef O_LARGEFILE
-#define OPEN_FLAGS (O_RDONLY|O_NONBLOCK|O_LARGEFILE)
-#else
-#define OPEN_FLAGS (O_RDONLY|O_NONBLOCK)
+#ifndef O_LARGEFILE
+#define O_LARGEFILE 0
 #endif
+#ifndef O_NOFOLLOW
+#define O_NOFOLLOW 0
+#endif
+
+#define OPEN_FLAGS (O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_NOFOLLOW)
 
 int fsetflags (const char * name, unsigned long flags)
 {
@@ -73,35 +76,32 @@
 #endif
 
 	return chflags (name, bsd_flags);
-#else /* !HAVE_CHFLAGS || (APPLE_DARWIN && HAVE_EXT2_IOCTLS) */
-#if HAVE_EXT2_IOCTLS
+#elif APPLE_DARWIN && HAVE_EXT2_IOCTLS
+	int f = (int) flags;
+	return syscall(SYS_fsctl, name, EXT2_IOC_SETFLAGS, &f, 0);
+#elif HAVE_EXT2_IOCTLS
 	int fd, r, f, save_errno = 0;
 	struct stat buf;
 
-	if (!lstat(name, &buf) &&
-	    !S_ISREG(buf.st_mode) && !S_ISDIR(buf.st_mode)) {
-		goto notsupp;
-	}
-#if !APPLE_DARWIN
-	fd = open (name, OPEN_FLAGS);
-	if (fd == -1)
+	fd = open(name, OPEN_FLAGS);
+	if (fd == -1) {
+		if (errno == ELOOP || errno == ENXIO)
+			errno = EOPNOTSUPP;
 		return -1;
+	}
 	f = (int) flags;
-	r = ioctl (fd, EXT2_IOC_SETFLAGS, &f);
-	if (r == -1)
+	r = ioctl(fd, EXT2_IOC_SETFLAGS, &f);
+	if (r == -1) {
+		if (errno == ENOTTY)
+			errno = EOPNOTSUPP;
 		save_errno = errno;
-	close (fd);
+	}
+	close(fd);
 	if (save_errno)
 		errno = save_errno;
-#else /* APPLE_DARWIN */
-	f = (int) flags;
-	return syscall(SYS_fsctl, name, EXT2_IOC_SETFLAGS, &f, 0);
-#endif /* !APPLE_DARWIN */
 	return r;
-
-notsupp:
-#endif /* HAVE_EXT2_IOCTLS */
-#endif
+#else
 	errno = EOPNOTSUPP;
 	return -1;
+#endif
 }
diff --git a/lib/e2p/ls.c b/lib/e2p/ls.c
index 5aad15d..176bee0 100644
--- a/lib/e2p/ls.c
+++ b/lib/e2p/ls.c
@@ -269,12 +269,15 @@
 	fprintf(f, "Filesystem OS type:       %s\n", str);
 	free(str);
 	fprintf(f, "Inode count:              %u\n", sb->s_inodes_count);
-	fprintf(f, "Block count:              %llu\n", e2p_blocks_count(sb));
-	fprintf(f, "Reserved block count:     %llu\n", e2p_r_blocks_count(sb));
+	fprintf(f, "Block count:              %llu\n",
+		(unsigned long long) e2p_blocks_count(sb));
+	fprintf(f, "Reserved block count:     %llu\n",
+		(unsigned long long) e2p_r_blocks_count(sb));
 	if (sb->s_overhead_clusters)
 		fprintf(f, "Overhead clusters:        %u\n",
 			sb->s_overhead_clusters);
-	fprintf(f, "Free blocks:              %llu\n", e2p_free_blocks_count(sb));
+	fprintf(f, "Free blocks:              %llu\n",
+		(unsigned long long) e2p_free_blocks_count(sb));
 	fprintf(f, "Free inodes:              %u\n", sb->s_free_inodes_count);
 	fprintf(f, "First block:              %u\n", sb->s_first_data_block);
 	fprintf(f, "Block size:               %u\n", EXT2_BLOCK_SIZE(sb));
@@ -336,18 +339,19 @@
 	if (sb->s_kbytes_written) {
 		fprintf(f, "Lifetime writes:          ");
 		if (sb->s_kbytes_written < POW2(13))
-			fprintf(f, "%llu kB\n", sb->s_kbytes_written);
+			fprintf(f, "%llu kB\n",
+				(unsigned long long) sb->s_kbytes_written);
 		else if (sb->s_kbytes_written < POW2(23))
-			fprintf(f, "%llu MB\n",
-				(sb->s_kbytes_written + POW2(9)) >> 10);
+		  fprintf(f, "%llu MB\n", (unsigned long long)
+			  (sb->s_kbytes_written + POW2(9)) >> 10);
 		else if (sb->s_kbytes_written < POW2(33))
-			fprintf(f, "%llu GB\n",
+		  fprintf(f, "%llu GB\n", (unsigned long long)
 				(sb->s_kbytes_written + POW2(19)) >> 20);
 		else if (sb->s_kbytes_written < POW2(43))
-			fprintf(f, "%llu TB\n",
+			fprintf(f, "%llu TB\n", (unsigned long long)
 				(sb->s_kbytes_written + POW2(29)) >> 30);
 		else
-			fprintf(f, "%llu PB\n",
+			fprintf(f, "%llu PB\n", (unsigned long long)
 				(sb->s_kbytes_written + POW2(39)) >> 40);
 	}
 	fprintf(f, "Reserved blocks uid:      ");
@@ -407,7 +411,7 @@
 		fprintf(f, "Snapshot ID:              %u\n",
 			sb->s_snapshot_id);
 		fprintf(f, "Snapshot reserved blocks: %llu\n",
-			sb->s_snapshot_r_blocks_count);
+			(unsigned long long) sb->s_snapshot_r_blocks_count);
 	}
 	if (sb->s_snapshot_list)
 		fprintf(f, "Snapshot list head:       %u\n",
@@ -427,7 +431,7 @@
 				sb->s_first_error_ino);
 		if (sb->s_first_error_block)
 			fprintf(f, "First error block #:      %llu\n",
-				sb->s_first_error_block);
+				(unsigned long long) sb->s_first_error_block);
 		if (sb->s_first_error_errcode)
 			fprintf(f, "First error err:          %s\n",
 				e2p_errcode2str(sb->s_first_error_errcode));
@@ -444,14 +448,14 @@
 				sb->s_last_error_ino);
 		if (sb->s_last_error_block)
 			fprintf(f, "Last error block #:       %llu\n",
-				sb->s_last_error_block);
+				(unsigned long long) sb->s_last_error_block);
 		if (sb->s_last_error_errcode)
 			fprintf(f, "Last error err:           %s\n",
 				e2p_errcode2str(sb->s_last_error_errcode));
 	}
 	if (ext2fs_has_feature_mmp(sb)) {
 		fprintf(f, "MMP block number:         %llu\n",
-			(long long)sb->s_mmp_block);
+			(unsigned long long) sb->s_mmp_block);
 		fprintf(f, "MMP update interval:      %u\n",
 			sb->s_mmp_update_interval);
 	}
diff --git a/lib/e2p/pf.c b/lib/e2p/pf.c
index 61fd4ab..81e3bb2 100644
--- a/lib/e2p/pf.c
+++ b/lib/e2p/pf.c
@@ -49,6 +49,7 @@
 	{ EXT4_INLINE_DATA_FL, "N", "Inline_Data" },
 	{ EXT4_PROJINHERIT_FL, "P", "Project_Hierarchy" },
 	{ EXT4_VERITY_FL, "V", "Verity" },
+	{ EXT2_NOCOMPR_FL, "m", "Dont_Compress" },
 	{ 0, NULL, NULL }
 };
 
@@ -76,4 +77,3 @@
 	if (long_opt && first)
 		fputs("---", f);
 }
-
diff --git a/lib/ext2fs/blkmap64_ba.c b/lib/ext2fs/blkmap64_ba.c
index 85cb38d..5d8f154 100644
--- a/lib/ext2fs/blkmap64_ba.c
+++ b/lib/ext2fs/blkmap64_ba.c
@@ -313,7 +313,7 @@
 #ifdef ENABLE_BMAP_STATS
 static void ba_print_stats(ext2fs_generic_bitmap_64 bitmap)
 {
-	fprintf(stderr, "%16llu Bytes used by bitarray\n",
+	fprintf(stderr, "%16llu Bytes used by bitarray\n", (unsigned long long)
 		((bitmap->real_end - bitmap->start) >> 3) + 1 +
 		sizeof(struct ext2fs_ba_private_struct));
 }
diff --git a/lib/ext2fs/blkmap64_rb.c b/lib/ext2fs/blkmap64_rb.c
index 1fd5527..0df58dc 100644
--- a/lib/ext2fs/blkmap64_rb.c
+++ b/lib/ext2fs/blkmap64_rb.c
@@ -80,7 +80,8 @@
 	     node = ext2fs_rb_next(node)) {
 		ext = node_to_extent(node);
 		fprintf(stderr, "\t\t\t--> (%llu -> %llu)\n",
-			ext->start, ext->start + ext->count);
+			(unsigned long long) ext->start,
+			(unsigned long long) ext->start + ext->count);
 	}
 	fprintf(stderr, "\t\t\t=================================\n");
 }
@@ -96,16 +97,18 @@
 		if (ext->count == 0) {
 			fprintf(stderr, "Tree Error: count is zero\n");
 			fprintf(stderr, "extent: %llu -> %llu (%llu)\n",
-				ext->start, ext->start + ext->count,
-				ext->count);
+				(unsigned long long) ext->start,
+				(unsigned long long) ext->start + ext->count,
+				(unsigned long long) ext->count);
 			goto err_out;
 		}
 		if (ext->start + ext->count < ext->start) {
 			fprintf(stderr,
 				"Tree Error: start or count is crazy\n");
 			fprintf(stderr, "extent: %llu -> %llu (%llu)\n",
-				ext->start, ext->start + ext->count,
-				ext->count);
+				(unsigned long long) ext->start,
+				(unsigned long long) ext->start + ext->count,
+				(unsigned long long) ext->count);
 			goto err_out;
 		}
 
@@ -113,24 +116,28 @@
 			if (old->start > ext->start) {
 				fprintf(stderr, "Tree Error: start is crazy\n");
 				fprintf(stderr, "extent: %llu -> %llu (%llu)\n",
-					old->start, old->start + old->count,
-					old->count);
+					(unsigned long long) old->start,
+					(unsigned long long) old->start + old->count,
+					(unsigned long long) old->count);
 				fprintf(stderr,
 					"extent next: %llu -> %llu (%llu)\n",
-					ext->start, ext->start + ext->count,
-					ext->count);
+					(unsigned long long) ext->start,
+					(unsigned long long) ext->start + ext->count,
+					(unsigned long long) ext->count);
 				goto err_out;
 			}
 			if ((old->start + old->count) >= ext->start) {
 				fprintf(stderr,
 					"Tree Error: extent is crazy\n");
 				fprintf(stderr, "extent: %llu -> %llu (%llu)\n",
-					old->start, old->start + old->count,
-					old->count);
+					(unsigned long long) old->start,
+					(unsigned long long) old->start + old->count,
+					(unsigned long long) old->count);
 				fprintf(stderr,
 					"extent next: %llu -> %llu (%llu)\n",
-					ext->start, ext->start + ext->count,
-					ext->count);
+					(unsigned long long) ext->start,
+					(unsigned long long) ext->start + ext->count,
+					(unsigned long long) ext->count);
 				goto err_out;
 			}
 		}
@@ -949,15 +956,17 @@
 		bp->test_hit, t_hit, bp->mark_hit, m_hit);
 #endif
 	fprintf(stderr, "%16llu extents (%llu bytes)\n",
-		count, ((count * sizeof(struct bmap_rb_extent)) +
-			sizeof(struct ext2fs_rb_private)));
+		(unsigned long long) count, (unsigned long long)
+		((count * sizeof(struct bmap_rb_extent)) +
+		 sizeof(struct ext2fs_rb_private)));
  	fprintf(stderr, "%16llu bits minimum size\n",
-		min_size);
+		(unsigned long long) min_size);
 	fprintf(stderr, "%16llu bits maximum size\n"
 		"%16llu bits average size\n",
-		max_size, avg_size);
-	fprintf(stderr, "%16llu bits set in bitmap (out of %llu)\n", size,
-		bitmap->real_end - bitmap->start);
+		(unsigned long long) max_size, (unsigned long long) avg_size);
+	fprintf(stderr, "%16llu bits set in bitmap (out of %llu)\n",
+		(unsigned long long) size,
+		(unsigned long long) bitmap->real_end - bitmap->start);
 	fprintf(stderr,
 		"%16.4lf memory / bitmap bit memory ratio (bitarray = 1)\n",
 		eff);
diff --git a/lib/ext2fs/csum.c b/lib/ext2fs/csum.c
index 86184b6..da32d94 100644
--- a/lib/ext2fs/csum.c
+++ b/lib/ext2fs/csum.c
@@ -263,6 +263,9 @@
 	errcode_t retval = 0;
 	__u16 (*translate)(__u16) = (need_swab ? disk_to_host16 : do_nothing16);
 
+	if (fs->blocksize < 1024)
+		return EXT2_FILSYS_CORRUPTED; /* Should never happen */
+
 	d = dirent;
 	top = EXT2_DIRENT_TAIL(dirent, fs->blocksize);
 
diff --git a/lib/ext2fs/ext2_err.et.in b/lib/ext2fs/ext2_err.et.in
index 0c76fee..cf0e00e 100644
--- a/lib/ext2fs/ext2_err.et.in
+++ b/lib/ext2fs/ext2_err.et.in
@@ -548,4 +548,7 @@
 ec	EXT2_ET_NO_GDESC,
 	"Group descriptors not loaded"
 
+ec	EXT2_FILSYS_CORRUPTED,
+	"The internal ext2_filsys data structure appears to be corrupted"
+
 	end
diff --git a/lib/ext2fs/ext2_fs.h b/lib/ext2fs/ext2_fs.h
index 770a5ad..e92a045 100644
--- a/lib/ext2fs/ext2_fs.h
+++ b/lib/ext2fs/ext2_fs.h
@@ -269,8 +269,7 @@
 #define EXT2_MIN_DESC_SIZE_64BIT       64
 #define EXT2_MAX_DESC_SIZE             EXT2_MIN_BLOCK_SIZE
 #define EXT2_DESC_SIZE(s)                                                \
-       ((EXT2_SB(s)->s_feature_incompat & EXT4_FEATURE_INCOMPAT_64BIT) ? \
-	(s)->s_desc_size : EXT2_MIN_DESC_SIZE)
+	(ext2fs_has_feature_64bit(s) ? (s)->s_desc_size : EXT2_MIN_DESC_SIZE)
 
 #define EXT2_BLOCKS_PER_GROUP(s)	(EXT2_SB(s)->s_blocks_per_group)
 #define EXT2_INODES_PER_GROUP(s)	(EXT2_SB(s)->s_inodes_per_group)
diff --git a/lib/ext2fs/ext_attr.c b/lib/ext2fs/ext_attr.c
index 77e9d35..148fae5 100644
--- a/lib/ext2fs/ext_attr.c
+++ b/lib/ext2fs/ext_attr.c
@@ -629,7 +629,6 @@
 		default:
 			ext2fs_free_mem(&out);
 			return EINVAL;
-			break;
 		}
 		entry++;
 	}
diff --git a/lib/ext2fs/extent.c b/lib/ext2fs/extent.c
index 1a87e68..b324c7b 100644
--- a/lib/ext2fs/extent.c
+++ b/lib/ext2fs/extent.c
@@ -1797,7 +1797,7 @@
 			<< 32);
 	to->e_lblk = ext2fs_le32_to_cpu(from->ee_block);
 	to->e_len = ext2fs_le16_to_cpu(from->ee_len);
-	to->e_flags |= EXT2_EXTENT_FLAGS_LEAF;
+	to->e_flags = EXT2_EXTENT_FLAGS_LEAF;
 	if (to->e_len > EXT_INIT_MAX_LEN) {
 		to->e_len -= EXT_INIT_MAX_LEN;
 		to->e_flags |= EXT2_EXTENT_FLAGS_UNINIT;
@@ -1824,8 +1824,11 @@
 	if (errcode)
 		goto out;
 
-	ext2fs_get_array(handle->max_depth, sizeof(blk64_t),
-				&intermediate_nodes);
+	errcode = ext2fs_get_array(handle->max_depth, sizeof(blk64_t),
+				   &intermediate_nodes);
+	if (errcode)
+		goto out;
+
 	blkcount = handle->level;
 	while (!errcode) {
 		if (extent.e_flags & EXT2_EXTENT_FLAGS_LEAF) {
diff --git a/lib/ext2fs/gen_bitmap64.c b/lib/ext2fs/gen_bitmap64.c
index b237066..a2b8989 100644
--- a/lib/ext2fs/gen_bitmap64.c
+++ b/lib/ext2fs/gen_bitmap64.c
@@ -74,9 +74,11 @@
 #ifndef OMIT_COM_ERR
 	if (bitmap->description)
 		com_err(0, bitmap->base_error_code+code,
-			"#%llu for %s", arg, bitmap->description);
+			"#%llu for %s", (unsigned long long) arg,
+			bitmap->description);
 	else
-		com_err(0, bitmap->base_error_code + code, "#%llu", arg);
+		com_err(0, bitmap->base_error_code + code, "#%llu",
+			(unsigned long long) arg);
 #endif
 }
 
diff --git a/lib/ext2fs/inode.c b/lib/ext2fs/inode.c
index c4377ee..6f42882 100644
--- a/lib/ext2fs/inode.c
+++ b/lib/ext2fs/inode.c
@@ -144,6 +144,8 @@
 	errcode_t (*save_get_blocks)(ext2_filsys f, ext2_ino_t ino, blk_t *blocks);
 
 	EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
+	if (fs->blocksize < 1024)
+		return EXT2_FILSYS_CORRUPTED; /* Should never happen */
 
 	/*
 	 * If fs->badblocks isn't set, then set it --- since the inode
@@ -764,6 +766,8 @@
 	int		cache_slot, fail_csum;
 
 	EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
+	if (fs->blocksize < 1024)
+		return EXT2_FILSYS_CORRUPTED; /* Should never happen */
 
 	/* Check to see if user has an override function */
 	if (fs->read_inode &&
diff --git a/lib/ext2fs/io_manager.c b/lib/ext2fs/io_manager.c
index c395d61..996c31a 100644
--- a/lib/ext2fs/io_manager.c
+++ b/lib/ext2fs/io_manager.c
@@ -134,9 +134,11 @@
 	else
 		size = -count;
 
-	if (io->align)
+	if (io->align) {
+		if (io->align > size)
+			size = io->align;
 		return ext2fs_get_memalign(size, io->align, ptr);
-	else
+	} else
 		return ext2fs_get_mem(size, ptr);
 }
 
diff --git a/lib/ext2fs/mkjournal.c b/lib/ext2fs/mkjournal.c
index 732ba7d..bc8c57b 100644
--- a/lib/ext2fs/mkjournal.c
+++ b/lib/ext2fs/mkjournal.c
@@ -524,7 +524,7 @@
 			retval = ioctl(fd, EXT2_IOC_SETFLAGS, &f);
 			close(fd);
 			if (retval)
-				return retval;
+				return errno;
 		}
 #endif
 #endif
diff --git a/lib/ext2fs/mmp.c b/lib/ext2fs/mmp.c
index c21ae27..9ef4580 100644
--- a/lib/ext2fs/mmp.c
+++ b/lib/ext2fs/mmp.c
@@ -57,21 +57,21 @@
 	 * regardless of how the io_manager is doing reads, to avoid caching of
 	 * the MMP block by the io_manager or the VM.  It needs to be fresh. */
 	if (fs->mmp_fd <= 0) {
+		struct stat st;
 		int flags = O_RDWR | O_DIRECT;
 
-retry:
+		/*
+		 * There is no reason for using O_DIRECT if we're working with
+		 * regular file. Disabling it also avoids problems with
+		 * alignment when the device of the host file system has sector
+		 * size larger than blocksize of the fs we're working with.
+		 */
+		if (stat(fs->device_name, &st) == 0 &&
+		    S_ISREG(st.st_mode))
+			flags &= ~O_DIRECT;
+
 		fs->mmp_fd = open(fs->device_name, flags);
 		if (fs->mmp_fd < 0) {
-			struct stat st;
-
-			/* Avoid O_DIRECT for filesystem image files if open
-			 * fails, since it breaks when running on tmpfs. */
-			if (errno == EINVAL && (flags & O_DIRECT) &&
-			    stat(fs->device_name, &st) == 0 &&
-			    S_ISREG(st.st_mode)) {
-				flags &= ~O_DIRECT;
-				goto retry;
-			}
 			retval = EXT2_ET_MMP_OPEN_DIRECT;
 			goto out;
 		}
@@ -403,7 +403,8 @@
 	errcode_t retval = 0;
 
 	if (!ext2fs_has_feature_mmp(fs->super) ||
-	    !(fs->flags & EXT2_FLAG_RW) || (fs->flags & EXT2_FLAG_SKIP_MMP))
+	    !(fs->flags & EXT2_FLAG_RW) || (fs->flags & EXT2_FLAG_SKIP_MMP) ||
+	    (fs->mmp_buf == NULL) || (fs->mmp_cmp == NULL))
 		goto mmp_error;
 
 	retval = ext2fs_mmp_read(fs, fs->super->s_mmp_block, fs->mmp_buf);
diff --git a/lib/ext2fs/progress.c b/lib/ext2fs/progress.c
index 83556b1..fe4292f 100644
--- a/lib/ext2fs/progress.c
+++ b/lib/ext2fs/progress.c
@@ -85,8 +85,8 @@
 		return;
 	last_update = now;
 
-	printf("%*llu/%*llu", progress->log_max, val,
-	       progress->log_max, progress->max);
+	printf("%*llu/%*llu", progress->log_max, (unsigned long long) val,
+	       progress->log_max, (unsigned long long) progress->max);
 	fprintf(stdout, "%.*s", (2*progress->log_max)+1, backspaces);
 }
 
diff --git a/lib/ext2fs/read_bb_file.c b/lib/ext2fs/read_bb_file.c
index 8d1ad1a..a6d3beb 100644
--- a/lib/ext2fs/read_bb_file.c
+++ b/lib/ext2fs/read_bb_file.c
@@ -39,7 +39,7 @@
 					       void *priv_data))
 {
 	errcode_t	retval;
-	blk64_t		blockno;
+	unsigned long long blockno;
 	int		count;
 	char		buf[128];
 
@@ -65,10 +65,10 @@
 		    ((blockno < fs->super->s_first_data_block) ||
 		     (blockno >= ext2fs_blocks_count(fs->super)))) {
 			if (invalid)
-				(invalid)(fs, blockno, buf, priv_data);
+				(invalid)(fs, (blk64_t) blockno, buf, priv_data);
 			continue;
 		}
-		retval = ext2fs_badblocks_list_add(*bb_list, blockno);
+		retval = ext2fs_badblocks_list_add(*bb_list, (blk64_t) blockno);
 		if (retval)
 			return retval;
 	}
diff --git a/lib/ext2fs/tst_bitmaps.c b/lib/ext2fs/tst_bitmaps.c
index f6196b3..cb3c70d 100644
--- a/lib/ext2fs/tst_bitmaps.c
+++ b/lib/ext2fs/tst_bitmaps.c
@@ -439,7 +439,7 @@
 		       error_message(retval));
 		return;
 	}
-	printf("First unmarked block is %llu\n", out);
+	printf("First unmarked block is %llu\n", (unsigned long long) out);
 }
 
 void do_ffsb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
@@ -473,7 +473,7 @@
 		       error_message(retval));
 		return;
 	}
-	printf("First marked block is %llu\n", out);
+	printf("First marked block is %llu\n", (unsigned long long) out);
 }
 
 
diff --git a/lib/ext2fs/tst_iscan.c b/lib/ext2fs/tst_iscan.c
index 70bfbec..76aaa9a 100644
--- a/lib/ext2fs/tst_iscan.c
+++ b/lib/ext2fs/tst_iscan.c
@@ -182,7 +182,8 @@
 
 	for (i=0; test_vec[i]; i++) {
 		if (ext2fs_test_block_bitmap2(touched_map, test_vec[i])) {
-			printf("Bad block was touched --- %llu\n", test_vec[i]);
+			printf("Bad block was touched --- %llu\n",
+			       (unsigned long long) test_vec[i]);
 			failed++;
 			first_no_comma = 1;
 		}
@@ -194,7 +195,8 @@
 		     j++, blk++) {
 			if (!ext2fs_test_block_bitmap2(touched_map, blk) &&
 			    !ext2fs_test_block_bitmap2(bad_block_map, blk)) {
-				printf("Missing block --- %llu\n", blk);
+				printf("Missing block --- %llu\n",
+				       (unsigned long long) blk);
 				failed++;
 			}
 		}
diff --git a/lib/ext2fs/tst_libext2fs.c b/lib/ext2fs/tst_libext2fs.c
index 3e7497c..4c86464 100644
--- a/lib/ext2fs/tst_libext2fs.c
+++ b/lib/ext2fs/tst_libext2fs.c
@@ -38,7 +38,8 @@
 			     void *private EXT2FS_ATTR((unused)))
 {
 	printf("%6lld %8llu (%d %llu)\n", (long long) blockcnt,
-	       (unsigned long long)*blocknr, ref_offset, ref_block);
+	       (unsigned long long) *blocknr, ref_offset,
+	       (unsigned long long) ref_block);
 	return 0;
 }
 
diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c
index 73f5667..64eee34 100644
--- a/lib/ext2fs/unix_io.c
+++ b/lib/ext2fs/unix_io.c
@@ -218,6 +218,8 @@
 	int		actual = 0;
 	unsigned char	*buf = bufv;
 	ssize_t		really_read = 0;
+	unsigned long long aligned_blk;
+	int		align_size, offset;
 
 	size = (count < 0) ? -count : (ext2_loff_t) count * channel->block_size;
 	mutex_lock(data, STATS_MTX);
@@ -225,18 +227,14 @@
 	mutex_unlock(data, STATS_MTX);
 	location = ((ext2_loff_t) block * channel->block_size) + data->offset;
 
-	if (data->flags & IO_FLAG_FORCE_BOUNCE) {
-		if (ext2fs_llseek(data->dev, location, SEEK_SET) != location) {
-			retval = errno ? errno : EXT2_ET_LLSEEK_FAILED;
-			goto error_out;
-		}
+	if (data->flags & IO_FLAG_FORCE_BOUNCE)
 		goto bounce_read;
-	}
 
 #ifdef HAVE_PREAD64
 	/* Try an aligned pread */
 	if ((channel->align == 0) ||
 	    (IS_ALIGNED(buf, channel->align) &&
+	     IS_ALIGNED(location, channel->align) &&
 	     IS_ALIGNED(size, channel->align))) {
 		actual = pread64(data->dev, buf, size, location);
 		if (actual == size)
@@ -248,6 +246,7 @@
 	if ((sizeof(off_t) >= sizeof(ext2_loff_t)) &&
 	    ((channel->align == 0) ||
 	     (IS_ALIGNED(buf, channel->align) &&
+	      IS_ALIGNED(location, channel->align) &&
 	      IS_ALIGNED(size, channel->align)))) {
 		actual = pread(data->dev, buf, size, location);
 		if (actual == size)
@@ -256,13 +255,15 @@
 	}
 #endif /* HAVE_PREAD */
 
-	if (ext2fs_llseek(data->dev, location, SEEK_SET) != location) {
-		retval = errno ? errno : EXT2_ET_LLSEEK_FAILED;
-		goto error_out;
-	}
 	if ((channel->align == 0) ||
 	    (IS_ALIGNED(buf, channel->align) &&
+	     IS_ALIGNED(location, channel->align) &&
 	     IS_ALIGNED(size, channel->align))) {
+		mutex_lock(data, BOUNCE_MTX);
+		if (ext2fs_llseek(data->dev, location, SEEK_SET) < 0) {
+			retval = errno ? errno : EXT2_ET_LLSEEK_FAILED;
+			goto error_unlock;
+		}
 		actual = read(data->dev, buf, size);
 		if (actual != size) {
 		short_read:
@@ -271,9 +272,9 @@
 				actual = 0;
 			} else
 				retval = EXT2_ET_SHORT_READ;
-			goto error_out;
+			goto error_unlock;
 		}
-		return 0;
+		goto success_unlock;
 	}
 
 #ifdef ALIGN_DEBUG
@@ -286,10 +287,24 @@
 	 * to the O_DIRECT rules, so we need to do this the hard way...
 	 */
 bounce_read:
+	if (channel->align == 0)
+		channel->align = 1;
+	if ((channel->block_size > channel->align) &&
+	    (channel->block_size % channel->align) == 0)
+		align_size = channel->block_size;
+	else
+		align_size = channel->align;
+	aligned_blk = location / align_size;
+	offset = location % align_size;
+
+	mutex_lock(data, BOUNCE_MTX);
+	if (ext2fs_llseek(data->dev, aligned_blk * align_size, SEEK_SET) < 0) {
+		retval = errno ? errno : EXT2_ET_LLSEEK_FAILED;
+		goto error_unlock;
+	}
 	while (size > 0) {
-		mutex_lock(data, BOUNCE_MTX);
-		actual = read(data->dev, data->bounce, channel->block_size);
-		if (actual != channel->block_size) {
+		actual = read(data->dev, data->bounce, align_size);
+		if (actual != align_size) {
 			mutex_unlock(data, BOUNCE_MTX);
 			actual = really_read;
 			buf -= really_read;
@@ -297,16 +312,23 @@
 			goto short_read;
 		}
 		actual = size;
-		if (size > channel->block_size)
-			actual = channel->block_size;
-		memcpy(buf, data->bounce, actual);
+		if (actual > align_size)
+			actual = align_size;
+		actual -= offset;
+		memcpy(buf, data->bounce + offset, actual);
+
 		really_read += actual;
 		size -= actual;
 		buf += actual;
-		mutex_unlock(data, BOUNCE_MTX);
+		offset = 0;
+		aligned_blk++;
 	}
+success_unlock:
+	mutex_unlock(data, BOUNCE_MTX);
 	return 0;
 
+error_unlock:
+	mutex_unlock(data, BOUNCE_MTX);
 error_out:
 	if (actual >= 0 && actual < size)
 		memset((char *) buf+actual, 0, size-actual);
@@ -326,6 +348,8 @@
 	int		actual = 0;
 	errcode_t	retval;
 	const unsigned char *buf = bufv;
+	unsigned long long aligned_blk;
+	int		align_size, offset;
 
 	if (count == 1)
 		size = channel->block_size;
@@ -341,18 +365,14 @@
 
 	location = ((ext2_loff_t) block * channel->block_size) + data->offset;
 
-	if (data->flags & IO_FLAG_FORCE_BOUNCE) {
-		if (ext2fs_llseek(data->dev, location, SEEK_SET) != location) {
-			retval = errno ? errno : EXT2_ET_LLSEEK_FAILED;
-			goto error_out;
-		}
+	if (data->flags & IO_FLAG_FORCE_BOUNCE)
 		goto bounce_write;
-	}
 
 #ifdef HAVE_PWRITE64
 	/* Try an aligned pwrite */
 	if ((channel->align == 0) ||
 	    (IS_ALIGNED(buf, channel->align) &&
+	     IS_ALIGNED(location, channel->align) &&
 	     IS_ALIGNED(size, channel->align))) {
 		actual = pwrite64(data->dev, buf, size, location);
 		if (actual == size)
@@ -363,6 +383,7 @@
 	if ((sizeof(off_t) >= sizeof(ext2_loff_t)) &&
 	    ((channel->align == 0) ||
 	     (IS_ALIGNED(buf, channel->align) &&
+	      IS_ALIGNED(location, channel->align) &&
 	      IS_ALIGNED(size, channel->align)))) {
 		actual = pwrite(data->dev, buf, size, location);
 		if (actual == size)
@@ -370,15 +391,17 @@
 	}
 #endif /* HAVE_PWRITE */
 
-	if (ext2fs_llseek(data->dev, location, SEEK_SET) != location) {
-		retval = errno ? errno : EXT2_ET_LLSEEK_FAILED;
-		goto error_out;
-	}
-
 	if ((channel->align == 0) ||
 	    (IS_ALIGNED(buf, channel->align) &&
+	     IS_ALIGNED(location, channel->align) &&
 	     IS_ALIGNED(size, channel->align))) {
+		mutex_lock(data, BOUNCE_MTX);
+		if (ext2fs_llseek(data->dev, location, SEEK_SET) < 0) {
+			retval = errno ? errno : EXT2_ET_LLSEEK_FAILED;
+			goto error_out;
+		}
 		actual = write(data->dev, buf, size);
+		mutex_unlock(data, BOUNCE_MTX);
 		if (actual < 0) {
 			retval = errno;
 			goto error_out;
@@ -400,43 +423,64 @@
 	 * to the O_DIRECT rules, so we need to do this the hard way...
 	 */
 bounce_write:
+	if (channel->align == 0)
+		channel->align = 1;
+	if ((channel->block_size > channel->align) &&
+	    (channel->block_size % channel->align) == 0)
+		align_size = channel->block_size;
+	else
+		align_size = channel->align;
+	aligned_blk = location / align_size;
+	offset = location % align_size;
+
 	while (size > 0) {
+		int actual_w;
+
 		mutex_lock(data, BOUNCE_MTX);
-		if (size < channel->block_size) {
+		if (size < align_size || offset) {
+			if (ext2fs_llseek(data->dev, aligned_blk * align_size,
+					  SEEK_SET) < 0) {
+				retval = errno ? errno : EXT2_ET_LLSEEK_FAILED;
+				goto error_unlock;
+			}
 			actual = read(data->dev, data->bounce,
-				      channel->block_size);
-			if (actual != channel->block_size) {
+				      align_size);
+			if (actual != align_size) {
 				if (actual < 0) {
-					mutex_unlock(data, BOUNCE_MTX);
 					retval = errno;
-					goto error_out;
+					goto error_unlock;
 				}
 				memset((char *) data->bounce + actual, 0,
-				       channel->block_size - actual);
+				       align_size - actual);
 			}
 		}
 		actual = size;
-		if (size > channel->block_size)
-			actual = channel->block_size;
-		memcpy(data->bounce, buf, actual);
-		if (ext2fs_llseek(data->dev, location, SEEK_SET) != location) {
+		if (actual > align_size)
+			actual = align_size;
+		actual -= offset;
+		memcpy(((char *)data->bounce) + offset, buf, actual);
+		if (ext2fs_llseek(data->dev, aligned_blk * align_size, SEEK_SET) < 0) {
 			retval = errno ? errno : EXT2_ET_LLSEEK_FAILED;
-			goto error_out;
+			goto error_unlock;
 		}
-		actual = write(data->dev, data->bounce, channel->block_size);
+		actual_w = write(data->dev, data->bounce, align_size);
 		mutex_unlock(data, BOUNCE_MTX);
-		if (actual < 0) {
+		if (actual_w < 0) {
 			retval = errno;
 			goto error_out;
 		}
-		if (actual != channel->block_size)
+		if (actual_w != align_size)
 			goto short_write;
 		size -= actual;
 		buf += actual;
 		location += actual;
+		aligned_blk++;
+		offset = 0;
 	}
 	return 0;
 
+error_unlock:
+	mutex_unlock(data, BOUNCE_MTX);
 error_out:
 	if (channel->write_error)
 		retval = (channel->write_error)(channel, block, count, buf,
diff --git a/lib/support/quotaio_v2.c b/lib/support/quotaio_v2.c
index 7390667..23717f0 100644
--- a/lib/support/quotaio_v2.c
+++ b/lib/support/quotaio_v2.c
@@ -197,7 +197,8 @@
 	     (filesize + QT_BLKSIZE - 1) >> QT_BLKSIZE_BITS)) {
 		log_err("Quota inode %u corrupted: file size %llu; "
 			"dqi_blocks %u", h->qh_qf.ino,
-			filesize, info->dqi_qtree.dqi_blocks);
+			(unsigned long long) filesize,
+			info->dqi_qtree.dqi_blocks);
 		return -1;
 	}
 	if (info->dqi_qtree.dqi_free_blk >= info->dqi_qtree.dqi_blocks) {
diff --git a/misc/Makefile.in b/misc/Makefile.in
index 3e82127..3b949d3 100644
--- a/misc/Makefile.in
+++ b/misc/Makefile.in
@@ -140,7 +140,7 @@
 	$(FMANPAGES) $(LPROGS) $(E4DEFRAG_PROG) $(E4CRYPT_PROGS) e2fuzz
 
 all-static:: $(E2IMAGE_STATIC) $(UUIDD_STATIC) $(BLKID_STATIC) \
-	dumpe2fs.static mke2fs.static tune2fs.static
+	dumpe2fs.static mke2fs.static tune2fs.static lsattr.static chattr.static
 
 @PROFILE_CMT@all:: tune2fs.profiled blkid.profiled e2image.profiled \
 	e2undo.profiled mke2fs.profiled dumpe2fs.profiled fsck.profiled \
@@ -304,11 +304,21 @@
 	$(Q) $(CC) $(ALL_LDFLAGS) -o chattr $(CHATTR_OBJS) $(LIBS_E2P) \
 		$(LIBINTL) $(SYSLIBS)
 
+chattr.static: $(CHATTR_OBJS) $(STATIC_LIBE2P) $(STATIC_LIBCOM_ERR)
+	$(E) "	LD $@"
+	$(Q) $(CC) $(ALL_LDFLAGS) -o chattr.static $(CHATTR_OBJS) $(STATIC_LIBE2P) \
+		$(STATIC_LIBCOM_ERR) $(LIBINTL) $(SYSLIBS)
+
 lsattr: $(LSATTR_OBJS) $(DEPLIBS_E2P)
 	$(E) "	LD $@"
 	$(Q) $(CC) $(ALL_LDFLAGS) -o lsattr $(LSATTR_OBJS) $(LIBS_E2P) \
 		$(LIBINTL) $(SYSLIBS)
 
+lsattr.static: $(LSATTR_OBJS) $(STATIC_LIBE2P) $(STATIC_LIBCOM_ERR)
+	$(E) "	LD $@"
+	$(Q) $(CC) $(ALL_LDFLAGS) -o lsattr.static $(LSATTR_OBJS) $(STATIC_LIBE2P) \
+		$(STATIC_LIBCOM_ERR) $(LIBINTL) $(SYSLIBS)
+
 uuidgen: $(UUIDGEN_OBJS) $(DEPLIBUUID)
 	$(E) "	LD $@"
 	$(Q) $(CC) $(ALL_LDFLAGS) -o uuidgen $(UUIDGEN_OBJS) $(LIBUUID) \
diff --git a/misc/badblocks.c b/misc/badblocks.c
index abf315c..afeb3da 100644
--- a/misc/badblocks.c
+++ b/misc/badblocks.c
@@ -892,7 +892,6 @@
 			test_ptr += got * block_size;
 			currently_testing += got;
 			if (got != try) {
-				try = 1;
 				if (recover_block == ~0U)
 					recover_block = currently_testing -
 						got + blocks_at_once;
@@ -1066,7 +1065,7 @@
 				  unsigned int);
 	int open_flag;
 	long sysval;
-	blk64_t inblk;
+	unsigned long long inblk;
 
 	setbuf(stdout, NULL);
 	setbuf(stderr, NULL);
@@ -1201,6 +1200,19 @@
 			exit(1);
 		}
 	}
+	if ((block_size <= 0) || (block_size > (1 << 24)) ||
+	    (block_size & (block_size - 1))) {
+		com_err(program_name, 0, _("Invalid block size: %d\n"),
+			block_size);
+		exit(1);
+	}
+	if ((blocks_at_once <= 0) ||
+	    (((unsigned long long) block_size * blocks_at_once) > 0xFFFFFFFF)) {
+		com_err(program_name, 0, _("Invalid blocks_at_once: %d\n"),
+			blocks_at_once);
+		exit(1);
+	}
+
 	if (optind > argc - 1)
 		usage();
 	device_name = argv[optind++];
@@ -1231,14 +1243,15 @@
 	} else first_block = 0;
 	if (first_block >= last_block) {
 	    com_err (program_name, 0, _("invalid starting block (%llu): must be less than %llu"),
-		     first_block, last_block);
+		     (unsigned long long) first_block,
+		     (unsigned long long) last_block);
 	    exit (1);
 	}
 	/* ext2 badblocks file can't handle large values */
 	if (last_block >> 32) {
 		com_err(program_name, EOVERFLOW,
 			_("invalid end block (%llu): must be 32-bit value"),
-			last_block);
+			(unsigned long long) last_block);
 		exit(1);
 	}
 	if (w_flag)
diff --git a/misc/chattr.1.in b/misc/chattr.1.in
index 5a4928a..5e1eeb7 100644
--- a/misc/chattr.1.in
+++ b/misc/chattr.1.in
@@ -23,13 +23,13 @@
 .B chattr
 changes the file attributes on a Linux file system.
 .PP
-The format of a symbolic mode is +-=[aAcCdDeFijPsStTux].
+The format of a symbolic mode is +-=[aAcCdDeFijmPsStTux].
 .PP
 The operator '+' causes the selected attributes to be added to the
 existing attributes of the files; '-' causes them to be removed; and '='
 causes them to be the only attributes that the files have.
 .PP
-The letters 'aAcCdDeFijPsStTux' select the new attributes for the files:
+The letters 'aAcCdDeFijmPsStTux' select the new attributes for the files:
 append only (a),
 no atime updates (A),
 compressed (c),
@@ -40,6 +40,7 @@
 case-insensitive directory lookups (F),
 immutable (i),
 data journalling (j),
+don't compress (m),
 project hierarchy (P),
 secure deletion (s),
 synchronous updates (S),
@@ -96,7 +97,8 @@
 by the kernel.  A read from this file returns uncompressed data.  A write to
 this file compresses data before storing them on the disk.  Note: please
 make sure to read the bugs and limitations section at the end of this
-document.
+document.  (Note: For btrfs, If the 'c' flag is set, then the 'C' flag
+cannot be set. Also conflicts with btrfs mount option 'nodatasum')
 .TP
 .B C
 A file with the 'C' attribute set will not be subject to copy-on-write
@@ -106,7 +108,8 @@
 data blocks, it is undefined when the blocks assigned to the file will
 be fully stable.  If the 'C' flag is set on a directory, it will have no
 effect on the directory, but new files created in that directory will
-have the No_COW attribute set.)
+have the No_COW attribute set. If the 'C' flag is set, then the 'c' flag
+cannot be set.)
 .TP
 .B d
 A file with the 'd' attribute set is not a candidate for backup when the
@@ -159,6 +162,10 @@
 attribute has no effect.  Only the superuser or a process possessing the
 CAP_SYS_RESOURCE capability can set or clear this attribute.
 .TP
+.B m
+A file with the 'm' attribute is excluded from compression on file
+systems that support per-file compression.
+.TP
 .B N
 A file with the 'N' attribute set indicates that the file has data
 stored inline, within the inode itself. It may not be set or cleared
diff --git a/misc/chattr.c b/misc/chattr.c
index c0337f8..644ef4e 100644
--- a/misc/chattr.c
+++ b/misc/chattr.c
@@ -102,6 +102,7 @@
 	{ EXT2_DIRSYNC_FL, 'D' },
 	{ EXT2_APPEND_FL, 'a' },
 	{ EXT2_COMPR_FL, 'c' },
+	{ EXT2_NOCOMPR_FL, 'm' },
 	{ EXT2_NODUMP_FL, 'd' },
 	{ EXT4_EXTENTS_FL, 'e'},
 	{ EXT2_IMMUTABLE_FL, 'i' },
@@ -203,7 +204,6 @@
 		break;
 	default:
 		return EOF;
-		break;
 	}
 	return 1;
 }
diff --git a/misc/create_inode.c b/misc/create_inode.c
index 194b06a..54d8d34 100644
--- a/misc/create_inode.c
+++ b/misc/create_inode.c
@@ -170,7 +170,7 @@
 	if (retval) {
 		com_err(__func__, retval,
 			_("while reading xattrs for inode %u"), ino);
-		return retval;
+		goto out;
 	}
 
 	retval = ext2fs_get_mem(size, &list);
@@ -626,9 +626,10 @@
 {
 	int		fd;
 	struct stat	statbuf;
-	ext2_ino_t	newfile;
+	ext2_ino_t	newfile, parent_ino;
 	errcode_t	retval;
 	struct ext2_inode inode;
+	char		*cp;
 
 	fd = ext2fs_open_file(src, O_RDONLY, 0);
 	if (fd < 0) {
@@ -642,25 +643,37 @@
 		goto out;
 	}
 
-	retval = ext2fs_namei(fs, root, cwd, dest, &newfile);
+	cp = strrchr(dest, '/');
+	if (cp) {
+		*cp = 0;
+		retval = ext2fs_namei(fs, root, cwd, dest, &parent_ino);
+		if (retval) {
+			com_err(dest, retval, _("while looking up \"%s\""),
+				dest);
+			goto out;
+		}
+		dest = cp+1;
+	} else
+		parent_ino = cwd;
+
+	retval = ext2fs_namei(fs, root, parent_ino, dest, &newfile);
 	if (retval == 0) {
 		retval = EXT2_ET_FILE_EXISTS;
 		goto out;
 	}
 
-	retval = ext2fs_new_inode(fs, cwd, 010755, 0, &newfile);
+	retval = ext2fs_new_inode(fs, parent_ino, 010755, 0, &newfile);
 	if (retval)
 		goto out;
 #ifdef DEBUGFS
 	printf("Allocated inode: %u\n", newfile);
 #endif
-	retval = ext2fs_link(fs, cwd, dest, newfile,
-				EXT2_FT_REG_FILE);
+	retval = ext2fs_link(fs, parent_ino, dest, newfile, EXT2_FT_REG_FILE);
 	if (retval == EXT2_ET_DIR_NO_SPACE) {
-		retval = ext2fs_expand_dir(fs, cwd);
+		retval = ext2fs_expand_dir(fs, parent_ino);
 		if (retval)
 			goto out;
-		retval = ext2fs_link(fs, cwd, dest, newfile,
+		retval = ext2fs_link(fs, parent_ino, dest, newfile,
 					EXT2_FT_REG_FILE);
 	}
 	if (retval)
diff --git a/misc/dumpe2fs.c b/misc/dumpe2fs.c
index 4ea1ac8..3f4fc4e 100644
--- a/misc/dumpe2fs.c
+++ b/misc/dumpe2fs.c
@@ -196,9 +196,9 @@
 					  &old_desc_blk, &new_desc_blk, 0);
 
 		if (grp_only) {
-			printf("%lu:%llu:", i, first_block);
+			printf("%lu:%llu:", i, (unsigned long long) first_block);
 			if (i == 0 || super_blk)
-				printf("%llu:", super_blk);
+				printf("%llu:", (unsigned long long) super_blk);
 			else
 				printf("-1:");
 			if (old_desc_blk) {
@@ -206,13 +206,13 @@
 					    old_desc_blk + old_desc_blocks - 1);
 				printf(":");
 			} else if (new_desc_blk)
-				printf("%llu:", new_desc_blk);
+				printf("%llu:", (unsigned long long) new_desc_blk);
 			else
 				printf("-1:");
 			printf("%llu:%llu:%llu\n",
-			       ext2fs_block_bitmap_loc(fs, i),
-			       ext2fs_inode_bitmap_loc(fs, i),
-			       ext2fs_inode_table_loc(fs, i));
+			       (unsigned long long) ext2fs_block_bitmap_loc(fs, i),
+			       (unsigned long long) ext2fs_inode_bitmap_loc(fs, i),
+			       (unsigned long long) ext2fs_inode_table_loc(fs, i));
 			continue;
 		}
 
@@ -485,7 +485,8 @@
 	if (retval) {
 		com_err(program_name, retval,
 			_("reading MMP block %llu from '%s'\n"),
-			fs->super->s_mmp_block, fs->device_name);
+			(unsigned long long) fs->super->s_mmp_block,
+			fs->device_name);
 		return;
 	}
 
@@ -496,7 +497,8 @@
 	printf("    mmp_check_interval: %d\n", mmp->mmp_check_interval);
 	printf("    mmp_sequence: %#08x\n", mmp->mmp_seq);
 	printf("    mmp_update_date: %s", ctime(&mmp_time));
-	printf("    mmp_update_time: %lld\n", mmp->mmp_time);
+	printf("    mmp_update_time: %llu\n",
+	       (unsigned long long) mmp->mmp_time);
 	printf("    mmp_node_name: %.*s\n",
 	       EXT2_LEN_STR(mmp->mmp_nodename));
 	printf("    mmp_device_name: %.*s\n",
diff --git a/misc/e2freefrag.c b/misc/e2freefrag.c
index a9d16fc..49b6346 100644
--- a/misc/e2freefrag.c
+++ b/misc/e2freefrag.c
@@ -265,8 +265,8 @@
 	int i, retval = 0;
 
 	fprintf(f, "Total blocks: %llu\nFree blocks: %llu (%0.1f%%)\n",
-		ext2fs_blocks_count(fs->super),
-		free_blks,
+		(unsigned long long) ext2fs_blocks_count(fs->super),
+		(unsigned long long) free_blks,
 		(double)free_blks * 100 /
 		ext2fs_blocks_count(fs->super));
 
diff --git a/misc/e2image.c b/misc/e2image.c
index e5e4756..347759b 100644
--- a/misc/e2image.c
+++ b/misc/e2image.c
@@ -192,7 +192,8 @@
 
 		if (block)
 			com_err(program_name, err,
-				_("error writing block %llu"), block);
+				_("error writing block %llu"),
+				(unsigned long long) block);
 		else
 			com_err(program_name, err, "%s",
 				_("error in generic_write()"));
@@ -565,8 +566,10 @@
 
 static int print_progress(blk64_t num, blk64_t total)
 {
-	return fprintf(stderr, _("%llu / %llu blocks (%d%%)"), num, total,
-		      calc_percent(num, total));
+	return fprintf(stderr, _("%llu / %llu blocks (%d%%)"),
+		       (unsigned long long) num,
+		       (unsigned long long) total,
+		       calc_percent(num, total));
 }
 
 static void output_meta_data_blocks(ext2_filsys fs, int fd, int flags)
@@ -671,7 +674,8 @@
 			retval = io_channel_read_blk64(fs->io, blk, 1, buf);
 			if (retval) {
 				com_err(program_name, retval,
-					_("error reading block %llu"), blk);
+					_("error reading block %llu"),
+					(unsigned long long) blk);
 			}
 			total_written++;
 			if (scramble_block_map &&
@@ -726,7 +730,8 @@
 		fputc('\r', stderr);
 		strftime(buff, 30, "%T", gmtime(&duration));
 		fprintf(stderr, _("Copied %llu / %llu blocks (%d%%) in %s "),
-			total_written, meta_blocks_count,
+			(unsigned long long) total_written,
+			(unsigned long long) meta_blocks_count,
 			calc_percent(total_written, meta_blocks_count), buff);
 		if (duration)
 			fprintf(stderr, _("at %.2f MB/s"),
@@ -892,8 +897,9 @@
 	int cluster_bits = get_bits_from_size(fs->blocksize);
 	struct ext2_super_block *sb = fs->super;
 
-	if (fs->blocksize < 1024)
-		return EINVAL;	/* Can never happen, but just in case... */
+	/* Sbould never happen, but just in case... */
+	if (cluster_bits < 0)
+		return EXT2_FILSYS_CORRUPTED;
 
 	/* Allocate header */
 	ret = ext2fs_get_memzero(sizeof(struct ext2_qcow2_hdr), &header);
@@ -1201,7 +1207,8 @@
 			retval = io_channel_read_blk64(fs->io, blk, 1, buf);
 			if (retval) {
 				com_err(program_name, retval,
-					_("error reading block %llu"), blk);
+					_("error reading block %llu"),
+					(unsigned long long) blk);
 				continue;
 			}
 			if (scramble_block_map &&
@@ -1621,7 +1628,7 @@
 			goto skip_device;
 		}
 	}
-	sprintf(offset_opt, "offset=%llu", source_offset);
+	sprintf(offset_opt, "offset=%llu", (unsigned long long) source_offset);
 	retval = ext2fs_open2(device_name, offset_opt, open_flag,
 			      superblock, blocksize, unix_io_manager, &fs);
         if (retval) {
diff --git a/misc/e2undo.c b/misc/e2undo.c
index 71991e0..bc78fb2 100644
--- a/misc/e2undo.c
+++ b/misc/e2undo.c
@@ -127,9 +127,12 @@
 
 static void dump_header(struct undo_header *hdr)
 {
-	printf("nr keys:\t%llu\n", ext2fs_le64_to_cpu(hdr->num_keys));
-	printf("super block:\t%llu\n", ext2fs_le64_to_cpu(hdr->super_offset));
-	printf("key block:\t%llu\n", ext2fs_le64_to_cpu(hdr->key_offset));
+	printf("nr keys:\t%llu\n",
+	       (unsigned long long) ext2fs_le64_to_cpu(hdr->num_keys));
+	printf("super block:\t%llu\n",
+	       (unsigned long long) ext2fs_le64_to_cpu(hdr->super_offset));
+	printf("key block:\t%llu\n",
+	       (unsigned long long) ext2fs_le64_to_cpu(hdr->key_offset));
 	printf("block size:\t%u\n", ext2fs_le32_to_cpu(hdr->block_size));
 	printf("fs block size:\t%u\n", ext2fs_le32_to_cpu(hdr->fs_block_size));
 	printf("super crc:\t0x%x\n", ext2fs_le32_to_cpu(hdr->sb_crc));
@@ -138,7 +141,8 @@
 	printf("incompat:\t0x%x\n", ext2fs_le32_to_cpu(hdr->f_incompat));
 	printf("rocompat:\t0x%x\n", ext2fs_le32_to_cpu(hdr->f_rocompat));
 	if (e2undo_has_feature_fs_offset(hdr))
-		printf("fs offset:\t%llu\n", ext2fs_le64_to_cpu(hdr->fs_offset));
+		printf("fs offset:\t%llu\n",
+		       (unsigned long long) ext2fs_le64_to_cpu(hdr->fs_offset));
 	printf("header crc:\t0x%x\n", ext2fs_le32_to_cpu(hdr->header_crc));
 }
 
@@ -460,7 +464,7 @@
 		if (!*opt_offset_string)
 			offset = ext2fs_le64_to_cpu(undo_ctx.hdr.fs_offset);
 		retval = snprintf(opt_offset_string, sizeof(opt_offset_string),
-						  "offset=%llu", offset);
+				  "offset=%llu", (unsigned long long) offset);
 		if ((size_t) retval >= sizeof(opt_offset_string)) {
 			/* should not happen... */
 			com_err(prg_name, 0, _("specified offset is too large"));
@@ -517,7 +521,7 @@
 		if (!force &&
 		    ext2fs_le32_to_cpu(keyb->magic) != KEYBLOCK_MAGIC) {
 			fprintf(stderr, _("%s: wrong key magic at %llu\n"),
-				tdb_file, lblk);
+				tdb_file, (unsigned long long) lblk);
 			exit(1);
 		}
 		crc = keyb->crc;
@@ -527,7 +531,7 @@
 		if (!force && ext2fs_le32_to_cpu(crc) != key_crc) {
 			fprintf(stderr,
 				_("%s: key block checksum error at %llu.\n"),
-				tdb_file, lblk);
+				tdb_file, (unsigned long long) lblk);
 			exit(1);
 		}
 
@@ -550,7 +554,8 @@
 			    ikey->size) {
 				com_err(prg_name, retval,
 					_("%s: block %llu is too long."),
-					tdb_file, ikey->fsblk);
+					tdb_file,
+					(unsigned long long) ikey->fsblk);
 				exit(1);
 			}
 
@@ -562,7 +567,7 @@
 			if (retval) {
 				com_err(prg_name, retval,
 					_("while fetching block %llu."),
-					ikey->fileblk);
+					(unsigned long long) ikey->fileblk);
 				if (!force)
 					exit(1);
 				io_error = 1;
@@ -575,7 +580,8 @@
 				fprintf(stderr,
 					_("checksum error in filesystem block "
 					  "%llu (undo blk %llu)\n"),
-					ikey->fsblk, ikey->fileblk);
+					(unsigned long long) ikey->fsblk,
+					(unsigned long long) ikey->fileblk);
 				if (!force)
 					exit(1);
 				csum_error = 1;
@@ -598,21 +604,23 @@
 		if (retval) {
 			com_err(prg_name, retval,
 				_("while fetching block %llu."),
-				ikey->fileblk);
+				(unsigned long long) ikey->fileblk);
 			io_error = 1;
 			continue;
 		}
 
 		if (verbose)
 			printf("Replayed block of size %u from %llu to %llu\n",
-				ikey->size, ikey->fileblk, ikey->fsblk);
+			       ikey->size, (unsigned long long) ikey->fileblk,
+			       (unsigned long long) ikey->fsblk);
 		if (dry_run)
 			continue;
 		retval = io_channel_write_blk64(channel, ikey->fsblk,
 						-(int)ikey->size, buf);
 		if (retval) {
 			com_err(prg_name, retval,
-				_("while writing block %llu."), ikey->fsblk);
+				_("while writing block %llu."),
+				(unsigned long long) ikey->fsblk);
 			io_error = 1;
 		}
 	}
diff --git a/misc/e4defrag.c b/misc/e4defrag.c
index c6c6f13..86e97ee 100644
--- a/misc/e4defrag.c
+++ b/misc/e4defrag.c
@@ -362,7 +362,7 @@
 {
 	long	pagesize;
 	void	*page = NULL;
-	loff_t	offset, end_offset, length;
+	ext2_loff_t offset, end_offset, length;
 
 	if (vec == NULL || *vec != NULL)
 		return -1;
@@ -371,8 +371,8 @@
 	if (pagesize < 0)
 		return -1;
 	/* In mmap, offset should be a multiple of the page size */
-	offset = (loff_t)defrag_data.orig_start * block_size;
-	length = (loff_t)defrag_data.len * block_size;
+	offset = (ext2_loff_t)defrag_data.orig_start * block_size;
+	length = (ext2_loff_t)defrag_data.len * block_size;
 	end_offset = offset + length;
 	/* Round the offset down to the nearest multiple of pagesize */
 	offset = (offset / pagesize) * pagesize;
@@ -418,18 +418,18 @@
 			    SYNC_FILE_RANGE_WRITE |
 			    SYNC_FILE_RANGE_WAIT_AFTER;
 	unsigned int	i;
-	loff_t	offset;
+	ext2_loff_t	offset;
 
 	if (pagesize < 1)
 		return -1;
 
-	offset = (loff_t)defrag_data.orig_start * block_size;
+	offset = (ext2_loff_t)defrag_data.orig_start * block_size;
 	offset = (offset / pagesize) * pagesize;
 
 #ifdef HAVE_SYNC_FILE_RANGE
 	/* Sync file for fadvise process */
 	if (sync_file_range(fd, offset,
-		(loff_t)pagesize * page_num, sync_flag) < 0)
+		(ext2_loff_t)pagesize * page_num, sync_flag) < 0)
 		return -1;
 #endif
 
@@ -1179,10 +1179,13 @@
 			do {
 				count++;
 				printf("[ext %d]:\tstart %llu:\tlogical "
-						"%llu:\tlen %llu\n", count,
-						ext_list_tmp->data.physical,
-						ext_list_tmp->data.logical,
-						ext_list_tmp->data.len);
+				       "%llu:\tlen %llu\n", count,
+				       (unsigned long long)
+				       ext_list_tmp->data.physical,
+				       (unsigned long long)
+				       ext_list_tmp->data.logical,
+				       (unsigned long long)
+				       ext_list_tmp->data.len);
 				ext_list_tmp = ext_list_tmp->next;
 			} while (ext_list_tmp != logical_list_head);
 
@@ -1192,12 +1195,14 @@
 			if (current_uid == ROOT_UID) {
 				if (strlen(file) > 40)
 					printf("%s\n%50d/%-10d%6llu KB\n",
-						file, now_ext_count,
-						best_ext_count, size_per_ext);
+					       file, now_ext_count,
+					       best_ext_count,
+					       (unsigned long long) size_per_ext);
 				else
 					printf("%-40s%10d/%-10d%6llu KB\n",
-						file, now_ext_count,
-						best_ext_count, size_per_ext);
+					       file, now_ext_count,
+					       best_ext_count,
+					       (unsigned long long) size_per_ext);
 			} else {
 				if (strlen(file) > 40)
 					printf("%s\n%50d/%-10s%7s\n",
@@ -1220,14 +1225,16 @@
 		if (current_uid == ROOT_UID) {
 			if (strlen(msg_buffer) > 40)
 				printf("\033[79;0H\033[K%s\n"
-						"%50d/%-10d%6llu KB\n",
-						msg_buffer, now_ext_count,
-						best_ext_count, size_per_ext);
+				       "%50d/%-10d%6llu KB\n",
+				       msg_buffer, now_ext_count,
+				       best_ext_count,
+				       (unsigned long long) size_per_ext);
 			else
 				printf("\033[79;0H\033[K%-40s"
-						"%10d/%-10d%6llu KB\n",
-						msg_buffer, now_ext_count,
-						best_ext_count, size_per_ext);
+				       "%10d/%-10d%6llu KB\n",
+				       msg_buffer, now_ext_count,
+				       best_ext_count,
+				       (unsigned long long) size_per_ext);
 		} else {
 			if (strlen(msg_buffer) > 40)
 				printf("\033[79;0H\033[K%s\n%50d/%-10s%7s\n",
@@ -1286,7 +1293,8 @@
  * @start:		logical offset for defrag target file
  * @file_size:		defrag target filesize
  */
-static void print_progress(const char *file, loff_t start, loff_t file_size)
+static void print_progress(const char *file, ext2_loff_t start,
+			   ext2_loff_t file_size)
 {
 	int percent = (start * 100) / file_size;
 	printf("\033[79;0H\033[K[%u/%u]%s:\t%3d%%",
@@ -1308,7 +1316,7 @@
 static int call_defrag(int fd, int donor_fd, const char *file,
 	const struct stat64 *buf, struct fiemap_extent_list *ext_list_head)
 {
-	loff_t	start = 0;
+	ext2_loff_t	start = 0;
 	unsigned int	page_num;
 	unsigned char	*vec = NULL;
 	int	defraged_ret = 0;
@@ -1561,8 +1569,8 @@
 	orig_group_tmp = orig_group_head;
 	do {
 		ret = fallocate64(donor_fd, 0,
-		  (loff_t)orig_group_tmp->start->data.logical * block_size,
-		  (loff_t)orig_group_tmp->len * block_size);
+		  (ext2_loff_t)orig_group_tmp->start->data.logical * block_size,
+		  (ext2_loff_t)orig_group_tmp->len * block_size);
 		if (ret < 0) {
 			if (mode_flag & DETAIL) {
 				PRINT_FILE_NAME(file);
@@ -1897,6 +1905,7 @@
 							frag_rank[j].msg_buffer,
 							frag_rank[j].now_count,
 							frag_rank[j].best_count,
+							(unsigned long long)
 							frag_rank[j].
 								size_per_ext);
 						} else if (strlen(frag_rank[j].
@@ -1907,6 +1916,7 @@
 							frag_rank[j].msg_buffer,
 							frag_rank[j].now_count,
 							frag_rank[j].best_count,
+							(unsigned long long)
 							frag_rank[j].
 								size_per_ext);
 						} else
@@ -1999,12 +2009,12 @@
 						100 / files_block_count;
 				score = CALC_SCORE(files_ratio);
 				printf("\n Total/best extents\t\t\t\t%d/%d\n"
-					" Average size per extent"
-					"\t\t\t%llu KB\n"
-					" Fragmentation score\t\t\t\t%.0f\n",
-						extents_before_defrag,
-						extents_after_defrag,
-						size_per_ext, score);
+				       " Average size per extent"
+				       "\t\t\t%llu KB\n"
+				       " Fragmentation score\t\t\t\t%.0f\n",
+				       extents_before_defrag,
+				       extents_after_defrag,
+				       (unsigned long long) size_per_ext, score);
 				printf(" [0-30 no problem:"
 					" 31-55 a little bit fragmented:"
 					" 56- needs defrag]\n");
diff --git a/misc/filefrag.c b/misc/filefrag.c
index 62d583b..1e43131 100644
--- a/misc/filefrag.c
+++ b/misc/filefrag.c
@@ -374,9 +374,9 @@
 			if (verbose && expected != 0) {
 				printf("Discontinuity: Block %llu is at %llu "
 				       "(was %llu)\n",
-					fm_ext.fe_logical / st->st_blksize,
-					fm_ext.fe_physical / st->st_blksize,
-					expected / st->st_blksize);
+				       (unsigned long long) (fm_ext.fe_logical / st->st_blksize),
+				       (unsigned long long) (fm_ext.fe_physical / st->st_blksize),
+				       (unsigned long long) (expected / st->st_blksize));
 			}
 			/* create the new extent */
 			fm_last = fm_ext;
@@ -492,8 +492,8 @@
 		__u32 state;
 
 		printf("File size of %s is %llu (%llu block%s of %d bytes)",
-		       filename, (unsigned long long)st.st_size,
-		       numblocks * blksize >> blk_shift,
+		       filename, (unsigned long long) st.st_size,
+		       (unsigned long long) (numblocks * blksize >> blk_shift),
 		       numblocks == 1 ? "" : "s", 1 << blk_shift);
 		if (use_extent_cache &&
 		    ioctl(fd, EXT4_IOC_GETSTATE, &state) == 0 &&
diff --git a/misc/findsuper.c b/misc/findsuper.c
index 765295c..7e78c1f 100644
--- a/misc/findsuper.c
+++ b/misc/findsuper.c
@@ -115,11 +115,11 @@
 int main(int argc, char *argv[])
 {
 	int skiprate=512;		/* one sector */
-	loff_t sk=0, skl=0;
+	ext2_loff_t sk=0, skl=0;
 	int fd;
 	char *s;
 	time_t tm, last = time(0);
-	loff_t interval = 1024 * 1024;
+	ext2_loff_t interval = 1024 * 1024;
 	int c, print_jnl_copies = 0;
 	const char * device_name;
 	struct ext2_super_block ext2;
diff --git a/misc/mk_hugefiles.c b/misc/mk_hugefiles.c
index 24acca8..0280b41 100644
--- a/misc/mk_hugefiles.c
+++ b/misc/mk_hugefiles.c
@@ -337,7 +337,8 @@
 			if (retval)
 				com_err(program_name, retval,
 					_("while zeroing block %llu "
-					  "for hugefile"), ret_blk);
+					  "for hugefile"),
+					(unsigned long long) ret_blk);
 		}
 
 		while (n) {
@@ -514,7 +515,7 @@
 			fprintf(stderr,
 				_("Partition offset of %llu (%uk) blocks "
 				  "not compatible with cluster size %u.\n"),
-				part_offset, fs->blocksize,
+				(unsigned long long) part_offset, fs->blocksize,
 				EXT2_CLUSTER_SIZE(fs->super));
 			exit(1);
 		}
@@ -583,7 +584,8 @@
 			printf("%s", _("Huge files will be zero'ed\n"));
 		printf(_("Creating %lu huge file(s) "), num_files);
 		if (num_blocks)
-			printf(_("with %llu blocks each"), num_blocks);
+			printf(_("with %llu blocks each"),
+			       (unsigned long long) num_blocks);
 		fputs(": ", stdout);
 	}
 	for (i=0; i < num_files; i++) {
diff --git a/misc/mke2fs.c b/misc/mke2fs.c
index add441c..afbcf48 100644
--- a/misc/mke2fs.c
+++ b/misc/mke2fs.c
@@ -257,7 +257,8 @@
 
 	sprintf(buf, "badblocks -b %d -X %s%s%s %llu", fs->blocksize,
 		quiet ? "" : "-s ", (cflag > 1) ? "-w " : "",
-		fs->device_name, ext2fs_blocks_count(fs->super)-1);
+		fs->device_name,
+		(unsigned long long) ext2fs_blocks_count(fs->super)-1);
 	if (verbose)
 		printf(_("Running command: %s\n"), buf);
 	f = popen(buf, "r");
@@ -442,7 +443,8 @@
 			if (retval) {
 				fprintf(stderr, _("\nCould not write %d "
 					  "blocks in inode table starting at %llu: %s\n"),
-					num, blk, error_message(retval));
+					num, (unsigned long long) blk,
+					error_message(retval));
 				exit(1);
 			}
 		}
@@ -639,7 +641,7 @@
 			com_err("create_journal_dev", retval,
 				_("while zeroing journal device "
 				  "(block %llu, count %d)"),
-				err_blk, err_count);
+				(unsigned long long) err_blk, err_count);
 			exit(1);
 		}
 		blk += c;
@@ -671,14 +673,15 @@
 	if (!verbose) {
 		printf(_("Creating filesystem with %llu %dk blocks and "
 			 "%u inodes\n"),
-		       ext2fs_blocks_count(s), fs->blocksize >> 10,
-		       s->s_inodes_count);
+		       (unsigned long long) ext2fs_blocks_count(s),
+		       fs->blocksize >> 10, s->s_inodes_count);
 		goto skip_details;
 	}
 
 	if (ext2fs_blocks_count(&fs_param) != ext2fs_blocks_count(s))
 		fprintf(stderr, _("warning: %llu blocks unused.\n\n"),
-		       ext2fs_blocks_count(&fs_param) - ext2fs_blocks_count(s));
+			(unsigned long long) (ext2fs_blocks_count(&fs_param) -
+					      ext2fs_blocks_count(s)));
 
 	printf(_("Filesystem label=%.*s\n"), EXT2_LEN_STR(s->s_volume_name));
 
@@ -698,9 +701,9 @@
 	printf(_("Stride=%u blocks, Stripe width=%u blocks\n"),
 	       s->s_raid_stride, s->s_raid_stripe_width);
 	printf(_("%u inodes, %llu blocks\n"), s->s_inodes_count,
-	       ext2fs_blocks_count(s));
+	       (unsigned long long) ext2fs_blocks_count(s));
 	printf(_("%llu blocks (%2.2f%%) reserved for the super user\n"),
-		ext2fs_r_blocks_count(s),
+	       (unsigned long long) ext2fs_r_blocks_count(s),
 	       100.0 *  ext2fs_r_blocks_count(s) / ext2fs_blocks_count(s));
 	printf(_("First data block=%u\n"), s->s_first_data_block);
 	if (root_uid != 0 || root_gid != 0)
@@ -744,7 +747,7 @@
 			col_left = 72;
 		}
 		col_left -= need;
-		printf("%llu", group_block);
+		printf("%llu", (unsigned long long) group_block);
 	}
 	printf("\n\n");
 }
@@ -2192,8 +2195,8 @@
 		fprintf(stderr, _("%s: Size of device (0x%llx blocks) %s "
 				  "too big to be expressed\n\t"
 				  "in 32 bits using a blocksize of %d.\n"),
-			program_name, fs_blocks_count, device_name,
-			EXT2_BLOCK_SIZE(&fs_param));
+			program_name, (unsigned long long) fs_blocks_count,
+			device_name, EXT2_BLOCK_SIZE(&fs_param));
 		exit(1);
 	}
 	/*
@@ -2206,8 +2209,8 @@
 		fprintf(stderr, _("%s: Size of device (0x%llx blocks) %s "
 				  "too big to create\n\t"
 				  "a filesystem using a blocksize of %d.\n"),
-			program_name, fs_blocks_count, device_name,
-			EXT2_BLOCK_SIZE(&fs_param));
+			program_name, (unsigned long long) fs_blocks_count,
+			device_name, EXT2_BLOCK_SIZE(&fs_param));
 		exit(1);
 	}
 
@@ -2602,14 +2605,15 @@
 			else {
 				com_err(program_name, 0,
 					_("too many inodes (%llu), raise "
-					  "inode ratio?"), n);
+					  "inode ratio?"),
+					(unsigned long long) n);
 				exit(1);
 			}
 		}
 	} else if (num_inodes > MAX_32_NUM) {
 		com_err(program_name, 0,
 			_("too many inodes (%llu), specify < 2^32 inodes"),
-			  num_inodes);
+			(unsigned long long) num_inodes);
 		exit(1);
 	}
 	/*
@@ -3054,7 +3058,7 @@
 		32768 : fs->blocksize * 8);
 	io_channel_set_options(fs->io, opt_string);
 	if (offset) {
-		sprintf(opt_string, "offset=%llu", offset);
+		sprintf(opt_string, "offset=%llu", (unsigned long long) offset);
 		io_channel_set_options(fs->io, opt_string);
 	}
 
@@ -3330,7 +3334,7 @@
 		if (retval) {
 			com_err(program_name, retval,
 				_("while zeroing block %llu at end of filesystem"),
-				ret_blk);
+				(unsigned long long) ret_blk);
 		}
 		write_inode_tables(fs, lazy_itable_init, itable_zeroed);
 		create_root_dir(fs);
diff --git a/misc/tune2fs.8.in b/misc/tune2fs.8.in
index 1a181a7..b963f30 100644
--- a/misc/tune2fs.8.in
+++ b/misc/tune2fs.8.in
@@ -117,6 +117,9 @@
 .BR e2fsck (8).
 If
 .I max-mount-counts
+is the string "random", tune2fs will use a random value between 20 and 40.
+If
+.I max-mount-counts
 is 0 or \-1, the number of times the filesystem is mounted will be disregarded
 by
 .BR e2fsck (8)
@@ -127,21 +130,13 @@
 when using journaled filesystems.
 .sp
 Mount-count-dependent checking is disabled by default to avoid
-unanticipated long reboots while e2fsck does its work.  However,
-you may wish to consider the consequences of disabling
-mount-count-dependent checking entirely.  Bad disk drives, cables,
-memory, and kernel bugs could all corrupt a filesystem without
-marking the filesystem dirty or in error.  If you are using
-journaling on your filesystem, your filesystem will
-.B never
-be marked dirty, so it will not normally be checked.  A
-filesystem error detected by the kernel will still force
-an fsck on the next reboot, but it may already be too late
-to prevent data loss at that point.
-.sp
-See also the
-.B \-i
-option for time-dependent checking.
+unanticipated long reboots while e2fsck does its work.  If you
+are concerned about file system corruptions caused by potential hardware
+problems of kernel bugs, a better solution than mount-count-dependent
+checking is to use the
+.BR e2scrub (8)
+program.  This does require placing the file system on an LVM volume,
+however.
 .TP
 .BI \-C " mount-count"
 Set the number of times the filesystem has been mounted.
diff --git a/misc/tune2fs.c b/misc/tune2fs.c
index 40f5173..f739f16 100644
--- a/misc/tune2fs.c
+++ b/misc/tune2fs.c
@@ -1826,8 +1826,15 @@
 	while ((c = getopt(argc, argv, optstring)) != EOF)
 		switch (c) {
 		case 'c':
+			open_flag = EXT2_FLAG_RW;
+			c_flag = 1;
+			if (strcmp(optarg, "random") == 0) {
+				max_mount_count = 65536;
+				break;
+			}
 			max_mount_count = strtol(optarg, &tmp, 0);
-			if (*tmp || max_mount_count > 16000) {
+			if (*tmp || max_mount_count > 16000 ||
+			    max_mount_count < -16000) {
 				com_err(program_name, 0,
 					_("bad mounts count - %s"),
 					optarg);
@@ -1835,8 +1842,6 @@
 			}
 			if (max_mount_count == 0)
 				max_mount_count = -1;
-			c_flag = 1;
-			open_flag = EXT2_FLAG_RW;
 			break;
 		case 'C':
 			mount_count = strtoul(optarg, &tmp, 0);
@@ -3104,6 +3109,9 @@
 	fs->flags |= EXT2_FLAG_SUPER_ONLY;
 
 	if (c_flag) {
+		if (max_mount_count == 65536)
+			max_mount_count = EXT2_DFL_MAX_MNT_COUNT +
+				(random() % EXT2_DFL_MAX_MNT_COUNT);
 		sb->s_max_mnt_count = max_mount_count;
 		ext2fs_mark_super_dirty(fs);
 		printf(_("Setting maximal mount count to %d\n"),
@@ -3142,20 +3150,21 @@
 					  ext2fs_blocks_count(sb) / 100.0);
 		ext2fs_mark_super_dirty(fs);
 		printf (_("Setting reserved blocks percentage to %g%% (%llu blocks)\n"),
-			reserved_ratio, ext2fs_r_blocks_count(sb));
+			reserved_ratio,
+			(unsigned long long) ext2fs_r_blocks_count(sb));
 	}
 	if (r_flag) {
 		if (reserved_blocks > ext2fs_blocks_count(sb)/2) {
 			com_err(program_name, 0,
 				_("reserved blocks count is too big (%llu)"),
-				reserved_blocks);
+				(unsigned long long) reserved_blocks);
 			rc = 1;
 			goto closefs;
 		}
 		ext2fs_r_blocks_count_set(sb, reserved_blocks);
 		ext2fs_mark_super_dirty(fs);
 		printf(_("Setting reserved blocks count to %llu\n"),
-		       reserved_blocks);
+		       (unsigned long long) reserved_blocks);
 	}
 	if (s_flag == 1) {
 		if (ext2fs_has_feature_sparse_super(sb)) {
diff --git a/po/e2fsprogs.pot b/po/e2fsprogs.pot
index b29cc4b..1ecd767 100644
--- a/po/e2fsprogs.pot
+++ b/po/e2fsprogs.pot
@@ -77,9 +77,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: e2fsprogs v1.46.1\n"
+"Project-Id-Version: e2fsprogs 1.46.2\n"
 "Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
-"POT-Creation-Date: 2021-02-09 17:42-0500\n"
+"POT-Creation-Date: 2021-02-28 09:37-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -102,30 +102,30 @@
 msgid "while reading the bad blocks inode"
 msgstr ""
 
-#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1581
-#: e2fsck/unix.c:1695 misc/badblocks.c:1251 misc/badblocks.c:1259
-#: misc/badblocks.c:1273 misc/badblocks.c:1285 misc/dumpe2fs.c:437
-#: misc/dumpe2fs.c:700 misc/dumpe2fs.c:704 misc/e2image.c:1430
-#: misc/e2image.c:1628 misc/e2image.c:1649 misc/mke2fs.c:237
-#: misc/tune2fs.c:2875 misc/tune2fs.c:2975 resize/main.c:416
+#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1584
+#: e2fsck/unix.c:1698 misc/badblocks.c:1264 misc/badblocks.c:1272
+#: misc/badblocks.c:1286 misc/badblocks.c:1298 misc/dumpe2fs.c:437
+#: misc/dumpe2fs.c:702 misc/dumpe2fs.c:706 misc/e2image.c:1437
+#: misc/e2image.c:1635 misc/e2image.c:1656 misc/mke2fs.c:237
+#: misc/tune2fs.c:2880 misc/tune2fs.c:2980 resize/main.c:416
 #, c-format
 msgid "while trying to open %s"
 msgstr ""
 
-#: e2fsck/badblocks.c:83
+#: e2fsck/badblocks.c:84
 #, c-format
 msgid "while trying popen '%s'"
 msgstr ""
 
-#: e2fsck/badblocks.c:94 misc/mke2fs.c:244
+#: e2fsck/badblocks.c:95 misc/mke2fs.c:244
 msgid "while reading in list of bad blocks from file"
 msgstr ""
 
-#: e2fsck/badblocks.c:105
+#: e2fsck/badblocks.c:106
 msgid "while updating bad block inode"
 msgstr ""
 
-#: e2fsck/badblocks.c:133
+#: e2fsck/badblocks.c:134
 #, c-format
 msgid "Warning: illegal block %u found in bad block inode.  Cleared.\n"
 msgstr ""
@@ -204,69 +204,36 @@
 msgid "BLKFLSBUF ioctl not supported!  Can't flush buffers.\n"
 msgstr ""
 
-#: e2fsck/iscan.c:44
-#, c-format
-msgid "Usage: %s [-F] [-I inode_buffer_blocks] device\n"
-msgstr ""
-
-#: e2fsck/iscan.c:81 e2fsck/unix.c:1091
-#, c-format
-msgid "while opening %s for flushing"
-msgstr ""
-
-#: e2fsck/iscan.c:86 e2fsck/unix.c:1097 resize/main.c:385
-#, c-format
-msgid "while trying to flush %s"
-msgstr ""
-
-#: e2fsck/iscan.c:110
-#, c-format
-msgid "while trying to open '%s'"
-msgstr ""
-
-#: e2fsck/iscan.c:119 e2fsck/scantest.c:114 misc/e2image.c:1323
-msgid "while opening inode scan"
-msgstr ""
-
-#: e2fsck/iscan.c:127 misc/e2image.c:1342
-msgid "while getting next inode"
-msgstr ""
-
-#: e2fsck/iscan.c:136
-#, c-format
-msgid "%u inodes scanned.\n"
-msgstr ""
-
-#: e2fsck/journal.c:1262
+#: e2fsck/journal.c:1263
 msgid "reading journal superblock\n"
 msgstr ""
 
-#: e2fsck/journal.c:1335
+#: e2fsck/journal.c:1336
 #, c-format
 msgid "%s: no valid journal superblock found\n"
 msgstr ""
 
-#: e2fsck/journal.c:1344
+#: e2fsck/journal.c:1345
 #, c-format
 msgid "%s: journal too short\n"
 msgstr ""
 
-#: e2fsck/journal.c:1357
+#: e2fsck/journal.c:1358
 #, c-format
 msgid "%s: incorrect fast commit blocks\n"
 msgstr ""
 
-#: e2fsck/journal.c:1659 misc/fuse2fs.c:3797
+#: e2fsck/journal.c:1660 misc/fuse2fs.c:3797
 #, c-format
 msgid "%s: recovering journal\n"
 msgstr ""
 
-#: e2fsck/journal.c:1661
+#: e2fsck/journal.c:1662
 #, c-format
 msgid "%s: won't do journal recovery while read-only\n"
 msgstr ""
 
-#: e2fsck/journal.c:1688
+#: e2fsck/journal.c:1689
 #, c-format
 msgid "while trying to re-open %s"
 msgstr ""
@@ -435,72 +402,72 @@
 msgid "<Reserved inode 10>"
 msgstr ""
 
-#: e2fsck/message.c:324
+#: e2fsck/message.c:325
 msgid "regular file"
 msgstr ""
 
-#: e2fsck/message.c:326
+#: e2fsck/message.c:327
 msgid "directory"
 msgstr ""
 
-#: e2fsck/message.c:328
+#: e2fsck/message.c:329
 msgid "character device"
 msgstr ""
 
-#: e2fsck/message.c:330
+#: e2fsck/message.c:331
 msgid "block device"
 msgstr ""
 
-#: e2fsck/message.c:332
+#: e2fsck/message.c:333
 msgid "named pipe"
 msgstr ""
 
-#: e2fsck/message.c:334
+#: e2fsck/message.c:335
 msgid "symbolic link"
 msgstr ""
 
-#: e2fsck/message.c:336 misc/uuidd.c:162
+#: e2fsck/message.c:337 misc/uuidd.c:162
 msgid "socket"
 msgstr ""
 
-#: e2fsck/message.c:338
+#: e2fsck/message.c:339
 #, c-format
 msgid "unknown file type with mode 0%o"
 msgstr ""
 
-#: e2fsck/message.c:409
+#: e2fsck/message.c:410
 msgid "indirect block"
 msgstr ""
 
-#: e2fsck/message.c:411
+#: e2fsck/message.c:412
 msgid "double indirect block"
 msgstr ""
 
-#: e2fsck/message.c:413
+#: e2fsck/message.c:414
 msgid "triple indirect block"
 msgstr ""
 
-#: e2fsck/message.c:415
+#: e2fsck/message.c:416
 msgid "translator block"
 msgstr ""
 
-#: e2fsck/message.c:417
+#: e2fsck/message.c:418
 msgid "block #"
 msgstr ""
 
-#: e2fsck/message.c:479
+#: e2fsck/message.c:482
 msgid "user"
 msgstr ""
 
-#: e2fsck/message.c:482
+#: e2fsck/message.c:485
 msgid "group"
 msgstr ""
 
-#: e2fsck/message.c:485
+#: e2fsck/message.c:488
 msgid "project"
 msgstr ""
 
-#: e2fsck/message.c:488
+#: e2fsck/message.c:491
 msgid "unknown quota type"
 msgstr ""
 
@@ -513,16 +480,16 @@
 msgid "internal error: can't find dup_blk for %llu\n"
 msgstr ""
 
-#: e2fsck/pass1b.c:956
+#: e2fsck/pass1b.c:957
 msgid "returned from clone_file_block"
 msgstr ""
 
-#: e2fsck/pass1b.c:980
+#: e2fsck/pass1b.c:981
 #, c-format
 msgid "internal error: couldn't lookup EA block record for %llu"
 msgstr ""
 
-#: e2fsck/pass1b.c:992
+#: e2fsck/pass1b.c:994
 #, c-format
 msgid "internal error: couldn't lookup EA inode record for %u"
 msgstr ""
@@ -532,7 +499,7 @@
 msgid "while hashing entry with e_value_inum = %u"
 msgstr ""
 
-#: e2fsck/pass1.c:767 e2fsck/pass2.c:1132
+#: e2fsck/pass1.c:767 e2fsck/pass2.c:1133
 msgid "reading directory block"
 msgstr ""
 
@@ -552,7 +519,7 @@
 msgid "regular file inode map"
 msgstr ""
 
-#: e2fsck/pass1.c:1248 misc/e2image.c:1282
+#: e2fsck/pass1.c:1248 misc/e2image.c:1289
 msgid "in-use block map"
 msgstr ""
 
@@ -597,20 +564,20 @@
 msgid "ext attr block map"
 msgstr ""
 
-#: e2fsck/pass1.c:3719
+#: e2fsck/pass1.c:3726
 #, c-format
 msgid "%6lu(%c): expecting %6lu got phys %6lu (blkcnt %lld)\n"
 msgstr ""
 
-#: e2fsck/pass1.c:4140
+#: e2fsck/pass1.c:4147
 msgid "block bitmap"
 msgstr ""
 
-#: e2fsck/pass1.c:4146
+#: e2fsck/pass1.c:4153
 msgid "inode bitmap"
 msgstr ""
 
-#: e2fsck/pass1.c:4152
+#: e2fsck/pass1.c:4159
 msgid "inode table"
 msgstr ""
 
@@ -618,11 +585,11 @@
 msgid "Pass 2"
 msgstr ""
 
-#: e2fsck/pass2.c:553
+#: e2fsck/pass2.c:554
 msgid "NLS is broken."
 msgstr ""
 
-#: e2fsck/pass2.c:1205 e2fsck/pass2.c:1389
+#: e2fsck/pass2.c:1206 e2fsck/pass2.c:1390
 msgid "Can not continue."
 msgstr ""
 
@@ -2982,6 +2949,10 @@
 msgid "size of inode=%d\n"
 msgstr ""
 
+#: e2fsck/scantest.c:114 misc/e2image.c:1330
+msgid "while opening inode scan"
+msgstr ""
+
 #: e2fsck/scantest.c:119
 msgid "while starting inode scan"
 msgstr ""
@@ -3044,7 +3015,7 @@
 msgid "%s: %u/%u files (%0d.%d%% non-contiguous), %llu/%llu blocks\n"
 msgstr ""
 
-#: e2fsck/unix.c:163
+#: e2fsck/unix.c:164
 #, c-format
 msgid ""
 "\n"
@@ -3055,51 +3026,51 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:167
+#: e2fsck/unix.c:168
 #, c-format
 msgid "%12u non-contiguous file (%0d.%d%%)\n"
 msgid_plural "%12u non-contiguous files (%0d.%d%%)\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:172
+#: e2fsck/unix.c:173
 #, c-format
 msgid "%12u non-contiguous directory (%0d.%d%%)\n"
 msgid_plural "%12u non-contiguous directories (%0d.%d%%)\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:177
+#: e2fsck/unix.c:178
 #, c-format
 msgid "             # of inodes with ind/dind/tind blocks: %u/%u/%u\n"
 msgstr ""
 
-#: e2fsck/unix.c:185
+#: e2fsck/unix.c:186
 msgid "             Extent depth histogram: "
 msgstr ""
 
-#: e2fsck/unix.c:194
+#: e2fsck/unix.c:195
 #, c-format
 msgid "%12llu block used (%2.2f%%, out of %llu)\n"
 msgid_plural "%12llu blocks used (%2.2f%%, out of %llu)\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:198
+#: e2fsck/unix.c:200
 #, c-format
 msgid "%12u bad block\n"
 msgid_plural "%12u bad blocks\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:200
+#: e2fsck/unix.c:202
 #, c-format
 msgid "%12u large file\n"
 msgid_plural "%12u large files\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:202
+#: e2fsck/unix.c:204
 #, c-format
 msgid ""
 "\n"
@@ -3110,102 +3081,102 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:204
+#: e2fsck/unix.c:206
 #, c-format
 msgid "%12u directory\n"
 msgid_plural "%12u directories\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:206
+#: e2fsck/unix.c:208
 #, c-format
 msgid "%12u character device file\n"
 msgid_plural "%12u character device files\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:209
+#: e2fsck/unix.c:211
 #, c-format
 msgid "%12u block device file\n"
 msgid_plural "%12u block device files\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:211
+#: e2fsck/unix.c:213
 #, c-format
 msgid "%12u fifo\n"
 msgid_plural "%12u fifos\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:213
+#: e2fsck/unix.c:215
 #, c-format
 msgid "%12u link\n"
 msgid_plural "%12u links\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:215
+#: e2fsck/unix.c:217
 #, c-format
 msgid "%12u symbolic link"
 msgid_plural "%12u symbolic links"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:217
+#: e2fsck/unix.c:219
 #, c-format
 msgid " (%u fast symbolic link)\n"
 msgid_plural " (%u fast symbolic links)\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:221
+#: e2fsck/unix.c:223
 #, c-format
 msgid "%12u socket\n"
 msgid_plural "%12u sockets\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:225
+#: e2fsck/unix.c:227
 #, c-format
 msgid "%12u file\n"
 msgid_plural "%12u files\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:3067 misc/util.c:129
+#: e2fsck/unix.c:240 misc/badblocks.c:1001 misc/tune2fs.c:3072 misc/util.c:129
 #: resize/main.c:356
 #, c-format
 msgid "while determining whether %s is mounted."
 msgstr ""
 
-#: e2fsck/unix.c:259
+#: e2fsck/unix.c:261
 #, c-format
 msgid "Warning!  %s is mounted.\n"
 msgstr ""
 
-#: e2fsck/unix.c:262
+#: e2fsck/unix.c:264
 #, c-format
 msgid "Warning!  %s is in use.\n"
 msgstr ""
 
-#: e2fsck/unix.c:268
+#: e2fsck/unix.c:270
 #, c-format
 msgid "%s is mounted.\n"
 msgstr ""
 
-#: e2fsck/unix.c:270
+#: e2fsck/unix.c:272
 #, c-format
 msgid "%s is in use.\n"
 msgstr ""
 
-#: e2fsck/unix.c:272
+#: e2fsck/unix.c:274
 msgid ""
 "Cannot continue, aborting.\n"
 "\n"
 msgstr ""
 
-#: e2fsck/unix.c:274
+#: e2fsck/unix.c:276
 msgid ""
 "\n"
 "\n"
@@ -3214,85 +3185,85 @@
 "\n"
 msgstr ""
 
-#: e2fsck/unix.c:279
+#: e2fsck/unix.c:281
 msgid "Do you really want to continue"
 msgstr ""
 
-#: e2fsck/unix.c:281
+#: e2fsck/unix.c:283
 msgid "check aborted.\n"
 msgstr ""
 
-#: e2fsck/unix.c:375
+#: e2fsck/unix.c:377
 msgid " contains a file system with errors"
 msgstr ""
 
-#: e2fsck/unix.c:377
+#: e2fsck/unix.c:379
 msgid " was not cleanly unmounted"
 msgstr ""
 
-#: e2fsck/unix.c:379
+#: e2fsck/unix.c:381
 msgid " primary superblock features different from backup"
 msgstr ""
 
-#: e2fsck/unix.c:383
+#: e2fsck/unix.c:385
 #, c-format
 msgid " has been mounted %u times without being checked"
 msgstr ""
 
-#: e2fsck/unix.c:390
+#: e2fsck/unix.c:392
 msgid " has filesystem last checked time in the future"
 msgstr ""
 
-#: e2fsck/unix.c:396
+#: e2fsck/unix.c:398
 #, c-format
 msgid " has gone %u days without being checked"
 msgstr ""
 
-#: e2fsck/unix.c:404
+#: e2fsck/unix.c:406
 msgid "ignoring check interval, broken_system_clock set\n"
 msgstr ""
 
-#: e2fsck/unix.c:410
+#: e2fsck/unix.c:412
 msgid ", check forced.\n"
 msgstr ""
 
-#: e2fsck/unix.c:443
+#: e2fsck/unix.c:445
 #, c-format
 msgid "%s: clean, %u/%u files, %llu/%llu blocks"
 msgstr ""
 
-#: e2fsck/unix.c:463
+#: e2fsck/unix.c:465
 msgid " (check deferred; on battery)"
 msgstr ""
 
-#: e2fsck/unix.c:466
+#: e2fsck/unix.c:468
 msgid " (check after next mount)"
 msgstr ""
 
-#: e2fsck/unix.c:468
+#: e2fsck/unix.c:470
 #, c-format
 msgid " (check in %ld mounts)"
 msgstr ""
 
-#: e2fsck/unix.c:618
+#: e2fsck/unix.c:620
 #, c-format
 msgid "ERROR: Couldn't open /dev/null (%s)\n"
 msgstr ""
 
-#: e2fsck/unix.c:689
+#: e2fsck/unix.c:691
 msgid "Invalid EA version.\n"
 msgstr ""
 
-#: e2fsck/unix.c:702
+#: e2fsck/unix.c:704
 msgid "Invalid readahead buffer size.\n"
 msgstr ""
 
-#: e2fsck/unix.c:765
+#: e2fsck/unix.c:767
 #, c-format
 msgid "Unknown extended option: %s\n"
 msgstr ""
 
-#: e2fsck/unix.c:773
+#: e2fsck/unix.c:775
 msgid ""
 "\n"
 "Extended options are separated by commas, and may take an argument which\n"
@@ -3300,77 +3271,87 @@
 "\n"
 msgstr ""
 
-#: e2fsck/unix.c:777
+#: e2fsck/unix.c:779
 msgid "\tea_ver=<ea_version (1 or 2)>\n"
 msgstr ""
 
-#: e2fsck/unix.c:786
+#: e2fsck/unix.c:788
 msgid "\treadahead_kb=<buffer size>\n"
 msgstr ""
 
-#: e2fsck/unix.c:799
+#: e2fsck/unix.c:801
 #, c-format
 msgid ""
 "Syntax error in e2fsck config file (%s, line #%d)\n"
 "\t%s\n"
 msgstr ""
 
-#: e2fsck/unix.c:872
+#: e2fsck/unix.c:874
 #, c-format
 msgid "Error validating file descriptor %d: %s\n"
 msgstr ""
 
-#: e2fsck/unix.c:876
+#: e2fsck/unix.c:878
 msgid "Invalid completion information file descriptor"
 msgstr ""
 
-#: e2fsck/unix.c:891
+#: e2fsck/unix.c:893
 msgid "Only one of the options -p/-a, -n or -y may be specified."
 msgstr ""
 
-#: e2fsck/unix.c:912
+#: e2fsck/unix.c:914
 #, c-format
 msgid "The -t option is not supported on this version of e2fsck.\n"
 msgstr ""
 
-#: e2fsck/unix.c:943 e2fsck/unix.c:1021 misc/e2initrd_helper.c:330
-#: misc/tune2fs.c:1772 misc/tune2fs.c:2067 misc/tune2fs.c:2085
+#: e2fsck/unix.c:946 e2fsck/unix.c:1024 misc/e2initrd_helper.c:330
+#: misc/tune2fs.c:1772 misc/tune2fs.c:2072 misc/tune2fs.c:2090
 #, c-format
 msgid "Unable to resolve '%s'"
 msgstr ""
 
-#: e2fsck/unix.c:1000
+#: e2fsck/unix.c:1003
 msgid "The -n and -D options are incompatible."
 msgstr ""
 
-#: e2fsck/unix.c:1005
+#: e2fsck/unix.c:1008
 msgid "The -n and -c options are incompatible."
 msgstr ""
 
-#: e2fsck/unix.c:1010
+#: e2fsck/unix.c:1013
 msgid "The -n and -l/-L options are incompatible."
 msgstr ""
 
-#: e2fsck/unix.c:1034
+#: e2fsck/unix.c:1037
 msgid "The -D and -E fixes_only options are incompatible."
 msgstr ""
 
-#: e2fsck/unix.c:1040
+#: e2fsck/unix.c:1043
 msgid "The -E bmap2extent and fixes_only options are incompatible."
 msgstr ""
 
-#: e2fsck/unix.c:1104
+#: e2fsck/unix.c:1094
+#, c-format
+msgid "while opening %s for flushing"
+msgstr ""
+
+#: e2fsck/unix.c:1100 resize/main.c:385
+#, c-format
+msgid "while trying to flush %s"
+msgstr ""
+
+#: e2fsck/unix.c:1107
 msgid "The -c and the -l/-L options may not be both used at the same time.\n"
 msgstr ""
 
-#: e2fsck/unix.c:1151
+#: e2fsck/unix.c:1154
 #, c-format
 msgid ""
 "E2FSCK_JBD_DEBUG \"%s\" not an integer\n"
 "\n"
 msgstr ""
 
-#: e2fsck/unix.c:1160
+#: e2fsck/unix.c:1163
 #, c-format
 msgid ""
 "\n"
@@ -3378,31 +3359,31 @@
 "\n"
 msgstr ""
 
-#: e2fsck/unix.c:1251
+#: e2fsck/unix.c:1254
 #, c-format
 msgid ""
 "MMP interval is %u seconds and total wait time is %u seconds. Please "
 "wait...\n"
 msgstr ""
 
-#: e2fsck/unix.c:1268 e2fsck/unix.c:1273
+#: e2fsck/unix.c:1271 e2fsck/unix.c:1276
 msgid "while checking MMP block"
 msgstr ""
 
-#: e2fsck/unix.c:1275
+#: e2fsck/unix.c:1278
 #, c-format
 msgid ""
 "If you are sure the filesystem is not in use on any node, run:\n"
 "'tune2fs -f -E clear_mmp %s'\n"
 msgstr ""
 
-#: e2fsck/unix.c:1291
+#: e2fsck/unix.c:1294
 msgid "while reading MMP block"
 msgstr ""
 
-#: e2fsck/unix.c:1311 e2fsck/unix.c:1363 misc/e2undo.c:236 misc/e2undo.c:281
-#: misc/mke2fs.c:2720 misc/mke2fs.c:2771 misc/tune2fs.c:2792
-#: misc/tune2fs.c:2837 resize/main.c:188 resize/main.c:233
+#: e2fsck/unix.c:1314 e2fsck/unix.c:1366 misc/e2undo.c:240 misc/e2undo.c:285
+#: misc/mke2fs.c:2724 misc/mke2fs.c:2775 misc/tune2fs.c:2797
+#: misc/tune2fs.c:2842 resize/main.c:188 resize/main.c:233
 #, c-format
 msgid ""
 "Overwriting existing filesystem; this can be undone using the command:\n"
@@ -3410,210 +3391,210 @@
 "\n"
 msgstr ""
 
-#: e2fsck/unix.c:1352 misc/e2undo.c:270 misc/mke2fs.c:2760 misc/tune2fs.c:2826
+#: e2fsck/unix.c:1355 misc/e2undo.c:274 misc/mke2fs.c:2764 misc/tune2fs.c:2831
 #: resize/main.c:222
 #, c-format
 msgid "while trying to delete %s"
 msgstr ""
 
-#: e2fsck/unix.c:1378 misc/mke2fs.c:2786 resize/main.c:243
+#: e2fsck/unix.c:1381 misc/mke2fs.c:2790 resize/main.c:243
 msgid "while trying to setup undo file\n"
 msgstr ""
 
-#: e2fsck/unix.c:1422
+#: e2fsck/unix.c:1425
 msgid "Error: ext2fs library version out of date!\n"
 msgstr ""
 
-#: e2fsck/unix.c:1429
+#: e2fsck/unix.c:1432
 msgid "while trying to initialize program"
 msgstr ""
 
-#: e2fsck/unix.c:1466
+#: e2fsck/unix.c:1469
 #, c-format
 msgid "\tUsing %s, %s\n"
 msgstr ""
 
-#: e2fsck/unix.c:1478
+#: e2fsck/unix.c:1481
 msgid "need terminal for interactive repairs"
 msgstr ""
 
-#: e2fsck/unix.c:1539
+#: e2fsck/unix.c:1542
 #, c-format
 msgid "%s: %s trying backup blocks...\n"
 msgstr ""
 
-#: e2fsck/unix.c:1541
+#: e2fsck/unix.c:1544
 msgid "Superblock invalid,"
 msgstr ""
 
-#: e2fsck/unix.c:1542
+#: e2fsck/unix.c:1545
 msgid "Group descriptors look bad..."
 msgstr ""
 
-#: e2fsck/unix.c:1552
+#: e2fsck/unix.c:1555
 #, c-format
 msgid "%s: %s while using the backup blocks"
 msgstr ""
 
-#: e2fsck/unix.c:1556
+#: e2fsck/unix.c:1559
 #, c-format
 msgid "%s: going back to original superblock\n"
 msgstr ""
 
-#: e2fsck/unix.c:1585
+#: e2fsck/unix.c:1588
 msgid ""
 "The filesystem revision is apparently too high for this version of e2fsck.\n"
 "(Or the filesystem superblock is corrupt)\n"
 "\n"
 msgstr ""
 
-#: e2fsck/unix.c:1592
+#: e2fsck/unix.c:1595
 msgid "Could this be a zero-length partition?\n"
 msgstr ""
 
-#: e2fsck/unix.c:1594
+#: e2fsck/unix.c:1597
 #, c-format
 msgid "You must have %s access to the filesystem or be root\n"
 msgstr ""
 
-#: e2fsck/unix.c:1600
+#: e2fsck/unix.c:1603
 msgid "Possibly non-existent or swap device?\n"
 msgstr ""
 
-#: e2fsck/unix.c:1602
+#: e2fsck/unix.c:1605
 msgid "Filesystem mounted or opened exclusively by another program?\n"
 msgstr ""
 
-#: e2fsck/unix.c:1606
+#: e2fsck/unix.c:1609
 msgid "Possibly non-existent device?\n"
 msgstr ""
 
-#: e2fsck/unix.c:1609
+#: e2fsck/unix.c:1612
 msgid ""
 "Disk write-protected; use the -n option to do a read-only\n"
 "check of the device.\n"
 msgstr ""
 
-#: e2fsck/unix.c:1623
+#: e2fsck/unix.c:1626
 #, c-format
 msgid "%s: Trying to load superblock despite errors...\n"
 msgstr ""
 
-#: e2fsck/unix.c:1698
+#: e2fsck/unix.c:1701
 msgid "Get a newer version of e2fsck!"
 msgstr ""
 
-#: e2fsck/unix.c:1758
+#: e2fsck/unix.c:1761
 #, c-format
 msgid "while checking journal for %s"
 msgstr ""
 
-#: e2fsck/unix.c:1761
+#: e2fsck/unix.c:1764
 msgid "Cannot proceed with file system check"
 msgstr ""
 
-#: e2fsck/unix.c:1772
+#: e2fsck/unix.c:1775
 msgid ""
 "Warning: skipping journal recovery because doing a read-only filesystem "
 "check.\n"
 msgstr ""
 
-#: e2fsck/unix.c:1784
+#: e2fsck/unix.c:1787
 #, c-format
 msgid "unable to set superblock flags on %s\n"
 msgstr ""
 
-#: e2fsck/unix.c:1790
+#: e2fsck/unix.c:1793
 #, c-format
 msgid "Journal checksum error found in %s\n"
 msgstr ""
 
-#: e2fsck/unix.c:1794
+#: e2fsck/unix.c:1797
 #, c-format
 msgid "Journal corrupted in %s\n"
 msgstr ""
 
-#: e2fsck/unix.c:1798
+#: e2fsck/unix.c:1801
 #, c-format
 msgid "while recovering journal of %s"
 msgstr ""
 
-#: e2fsck/unix.c:1820
+#: e2fsck/unix.c:1823
 #, c-format
 msgid "%s has unsupported feature(s):"
 msgstr ""
 
-#: e2fsck/unix.c:1835
+#: e2fsck/unix.c:1838
 #, c-format
 msgid "%s has unsupported encoding: %0x\n"
 msgstr ""
 
-#: e2fsck/unix.c:1885
+#: e2fsck/unix.c:1888
 #, c-format
 msgid "%s: %s while reading bad blocks inode\n"
 msgstr ""
 
-#: e2fsck/unix.c:1888
+#: e2fsck/unix.c:1891
 msgid "This doesn't bode well, but we'll try to go on...\n"
 msgstr ""
 
-#: e2fsck/unix.c:1931
+#: e2fsck/unix.c:1934
 #, c-format
 msgid "Creating journal (%d blocks): "
 msgstr ""
 
-#: e2fsck/unix.c:1940
+#: e2fsck/unix.c:1943
 msgid " Done.\n"
 msgstr ""
 
-#: e2fsck/unix.c:1942
+#: e2fsck/unix.c:1945
 msgid ""
 "\n"
 "*** journal has been regenerated ***\n"
 msgstr ""
 
-#: e2fsck/unix.c:1948
+#: e2fsck/unix.c:1951
 msgid "aborted"
 msgstr ""
 
-#: e2fsck/unix.c:1950
+#: e2fsck/unix.c:1953
 #, c-format
 msgid "%s: e2fsck canceled.\n"
 msgstr ""
 
-#: e2fsck/unix.c:1977
+#: e2fsck/unix.c:1980
 msgid "Restarting e2fsck from the beginning...\n"
 msgstr ""
 
-#: e2fsck/unix.c:1981
+#: e2fsck/unix.c:1984
 msgid "while resetting context"
 msgstr ""
 
-#: e2fsck/unix.c:2040
+#: e2fsck/unix.c:2043
 #, c-format
 msgid ""
 "\n"
 "%s: ***** FILE SYSTEM ERRORS CORRECTED *****\n"
 msgstr ""
 
-#: e2fsck/unix.c:2042
+#: e2fsck/unix.c:2045
 #, c-format
 msgid "%s: File system was modified.\n"
 msgstr ""
 
-#: e2fsck/unix.c:2046 e2fsck/util.c:67
+#: e2fsck/unix.c:2049 e2fsck/util.c:67
 #, c-format
 msgid ""
 "\n"
 "%s: ***** FILE SYSTEM WAS MODIFIED *****\n"
 msgstr ""
 
-#: e2fsck/unix.c:2051
+#: e2fsck/unix.c:2054
 #, c-format
 msgid "%s: ***** REBOOT SYSTEM *****\n"
 msgstr ""
 
-#: e2fsck/unix.c:2061 e2fsck/util.c:73
+#: e2fsck/unix.c:2064 e2fsck/util.c:73
 #, c-format
 msgid ""
 "\n"
@@ -3749,7 +3730,7 @@
 msgid "while writing inode %lu in %s"
 msgstr ""
 
-#: e2fsck/util.c:789
+#: e2fsck/util.c:790
 msgid ""
 "UNEXPECTED INCONSISTENCY: the filesystem is being modified while fsck is "
 "running.\n"
@@ -3860,92 +3841,102 @@
 msgid "during test data write, block %lu"
 msgstr ""
 
-#: misc/badblocks.c:1007 misc/util.c:134
+#: misc/badblocks.c:1006 misc/util.c:134
 #, c-format
 msgid "%s is mounted; "
 msgstr ""
 
-#: misc/badblocks.c:1009
+#: misc/badblocks.c:1008
 msgid "badblocks forced anyway.  Hope /etc/mtab is incorrect.\n"
 msgstr ""
 
-#: misc/badblocks.c:1014
+#: misc/badblocks.c:1013
 msgid "it's not safe to run badblocks!\n"
 msgstr ""
 
-#: misc/badblocks.c:1019 misc/util.c:145
+#: misc/badblocks.c:1018 misc/util.c:145
 #, c-format
 msgid "%s is apparently in use by the system; "
 msgstr ""
 
-#: misc/badblocks.c:1022
+#: misc/badblocks.c:1021
 msgid "badblocks forced anyway.\n"
 msgstr ""
 
-#: misc/badblocks.c:1042
+#: misc/badblocks.c:1041
 #, c-format
 msgid "invalid %s - %s"
 msgstr ""
 
-#: misc/badblocks.c:1136
+#: misc/badblocks.c:1135
 #, c-format
 msgid "Too big max bad blocks count %u - maximum is %u"
 msgstr ""
 
-#: misc/badblocks.c:1163
+#: misc/badblocks.c:1162
 #, c-format
 msgid "can't allocate memory for test_pattern - %s"
 msgstr ""
 
-#: misc/badblocks.c:1193
+#: misc/badblocks.c:1192
 msgid "Maximum of one test_pattern may be specified in read-only mode"
 msgstr ""
 
-#: misc/badblocks.c:1199
+#: misc/badblocks.c:1198
 msgid "Random test_pattern is not allowed in read-only mode"
 msgstr ""
 
-#: misc/badblocks.c:1213
+#: misc/badblocks.c:1205
+#, c-format
+msgid "Invalid block size: %d\n"
+msgstr ""
+
+#: misc/badblocks.c:1211
+#, c-format
+msgid "Invalid blocks_at_once: %d\n"
+msgstr ""
+
+#: misc/badblocks.c:1225
 msgid ""
 "Couldn't determine device size; you must specify\n"
 "the size manually\n"
 msgstr ""
 
-#: misc/badblocks.c:1219
+#: misc/badblocks.c:1231
 msgid "while trying to determine device size"
 msgstr ""
 
-#: misc/badblocks.c:1224
+#: misc/badblocks.c:1236
 msgid "last block"
 msgstr ""
 
-#: misc/badblocks.c:1230
+#: misc/badblocks.c:1242
 msgid "first block"
 msgstr ""
 
-#: misc/badblocks.c:1233
+#: misc/badblocks.c:1245
 #, c-format
 msgid "invalid starting block (%llu): must be less than %llu"
 msgstr ""
 
-#: misc/badblocks.c:1240
+#: misc/badblocks.c:1253
 #, c-format
 msgid "invalid end block (%llu): must be 32-bit value"
 msgstr ""
 
-#: misc/badblocks.c:1296
+#: misc/badblocks.c:1309
 msgid "while creating in-memory bad blocks list"
 msgstr ""
 
-#: misc/badblocks.c:1305
+#: misc/badblocks.c:1318
 msgid "input file - bad format"
 msgstr ""
 
-#: misc/badblocks.c:1313 misc/badblocks.c:1322
+#: misc/badblocks.c:1326 misc/badblocks.c:1335
 msgid "while adding to in-memory bad block list"
 msgstr ""
 
-#: misc/badblocks.c:1347
+#: misc/badblocks.c:1360
 #, c-format
 msgid "Pass completed, %u bad blocks found. (%d/%d/%d errors)\n"
 msgstr ""
@@ -3955,12 +3946,12 @@
 msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuFx] [-v version] files...\n"
 msgstr ""
 
-#: misc/chattr.c:161
+#: misc/chattr.c:162
 #, c-format
 msgid "bad project - %s\n"
 msgstr ""
 
-#: misc/chattr.c:175
+#: misc/chattr.c:176
 #, c-format
 msgid "bad version - %s\n"
 msgstr ""
@@ -4052,9 +4043,9 @@
 msgid "while reading xattrs for inode %u"
 msgstr ""
 
-#: misc/create_inode.c:178 misc/create_inode.c:205 misc/create_inode.c:1052
-#: misc/e2undo.c:182 misc/e2undo.c:479 misc/e2undo.c:485 misc/e2undo.c:491
-#: misc/mke2fs.c:360
+#: misc/create_inode.c:178 misc/create_inode.c:205 misc/create_inode.c:1065
+#: misc/e2undo.c:186 misc/e2undo.c:483 misc/e2undo.c:489 misc/e2undo.c:495
+#: misc/mke2fs.c:361
 msgid "while allocating memory"
 msgstr ""
 
@@ -4088,7 +4079,7 @@
 msgid "while creating symlink \"%s\""
 msgstr ""
 
-#: misc/create_inode.c:387 misc/create_inode.c:972
+#: misc/create_inode.c:387 misc/create_inode.c:651 misc/create_inode.c:985
 #, c-format
 msgid "while looking up \"%s\""
 msgstr ""
@@ -4098,83 +4089,83 @@
 msgid "while creating directory \"%s\""
 msgstr ""
 
-#: misc/create_inode.c:636
+#: misc/create_inode.c:637
 #, c-format
 msgid "while opening \"%s\" to copy"
 msgstr ""
 
-#: misc/create_inode.c:814
+#: misc/create_inode.c:827
 #, c-format
 msgid "while changing working directory to \"%s\""
 msgstr ""
 
-#: misc/create_inode.c:824
+#: misc/create_inode.c:837
 #, c-format
 msgid "while scanning directory \"%s\""
 msgstr ""
 
-#: misc/create_inode.c:834
+#: misc/create_inode.c:847
 #, c-format
 msgid "while lstat \"%s\""
 msgstr ""
 
-#: misc/create_inode.c:884
+#: misc/create_inode.c:897
 #, c-format
 msgid "while creating special file \"%s\""
 msgstr ""
 
-#: misc/create_inode.c:893
+#: misc/create_inode.c:906
 msgid "malloc failed"
 msgstr ""
 
-#: misc/create_inode.c:901
+#: misc/create_inode.c:914
 #, c-format
 msgid "while trying to read link \"%s\""
 msgstr ""
 
-#: misc/create_inode.c:908
+#: misc/create_inode.c:921
 msgid "symlink increased in size between lstat() and readlink()"
 msgstr ""
 
-#: misc/create_inode.c:919
+#: misc/create_inode.c:932
 #, c-format
 msgid "while writing symlink\"%s\""
 msgstr ""
 
-#: misc/create_inode.c:930
+#: misc/create_inode.c:943
 #, c-format
 msgid "while writing file \"%s\""
 msgstr ""
 
-#: misc/create_inode.c:943
+#: misc/create_inode.c:956
 #, c-format
 msgid "while making dir \"%s\""
 msgstr ""
 
-#: misc/create_inode.c:961
+#: misc/create_inode.c:974
 msgid "while changing directory"
 msgstr ""
 
-#: misc/create_inode.c:967
-#, c-format
-msgid "ignoring entry \"%s\""
-msgstr ""
-
 #: misc/create_inode.c:980
 #, c-format
+msgid "ignoring entry \"%s\""
+msgstr ""
+
+#: misc/create_inode.c:993
+#, c-format
 msgid "while setting inode for \"%s\""
 msgstr ""
 
-#: misc/create_inode.c:987
+#: misc/create_inode.c:1000
 #, c-format
 msgid "while setting xattrs for \"%s\""
 msgstr ""
 
-#: misc/create_inode.c:1013
+#: misc/create_inode.c:1026
 msgid "while saving inode data"
 msgstr ""
 
-#: misc/create_inode.c:1063
+#: misc/create_inode.c:1076
 msgid "while copying xattrs on root directory"
 msgstr ""
 
@@ -4325,21 +4316,21 @@
 msgid "reading MMP block %llu from '%s'\n"
 msgstr ""
 
-#: misc/dumpe2fs.c:517 misc/mke2fs.c:806 misc/tune2fs.c:2107
+#: misc/dumpe2fs.c:519 misc/mke2fs.c:809 misc/tune2fs.c:2112
 msgid "Couldn't allocate memory to parse options!\n"
 msgstr ""
 
-#: misc/dumpe2fs.c:543
+#: misc/dumpe2fs.c:545
 #, c-format
 msgid "Invalid superblock parameter: %s\n"
 msgstr ""
 
-#: misc/dumpe2fs.c:558
+#: misc/dumpe2fs.c:560
 #, c-format
 msgid "Invalid blocksize parameter: %s\n"
 msgstr ""
 
-#: misc/dumpe2fs.c:569
+#: misc/dumpe2fs.c:571
 #, c-format
 msgid ""
 "\n"
@@ -4353,27 +4344,27 @@
 "\tblocksize=<blocksize>\n"
 msgstr ""
 
-#: misc/dumpe2fs.c:659 misc/mke2fs.c:1904
+#: misc/dumpe2fs.c:661 misc/mke2fs.c:1907
 #, c-format
 msgid "\tUsing %s\n"
 msgstr ""
 
-#: misc/dumpe2fs.c:706 misc/e2image.c:1630 misc/tune2fs.c:2993
+#: misc/dumpe2fs.c:708 misc/e2image.c:1637 misc/tune2fs.c:2998
 #: resize/main.c:418
 msgid "Couldn't find valid filesystem superblock.\n"
 msgstr ""
 
-#: misc/dumpe2fs.c:728
+#: misc/dumpe2fs.c:730
 #, c-format
 msgid "%s: MMP feature not enabled.\n"
 msgstr ""
 
-#: misc/dumpe2fs.c:759
+#: misc/dumpe2fs.c:761
 #, c-format
 msgid "while trying to read '%s' bitmaps\n"
 msgstr ""
 
-#: misc/dumpe2fs.c:768
+#: misc/dumpe2fs.c:770
 msgid ""
 "*** Run e2fsck now!\n"
 "\n"
@@ -4398,7 +4389,7 @@
 "[ dest_fs ]\n"
 msgstr ""
 
-#: misc/e2image.c:176 misc/e2image.c:589 misc/e2image.c:595 misc/e2image.c:1194
+#: misc/e2image.c:176 misc/e2image.c:592 misc/e2image.c:598 misc/e2image.c:1200
 msgid "while allocating buffer"
 msgstr ""
 
@@ -4412,166 +4403,170 @@
 msgid "error writing block %llu"
 msgstr ""
 
-#: misc/e2image.c:198
+#: misc/e2image.c:199
 msgid "error in generic_write()"
 msgstr ""
 
-#: misc/e2image.c:215
+#: misc/e2image.c:216
 msgid "Error: header size is bigger than wrt_size\n"
 msgstr ""
 
-#: misc/e2image.c:220
+#: misc/e2image.c:221
 msgid "Couldn't allocate header buffer\n"
 msgstr ""
 
-#: misc/e2image.c:248
+#: misc/e2image.c:249
 msgid "while writing superblock"
 msgstr ""
 
-#: misc/e2image.c:257
+#: misc/e2image.c:258
 msgid "while writing inode table"
 msgstr ""
 
-#: misc/e2image.c:265
+#: misc/e2image.c:266
 msgid "while writing block bitmap"
 msgstr ""
 
-#: misc/e2image.c:273
+#: misc/e2image.c:274
 msgid "while writing inode bitmap"
 msgstr ""
 
-#: misc/e2image.c:515
+#: misc/e2image.c:516
 #, c-format
 msgid "Corrupt directory block %llu: bad rec_len (%d)\n"
 msgstr ""
 
-#: misc/e2image.c:527
+#: misc/e2image.c:528
 #, c-format
 msgid "Corrupt directory block %llu: bad name_len (%d)\n"
 msgstr ""
 
-#: misc/e2image.c:568
+#: misc/e2image.c:569
 #, c-format
 msgid "%llu / %llu blocks (%d%%)"
 msgstr ""
 
-#: misc/e2image.c:599 misc/e2image.c:639
+#: misc/e2image.c:602 misc/e2image.c:642
 msgid "Copying "
 msgstr ""
 
-#: misc/e2image.c:636
+#: misc/e2image.c:639
 msgid ""
 "Stopping now will destroy the filesystem, interrupt again if you are sure\n"
 msgstr ""
 
-#: misc/e2image.c:662
+#: misc/e2image.c:665
 #, c-format
 msgid " %s remaining at %.2f MB/s"
 msgstr ""
 
-#: misc/e2image.c:674 misc/e2image.c:1204
+#: misc/e2image.c:677 misc/e2image.c:1210
 #, c-format
 msgid "error reading block %llu"
 msgstr ""
 
-#: misc/e2image.c:728
+#: misc/e2image.c:732
 #, c-format
 msgid "Copied %llu / %llu blocks (%d%%) in %s "
 msgstr ""
 
-#: misc/e2image.c:732
+#: misc/e2image.c:737
 #, c-format
 msgid "at %.2f MB/s"
 msgstr ""
 
-#: misc/e2image.c:768
+#: misc/e2image.c:773
 msgid "while allocating l1 table"
 msgstr ""
 
-#: misc/e2image.c:813
+#: misc/e2image.c:818
 msgid "while allocating l2 cache"
 msgstr ""
 
-#: misc/e2image.c:836
+#: misc/e2image.c:841
 msgid ""
 "Warning: There are still tables in the cache while putting the cache, data "
 "will be lost so the image may not be valid.\n"
 msgstr ""
 
-#: misc/e2image.c:1161
+#: misc/e2image.c:1167
 msgid "while allocating ext2_qcow2_image"
 msgstr ""
 
-#: misc/e2image.c:1168
+#: misc/e2image.c:1174
 msgid "while initializing ext2_qcow2_image"
 msgstr ""
 
-#: misc/e2image.c:1227 misc/e2image.c:1245
+#: misc/e2image.c:1234 misc/e2image.c:1252
 msgid "Programming error: multiple sequential refcount blocks created!\n"
 msgstr ""
 
-#: misc/e2image.c:1286
+#: misc/e2image.c:1293
 msgid "while allocating block bitmap"
 msgstr ""
 
-#: misc/e2image.c:1295
+#: misc/e2image.c:1302
 msgid "while allocating scramble block bitmap"
 msgstr ""
 
-#: misc/e2image.c:1318
+#: misc/e2image.c:1325
 msgid "Scanning inodes...\n"
 msgstr ""
 
-#: misc/e2image.c:1330
+#: misc/e2image.c:1337
 msgid "Can't allocate block buffer"
 msgstr ""
 
-#: misc/e2image.c:1369 misc/e2image.c:1383
+#: misc/e2image.c:1349
+msgid "while getting next inode"
+msgstr ""
+
+#: misc/e2image.c:1376 misc/e2image.c:1390
 #, c-format
 msgid "while iterating over inode %u"
 msgstr ""
 
-#: misc/e2image.c:1415
+#: misc/e2image.c:1422
 msgid "Raw and qcow2 images cannot be installed"
 msgstr ""
 
-#: misc/e2image.c:1437
+#: misc/e2image.c:1444
 msgid "error reading bitmaps"
 msgstr ""
 
-#: misc/e2image.c:1449
+#: misc/e2image.c:1456
 msgid "while opening device file"
 msgstr ""
 
-#: misc/e2image.c:1460
+#: misc/e2image.c:1467
 msgid "while restoring the image table"
 msgstr ""
 
-#: misc/e2image.c:1566
+#: misc/e2image.c:1573
 msgid "-a option can only be used with raw or QCOW2 images."
 msgstr ""
 
-#: misc/e2image.c:1571
+#: misc/e2image.c:1578
 msgid "-b option can only be used with raw or QCOW2 images."
 msgstr ""
 
-#: misc/e2image.c:1577
+#: misc/e2image.c:1584
 msgid "Offsets are only allowed with raw images."
 msgstr ""
 
-#: misc/e2image.c:1582
+#: misc/e2image.c:1589
 msgid "Move mode is only allowed with raw images."
 msgstr ""
 
-#: misc/e2image.c:1587
+#: misc/e2image.c:1594
 msgid "Move mode requires all data mode."
 msgstr ""
 
-#: misc/e2image.c:1597
+#: misc/e2image.c:1604
 msgid "checking if mounted"
 msgstr ""
 
-#: misc/e2image.c:1604
+#: misc/e2image.c:1611
 msgid ""
 "\n"
 "Running e2image on a R/W mounted filesystem can result in an\n"
@@ -4579,51 +4574,51 @@
 "Use -f option if you really want to do that.\n"
 msgstr ""
 
-#: misc/e2image.c:1658
+#: misc/e2image.c:1665
 msgid "QCOW2 image can not be written to the stdout!\n"
 msgstr ""
 
-#: misc/e2image.c:1664
+#: misc/e2image.c:1671
 msgid "Can not stat output\n"
 msgstr ""
 
-#: misc/e2image.c:1674
+#: misc/e2image.c:1681
 #, c-format
 msgid "Image (%s) is compressed\n"
 msgstr ""
 
-#: misc/e2image.c:1677
+#: misc/e2image.c:1684
 #, c-format
 msgid "Image (%s) is encrypted\n"
 msgstr ""
 
-#: misc/e2image.c:1680
+#: misc/e2image.c:1687
 #, c-format
 msgid "Image (%s) is corrupted\n"
 msgstr ""
 
-#: misc/e2image.c:1684
+#: misc/e2image.c:1691
 #, c-format
 msgid "while trying to convert qcow2 image (%s) into raw image (%s)"
 msgstr ""
 
-#: misc/e2image.c:1694
+#: misc/e2image.c:1701
 msgid "The -c option only supported in raw mode\n"
 msgstr ""
 
-#: misc/e2image.c:1699
+#: misc/e2image.c:1706
 msgid "The -c option not supported when writing to stdout\n"
 msgstr ""
 
-#: misc/e2image.c:1706
+#: misc/e2image.c:1713
 msgid "while allocating check_buf"
 msgstr ""
 
-#: misc/e2image.c:1712
+#: misc/e2image.c:1719
 msgid "The -p option only supported in raw mode\n"
 msgstr ""
 
-#: misc/e2image.c:1722
+#: misc/e2image.c:1729
 #, c-format
 msgid "%d blocks already contained the data to be copied\n"
 msgstr ""
@@ -4653,7 +4648,7 @@
 msgid "e2label: not an ext2 filesystem\n"
 msgstr ""
 
-#: misc/e2label.c:97 misc/tune2fs.c:3198
+#: misc/e2label.c:97 misc/tune2fs.c:3207
 #, c-format
 msgid "Warning: label too long, truncating.\n"
 msgstr ""
@@ -4680,151 +4675,151 @@
 "<filesystem>\n"
 msgstr ""
 
-#: misc/e2undo.c:149
+#: misc/e2undo.c:153
 msgid "The file system superblock doesn't match the undo file.\n"
 msgstr ""
 
-#: misc/e2undo.c:152
+#: misc/e2undo.c:156
 msgid "UUID does not match.\n"
 msgstr ""
 
-#: misc/e2undo.c:154
+#: misc/e2undo.c:158
 msgid "Last mount time does not match.\n"
 msgstr ""
 
-#: misc/e2undo.c:156
+#: misc/e2undo.c:160
 msgid "Last write time does not match.\n"
 msgstr ""
 
-#: misc/e2undo.c:158
+#: misc/e2undo.c:162
 msgid "Lifetime write counter does not match.\n"
 msgstr ""
 
-#: misc/e2undo.c:172
+#: misc/e2undo.c:176
 msgid "while reading filesystem superblock."
 msgstr ""
 
-#: misc/e2undo.c:188
+#: misc/e2undo.c:192
 msgid "while fetching superblock"
 msgstr ""
 
-#: misc/e2undo.c:201
+#: misc/e2undo.c:205
 #, c-format
 msgid "Undo file superblock checksum doesn't match.\n"
 msgstr ""
 
-#: misc/e2undo.c:340
+#: misc/e2undo.c:344
 #, c-format
 msgid "illegal offset - %s"
 msgstr ""
 
-#: misc/e2undo.c:364
+#: misc/e2undo.c:368
 #, c-format
 msgid "Will not write to an undo file while replaying it.\n"
 msgstr ""
 
-#: misc/e2undo.c:373
+#: misc/e2undo.c:377
 #, c-format
 msgid "while opening undo file `%s'\n"
 msgstr ""
 
-#: misc/e2undo.c:380
+#: misc/e2undo.c:384
 msgid "while reading undo file"
 msgstr ""
 
-#: misc/e2undo.c:385
+#: misc/e2undo.c:389
 #, c-format
 msgid "%s: Not an undo file.\n"
 msgstr ""
 
-#: misc/e2undo.c:396
+#: misc/e2undo.c:400
 #, c-format
 msgid "%s: Header checksum doesn't match.\n"
 msgstr ""
 
-#: misc/e2undo.c:403
+#: misc/e2undo.c:407
 #, c-format
 msgid "%s: Corrupt undo file header.\n"
 msgstr ""
 
-#: misc/e2undo.c:407
+#: misc/e2undo.c:411
 #, c-format
 msgid "%s: Undo block size too large.\n"
 msgstr ""
 
-#: misc/e2undo.c:412
+#: misc/e2undo.c:416
 #, c-format
 msgid "%s: Undo block size too small.\n"
 msgstr ""
 
-#: misc/e2undo.c:425
+#: misc/e2undo.c:429
 #, c-format
 msgid "%s: Unknown undo file feature set.\n"
 msgstr ""
 
-#: misc/e2undo.c:433
+#: misc/e2undo.c:437
 #, c-format
 msgid "Error while determining whether %s is mounted."
 msgstr ""
 
-#: misc/e2undo.c:439
+#: misc/e2undo.c:443
 msgid "e2undo should only be run on unmounted filesystems"
 msgstr ""
 
-#: misc/e2undo.c:455
+#: misc/e2undo.c:459
 #, c-format
 msgid "while opening `%s'"
 msgstr ""
 
-#: misc/e2undo.c:466
+#: misc/e2undo.c:470
 msgid "specified offset is too large"
 msgstr ""
 
-#: misc/e2undo.c:507
+#: misc/e2undo.c:511
 msgid "while reading keys"
 msgstr ""
 
-#: misc/e2undo.c:519
+#: misc/e2undo.c:523
 #, c-format
 msgid "%s: wrong key magic at %llu\n"
 msgstr ""
 
-#: misc/e2undo.c:529
+#: misc/e2undo.c:533
 #, c-format
 msgid "%s: key block checksum error at %llu.\n"
 msgstr ""
 
-#: misc/e2undo.c:552
+#: misc/e2undo.c:556
 #, c-format
 msgid "%s: block %llu is too long."
 msgstr ""
 
-#: misc/e2undo.c:564 misc/e2undo.c:600
+#: misc/e2undo.c:569 misc/e2undo.c:606
 #, c-format
 msgid "while fetching block %llu."
 msgstr ""
 
-#: misc/e2undo.c:576
+#: misc/e2undo.c:581
 #, c-format
 msgid "checksum error in filesystem block %llu (undo blk %llu)\n"
 msgstr ""
 
-#: misc/e2undo.c:615
+#: misc/e2undo.c:622
 #, c-format
 msgid "while writing block %llu."
 msgstr ""
 
-#: misc/e2undo.c:621
+#: misc/e2undo.c:629
 #, c-format
 msgid "Undo file corruption; run e2fsck NOW!\n"
 msgstr ""
 
-#: misc/e2undo.c:623
+#: misc/e2undo.c:631
 #, c-format
 msgid "IO error during replay; run e2fsck NOW!\n"
 msgstr ""
 
-#: misc/e2undo.c:626
+#: misc/e2undo.c:634
 #, c-format
 msgid "Incomplete undo record; run e2fsck.\n"
 msgstr ""
@@ -4988,7 +4983,7 @@
 msgid "%s: %s.\n"
 msgstr ""
 
-#: misc/fuse2fs.c:3783 misc/fuse2fs.c:3802 misc/tune2fs.c:3093
+#: misc/fuse2fs.c:3783 misc/fuse2fs.c:3802 misc/tune2fs.c:3098
 #, c-format
 msgid "Please run e2fsck -fy %s.\n"
 msgstr ""
@@ -5061,35 +5056,35 @@
 "\t[-jnqvDFSV] device [blocks-count]\n"
 msgstr ""
 
-#: misc/mke2fs.c:262
+#: misc/mke2fs.c:263
 #, c-format
 msgid "Running command: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:266
+#: misc/mke2fs.c:267
 #, c-format
 msgid "while trying to run '%s'"
 msgstr ""
 
-#: misc/mke2fs.c:273
+#: misc/mke2fs.c:274
 msgid "while processing list of bad blocks from program"
 msgstr ""
 
-#: misc/mke2fs.c:300
+#: misc/mke2fs.c:301
 #, c-format
 msgid "Block %d in primary superblock/group descriptor area bad.\n"
 msgstr ""
 
-#: misc/mke2fs.c:302
+#: misc/mke2fs.c:303
 #, c-format
 msgid "Blocks %u through %u must be good in order to build a filesystem.\n"
 msgstr ""
 
-#: misc/mke2fs.c:305
+#: misc/mke2fs.c:306
 msgid "Aborting....\n"
 msgstr ""
 
-#: misc/mke2fs.c:325
+#: misc/mke2fs.c:326
 #, c-format
 msgid ""
 "Warning: the backup superblock/group descriptors at block %u contain\n"
@@ -5097,263 +5092,263 @@
 "\n"
 msgstr ""
 
-#: misc/mke2fs.c:344 misc/mke2fs.c:3281
+#: misc/mke2fs.c:345 misc/mke2fs.c:3285
 msgid "while marking bad blocks as used"
 msgstr ""
 
-#: misc/mke2fs.c:369
+#: misc/mke2fs.c:370
 msgid "while writing reserved inodes"
 msgstr ""
 
-#: misc/mke2fs.c:421
+#: misc/mke2fs.c:422
 msgid "Writing inode tables: "
 msgstr ""
 
-#: misc/mke2fs.c:443
+#: misc/mke2fs.c:444
 #, c-format
 msgid ""
 "\n"
 "Could not write %d blocks in inode table starting at %llu: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:457 misc/mke2fs.c:2833 misc/mke2fs.c:3241
+#: misc/mke2fs.c:459 misc/mke2fs.c:2837 misc/mke2fs.c:3245
 msgid "done                            \n"
 msgstr ""
 
-#: misc/mke2fs.c:472
+#: misc/mke2fs.c:474
 msgid "while creating root dir"
 msgstr ""
 
-#: misc/mke2fs.c:479
+#: misc/mke2fs.c:481
 msgid "while reading root inode"
 msgstr ""
 
-#: misc/mke2fs.c:491
+#: misc/mke2fs.c:493
 msgid "while setting root inode ownership"
 msgstr ""
 
-#: misc/mke2fs.c:509
+#: misc/mke2fs.c:511
 msgid "while creating /lost+found"
 msgstr ""
 
-#: misc/mke2fs.c:516
+#: misc/mke2fs.c:518
 msgid "while looking up /lost+found"
 msgstr ""
 
-#: misc/mke2fs.c:529
+#: misc/mke2fs.c:531
 msgid "while expanding /lost+found"
 msgstr ""
 
-#: misc/mke2fs.c:544
+#: misc/mke2fs.c:546
 msgid "while setting bad block inode"
 msgstr ""
 
-#: misc/mke2fs.c:571
+#: misc/mke2fs.c:573
 #, c-format
 msgid "Out of memory erasing sectors %d-%d\n"
 msgstr ""
 
-#: misc/mke2fs.c:581
+#: misc/mke2fs.c:583
 #, c-format
 msgid "Warning: could not read block 0: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:597
+#: misc/mke2fs.c:599
 #, c-format
 msgid "Warning: could not erase sector %d: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:613
+#: misc/mke2fs.c:615
 msgid "while splitting the journal size"
 msgstr ""
 
-#: misc/mke2fs.c:620
+#: misc/mke2fs.c:622
 msgid "while initializing journal superblock"
 msgstr ""
 
-#: misc/mke2fs.c:628
+#: misc/mke2fs.c:630
 msgid "Zeroing journal device: "
 msgstr ""
 
-#: misc/mke2fs.c:640
+#: misc/mke2fs.c:642
 #, c-format
 msgid "while zeroing journal device (block %llu, count %d)"
 msgstr ""
 
-#: misc/mke2fs.c:658
+#: misc/mke2fs.c:660
 msgid "while writing journal superblock"
 msgstr ""
 
-#: misc/mke2fs.c:672
+#: misc/mke2fs.c:674
 #, c-format
 msgid "Creating filesystem with %llu %dk blocks and %u inodes\n"
 msgstr ""
 
-#: misc/mke2fs.c:680
+#: misc/mke2fs.c:682
 #, c-format
 msgid ""
 "warning: %llu blocks unused.\n"
 "\n"
 msgstr ""
 
-#: misc/mke2fs.c:683
+#: misc/mke2fs.c:686
 #, c-format
 msgid "Filesystem label=%.*s\n"
 msgstr ""
 
-#: misc/mke2fs.c:687
+#: misc/mke2fs.c:690
 #, c-format
 msgid "OS type: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:689
+#: misc/mke2fs.c:692
 #, c-format
 msgid "Block size=%u (log=%u)\n"
 msgstr ""
 
-#: misc/mke2fs.c:692
+#: misc/mke2fs.c:695
 #, c-format
 msgid "Cluster size=%u (log=%u)\n"
 msgstr ""
 
-#: misc/mke2fs.c:696
+#: misc/mke2fs.c:699
 #, c-format
 msgid "Fragment size=%u (log=%u)\n"
 msgstr ""
 
-#: misc/mke2fs.c:698
+#: misc/mke2fs.c:701
 #, c-format
 msgid "Stride=%u blocks, Stripe width=%u blocks\n"
 msgstr ""
 
-#: misc/mke2fs.c:700
+#: misc/mke2fs.c:703
 #, c-format
 msgid "%u inodes, %llu blocks\n"
 msgstr ""
 
-#: misc/mke2fs.c:702
+#: misc/mke2fs.c:705
 #, c-format
 msgid "%llu blocks (%2.2f%%) reserved for the super user\n"
 msgstr ""
 
-#: misc/mke2fs.c:705
+#: misc/mke2fs.c:708
 #, c-format
 msgid "First data block=%u\n"
 msgstr ""
 
-#: misc/mke2fs.c:707
+#: misc/mke2fs.c:710
 #, c-format
 msgid "Root directory owner=%u:%u\n"
 msgstr ""
 
-#: misc/mke2fs.c:709
+#: misc/mke2fs.c:712
 #, c-format
 msgid "Maximum filesystem blocks=%lu\n"
 msgstr ""
 
-#: misc/mke2fs.c:713
+#: misc/mke2fs.c:716
 #, c-format
 msgid "%u block groups\n"
 msgstr ""
 
-#: misc/mke2fs.c:715
+#: misc/mke2fs.c:718
 #, c-format
 msgid "%u block group\n"
 msgstr ""
 
-#: misc/mke2fs.c:717
+#: misc/mke2fs.c:720
 #, c-format
 msgid "%u blocks per group, %u clusters per group\n"
 msgstr ""
 
-#: misc/mke2fs.c:720
+#: misc/mke2fs.c:723
 #, c-format
 msgid "%u blocks per group, %u fragments per group\n"
 msgstr ""
 
-#: misc/mke2fs.c:722
+#: misc/mke2fs.c:725
 #, c-format
 msgid "%u inodes per group\n"
 msgstr ""
 
-#: misc/mke2fs.c:731
+#: misc/mke2fs.c:734
 #, c-format
 msgid "Filesystem UUID: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:732
+#: misc/mke2fs.c:735
 msgid "Superblock backups stored on blocks: "
 msgstr ""
 
-#: misc/mke2fs.c:828
+#: misc/mke2fs.c:831
 #, c-format
 msgid "%s requires '-O 64bit'\n"
 msgstr ""
 
-#: misc/mke2fs.c:834
+#: misc/mke2fs.c:837
 #, c-format
 msgid "'%s' must be before 'resize=%u'\n"
 msgstr ""
 
-#: misc/mke2fs.c:847
+#: misc/mke2fs.c:850
 #, c-format
 msgid "Invalid desc_size: '%s'\n"
 msgstr ""
 
-#: misc/mke2fs.c:861
+#: misc/mke2fs.c:864
 #, c-format
 msgid "Invalid hash seed: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:873
+#: misc/mke2fs.c:876
 #, c-format
 msgid "Invalid offset: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:887 misc/tune2fs.c:2135
+#: misc/mke2fs.c:890 misc/tune2fs.c:2140
 #, c-format
 msgid "Invalid mmp_update_interval: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:904
+#: misc/mke2fs.c:907
 #, c-format
 msgid "Invalid # of backup superblocks: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:926
+#: misc/mke2fs.c:929
 #, c-format
 msgid "Invalid stride parameter: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:941
+#: misc/mke2fs.c:944
 #, c-format
 msgid "Invalid stripe-width parameter: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:964
+#: misc/mke2fs.c:967
 #, c-format
 msgid "Invalid resize parameter: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:971
+#: misc/mke2fs.c:974
 msgid "The resize maximum must be greater than the filesystem size.\n"
 msgstr ""
 
-#: misc/mke2fs.c:995
+#: misc/mke2fs.c:998
 msgid "On-line resizing not supported with revision 0 filesystems\n"
 msgstr ""
 
-#: misc/mke2fs.c:1021 misc/mke2fs.c:1030
+#: misc/mke2fs.c:1024 misc/mke2fs.c:1033
 #, c-format
 msgid "Invalid root_owner: '%s'\n"
 msgstr ""
 
-#: misc/mke2fs.c:1075
+#: misc/mke2fs.c:1078
 #, c-format
 msgid "Invalid encoding: %s"
 msgstr ""
 
-#: misc/mke2fs.c:1093
+#: misc/mke2fs.c:1096
 #, c-format
 msgid ""
 "\n"
@@ -5382,7 +5377,7 @@
 "\n"
 msgstr ""
 
-#: misc/mke2fs.c:1120
+#: misc/mke2fs.c:1123
 #, c-format
 msgid ""
 "\n"
@@ -5390,52 +5385,52 @@
 "\n"
 msgstr ""
 
-#: misc/mke2fs.c:1131 misc/tune2fs.c:2271
+#: misc/mke2fs.c:1134 misc/tune2fs.c:2276
 #, c-format
 msgid "error: Invalid encoding flag: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:1137 misc/tune2fs.c:2280
+#: misc/mke2fs.c:1140 misc/tune2fs.c:2285
 #, c-format
 msgid ""
 "error: An encoding must be explicitly specified when passing encoding-flags\n"
 msgstr ""
 
-#: misc/mke2fs.c:1187
+#: misc/mke2fs.c:1190
 #, c-format
 msgid ""
 "Syntax error in mke2fs config file (%s, line #%d)\n"
 "\t%s\n"
 msgstr ""
 
-#: misc/mke2fs.c:1200 misc/tune2fs.c:1105
+#: misc/mke2fs.c:1203 misc/tune2fs.c:1105
 #, c-format
 msgid "Invalid filesystem option set: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:1212 misc/tune2fs.c:422
+#: misc/mke2fs.c:1215 misc/tune2fs.c:422
 #, c-format
 msgid "Invalid mount option set: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:1348
+#: misc/mke2fs.c:1351
 #, c-format
 msgid ""
 "\n"
 "Your mke2fs.conf file does not define the %s filesystem type.\n"
 msgstr ""
 
-#: misc/mke2fs.c:1352
+#: misc/mke2fs.c:1355
 msgid ""
 "You probably need to install an updated mke2fs.conf file.\n"
 "\n"
 msgstr ""
 
-#: misc/mke2fs.c:1356
+#: misc/mke2fs.c:1359
 msgid "Aborting...\n"
 msgstr ""
 
-#: misc/mke2fs.c:1397
+#: misc/mke2fs.c:1400
 #, c-format
 msgid ""
 "\n"
@@ -5443,154 +5438,154 @@
 "\n"
 msgstr ""
 
-#: misc/mke2fs.c:1584
+#: misc/mke2fs.c:1587
 msgid "Couldn't allocate memory for new PATH.\n"
 msgstr ""
 
-#: misc/mke2fs.c:1621
+#: misc/mke2fs.c:1624
 #, c-format
 msgid "Couldn't init profile successfully (error: %ld).\n"
 msgstr ""
 
-#: misc/mke2fs.c:1654
+#: misc/mke2fs.c:1657
 #, c-format
 msgid "invalid block size - %s"
 msgstr ""
 
-#: misc/mke2fs.c:1658
+#: misc/mke2fs.c:1661
 #, c-format
 msgid "Warning: blocksize %d not usable on most systems.\n"
 msgstr ""
 
-#: misc/mke2fs.c:1674
+#: misc/mke2fs.c:1677
 #, c-format
 msgid "invalid cluster size - %s"
 msgstr ""
 
-#: misc/mke2fs.c:1687
+#: misc/mke2fs.c:1690
 msgid "'-R' is deprecated, use '-E' instead"
 msgstr ""
 
-#: misc/mke2fs.c:1701 misc/tune2fs.c:1861
+#: misc/mke2fs.c:1704 misc/tune2fs.c:1866
 #, c-format
 msgid "bad error behavior - %s"
 msgstr ""
 
-#: misc/mke2fs.c:1713
+#: misc/mke2fs.c:1716
 msgid "Illegal number for blocks per group"
 msgstr ""
 
-#: misc/mke2fs.c:1718
+#: misc/mke2fs.c:1721
 msgid "blocks per group must be multiple of 8"
 msgstr ""
 
-#: misc/mke2fs.c:1726
+#: misc/mke2fs.c:1729
 msgid "Illegal number for flex_bg size"
 msgstr ""
 
-#: misc/mke2fs.c:1732
+#: misc/mke2fs.c:1735
 msgid "flex_bg size must be a power of 2"
 msgstr ""
 
-#: misc/mke2fs.c:1737
+#: misc/mke2fs.c:1740
 #, c-format
 msgid "flex_bg size (%lu) must be less than or equal to 2^31"
 msgstr ""
 
-#: misc/mke2fs.c:1747
+#: misc/mke2fs.c:1750
 #, c-format
 msgid "invalid inode ratio %s (min %d/max %d)"
 msgstr ""
 
-#: misc/mke2fs.c:1757
+#: misc/mke2fs.c:1760
 #, c-format
 msgid "invalid inode size - %s"
 msgstr ""
 
-#: misc/mke2fs.c:1772
+#: misc/mke2fs.c:1775
 msgid ""
 "Warning: -K option is deprecated and should not be used anymore. Use '-E "
 "nodiscard' extended option instead!\n"
 msgstr ""
 
-#: misc/mke2fs.c:1783
+#: misc/mke2fs.c:1786
 msgid "in malloc for bad_blocks_filename"
 msgstr ""
 
-#: misc/mke2fs.c:1792
+#: misc/mke2fs.c:1795
 #, c-format
 msgid ""
 "Warning: label too long; will be truncated to '%s'\n"
 "\n"
 msgstr ""
 
-#: misc/mke2fs.c:1801
+#: misc/mke2fs.c:1804
 #, c-format
 msgid "invalid reserved blocks percent - %s"
 msgstr ""
 
-#: misc/mke2fs.c:1816
+#: misc/mke2fs.c:1819
 #, c-format
 msgid "bad num inodes - %s"
 msgstr ""
 
-#: misc/mke2fs.c:1829
+#: misc/mke2fs.c:1832
 msgid "while allocating fs_feature string"
 msgstr ""
 
-#: misc/mke2fs.c:1846
+#: misc/mke2fs.c:1849
 #, c-format
 msgid "bad revision level - %s"
 msgstr ""
 
-#: misc/mke2fs.c:1851
+#: misc/mke2fs.c:1854
 #, c-format
 msgid "while trying to create revision %d"
 msgstr ""
 
-#: misc/mke2fs.c:1865
+#: misc/mke2fs.c:1868
 msgid "The -t option may only be used once"
 msgstr ""
 
-#: misc/mke2fs.c:1873
+#: misc/mke2fs.c:1876
 msgid "The -T option may only be used once"
 msgstr ""
 
-#: misc/mke2fs.c:1929 misc/mke2fs.c:3364
+#: misc/mke2fs.c:1932 misc/mke2fs.c:3368
 #, c-format
 msgid "while trying to open journal device %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:1935
+#: misc/mke2fs.c:1938
 #, c-format
 msgid "Journal dev blocksize (%d) smaller than minimum blocksize %d\n"
 msgstr ""
 
-#: misc/mke2fs.c:1941
+#: misc/mke2fs.c:1944
 #, c-format
 msgid "Using journal device's blocksize: %d\n"
 msgstr ""
 
-#: misc/mke2fs.c:1952
+#: misc/mke2fs.c:1955
 #, c-format
 msgid "invalid blocks '%s' on device '%s'"
 msgstr ""
 
-#: misc/mke2fs.c:1982
+#: misc/mke2fs.c:1985
 msgid "filesystem"
 msgstr ""
 
-#: misc/mke2fs.c:2000 resize/main.c:499
+#: misc/mke2fs.c:2003 resize/main.c:499
 msgid "while trying to determine filesystem size"
 msgstr ""
 
-#: misc/mke2fs.c:2006
+#: misc/mke2fs.c:2009
 msgid ""
 "Couldn't determine device size; you must specify\n"
 "the size of the filesystem\n"
 msgstr ""
 
-#: misc/mke2fs.c:2013
+#: misc/mke2fs.c:2016
 msgid ""
 "Device size reported to be zero.  Invalid partition specified, or\n"
 "\tpartition table wasn't reread after running fdisk, due to\n"
@@ -5598,149 +5593,149 @@
 "\tto re-read your partition table.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2030
+#: misc/mke2fs.c:2033
 msgid "Filesystem larger than apparent device size."
 msgstr ""
 
-#: misc/mke2fs.c:2050
+#: misc/mke2fs.c:2053
 msgid "Failed to parse fs types list\n"
 msgstr ""
 
-#: misc/mke2fs.c:2100
+#: misc/mke2fs.c:2103
 msgid "The HURD does not support the filetype feature.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2105
+#: misc/mke2fs.c:2108
 msgid "The HURD does not support the huge_file feature.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2110
+#: misc/mke2fs.c:2113
 msgid "The HURD does not support the metadata_csum feature.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2115
+#: misc/mke2fs.c:2118
 msgid "The HURD does not support the ea_inode feature.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2125
+#: misc/mke2fs.c:2128
 msgid "while trying to determine hardware sector size"
 msgstr ""
 
-#: misc/mke2fs.c:2131
+#: misc/mke2fs.c:2134
 msgid "while trying to determine physical sector size"
 msgstr ""
 
-#: misc/mke2fs.c:2163
+#: misc/mke2fs.c:2166
 msgid "while setting blocksize; too small for device\n"
 msgstr ""
 
-#: misc/mke2fs.c:2168
+#: misc/mke2fs.c:2171
 #, c-format
 msgid ""
 "Warning: specified blocksize %d is less than device physical sectorsize %d\n"
 msgstr ""
 
-#: misc/mke2fs.c:2192
+#: misc/mke2fs.c:2195
 #, c-format
 msgid ""
 "%s: Size of device (0x%llx blocks) %s too big to be expressed\n"
 "\tin 32 bits using a blocksize of %d.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2206
+#: misc/mke2fs.c:2209
 #, c-format
 msgid ""
 "%s: Size of device (0x%llx blocks) %s too big to create\n"
 "\ta filesystem using a blocksize of %d.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2228
+#: misc/mke2fs.c:2231
 msgid "fs_types for mke2fs.conf resolution: "
 msgstr ""
 
-#: misc/mke2fs.c:2235
+#: misc/mke2fs.c:2238
 msgid "Filesystem features not supported with revision 0 filesystems\n"
 msgstr ""
 
-#: misc/mke2fs.c:2243
+#: misc/mke2fs.c:2246
 msgid "Sparse superblocks not supported with revision 0 filesystems\n"
 msgstr ""
 
-#: misc/mke2fs.c:2253
+#: misc/mke2fs.c:2256
 msgid "Journals not supported with revision 0 filesystems\n"
 msgstr ""
 
-#: misc/mke2fs.c:2266
+#: misc/mke2fs.c:2269
 #, c-format
 msgid "invalid reserved blocks percent - %lf"
 msgstr ""
 
-#: misc/mke2fs.c:2283
+#: misc/mke2fs.c:2286
 msgid ""
 "Extents MUST be enabled for a 64-bit filesystem.  Pass -O extents to "
 "rectify.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2303
+#: misc/mke2fs.c:2306
 msgid "The cluster size may not be smaller than the block size.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2309
+#: misc/mke2fs.c:2312
 msgid "specifying a cluster size requires the bigalloc feature"
 msgstr ""
 
-#: misc/mke2fs.c:2329
+#: misc/mke2fs.c:2332
 #, c-format
 msgid "warning: Unable to get device geometry for %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:2341
+#: misc/mke2fs.c:2344
 #, c-format
 msgid "%s alignment is offset by %lu bytes.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2343
+#: misc/mke2fs.c:2346
 #, c-format
 msgid ""
 "This may result in very poor performance, (re)-partitioning suggested.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2349
+#: misc/mke2fs.c:2352
 #, c-format
 msgid ""
 "%s is capable of DAX but current block size %u is different from system page "
 "size %u so filesystem will not support DAX.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2373
+#: misc/mke2fs.c:2376
 #, c-format
 msgid "%d-byte blocks too big for system (max %d)"
 msgstr ""
 
-#: misc/mke2fs.c:2377
+#: misc/mke2fs.c:2380
 #, c-format
 msgid ""
 "Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
 msgstr ""
 
-#: misc/mke2fs.c:2385
+#: misc/mke2fs.c:2388
 #, c-format
 msgid ""
 "Suggestion: Use Linux kernel >= 3.18 for improved stability of the metadata "
 "and journal checksum features.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2431
+#: misc/mke2fs.c:2434
 #, c-format
 msgid "Unknown filename encoding from profile: %s"
 msgstr ""
 
-#: misc/mke2fs.c:2442
+#: misc/mke2fs.c:2445
 #, c-format
 msgid "Unknown encoding flags from profile: %s"
 msgstr ""
 
-#: misc/mke2fs.c:2467
+#: misc/mke2fs.c:2470
 #, c-format
 msgid ""
 "\n"
@@ -5750,22 +5745,22 @@
 "\n"
 msgstr ""
 
-#: misc/mke2fs.c:2482
+#: misc/mke2fs.c:2485
 #, c-format
 msgid "%d byte inodes are too small for project quota"
 msgstr ""
 
-#: misc/mke2fs.c:2504
+#: misc/mke2fs.c:2507
 msgid "Can't support bigalloc feature without extents feature"
 msgstr ""
 
-#: misc/mke2fs.c:2511
+#: misc/mke2fs.c:2514
 msgid ""
 "The resize_inode and meta_bg features are not compatible.\n"
 "They can not be both enabled simultaneously.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2519
+#: misc/mke2fs.c:2522
 msgid ""
 "\n"
 "Warning: the bigalloc feature is still under development\n"
@@ -5773,39 +5768,39 @@
 "\n"
 msgstr ""
 
-#: misc/mke2fs.c:2531
+#: misc/mke2fs.c:2534
 msgid "reserved online resize blocks not supported on non-sparse filesystem"
 msgstr ""
 
-#: misc/mke2fs.c:2540
+#: misc/mke2fs.c:2543
 msgid "blocks per group count out of range"
 msgstr ""
 
-#: misc/mke2fs.c:2562
+#: misc/mke2fs.c:2565
 msgid "Flex_bg feature not enabled, so flex_bg size may not be specified"
 msgstr ""
 
-#: misc/mke2fs.c:2574
+#: misc/mke2fs.c:2577
 #, c-format
 msgid "invalid inode size %d (min %d/max %d)"
 msgstr ""
 
-#: misc/mke2fs.c:2589
+#: misc/mke2fs.c:2592
 #, c-format
 msgid "%d byte inodes are too small for inline data; specify larger size"
 msgstr ""
 
-#: misc/mke2fs.c:2604
+#: misc/mke2fs.c:2607
 #, c-format
 msgid "too many inodes (%llu), raise inode ratio?"
 msgstr ""
 
-#: misc/mke2fs.c:2611
+#: misc/mke2fs.c:2615
 #, c-format
 msgid "too many inodes (%llu), specify < 2^32 inodes"
 msgstr ""
 
-#: misc/mke2fs.c:2625
+#: misc/mke2fs.c:2629
 #, c-format
 msgid ""
 "inode_size (%u) * inodes_count (%u) too big for a\n"
@@ -5813,161 +5808,161 @@
 "\tor lower inode count (-N).\n"
 msgstr ""
 
-#: misc/mke2fs.c:2812
+#: misc/mke2fs.c:2816
 msgid "Discarding device blocks: "
 msgstr ""
 
-#: misc/mke2fs.c:2828
+#: misc/mke2fs.c:2832
 msgid "failed - "
 msgstr ""
 
-#: misc/mke2fs.c:2887
+#: misc/mke2fs.c:2891
 msgid "while initializing quota context"
 msgstr ""
 
-#: misc/mke2fs.c:2894
+#: misc/mke2fs.c:2898
 msgid "while writing quota inodes"
 msgstr ""
 
-#: misc/mke2fs.c:2919
+#: misc/mke2fs.c:2923
 #, c-format
 msgid "bad error behavior in profile - %s"
 msgstr ""
 
-#: misc/mke2fs.c:2998
+#: misc/mke2fs.c:3002
 msgid "in malloc for android_sparse_params"
 msgstr ""
 
-#: misc/mke2fs.c:3012
+#: misc/mke2fs.c:3016
 msgid "while setting up superblock"
 msgstr ""
 
-#: misc/mke2fs.c:3028
+#: misc/mke2fs.c:3032
 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:3035
+#: misc/mke2fs.c:3039
 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:3043
+#: misc/mke2fs.c:3047
 msgid "The metadata_csum_seed feature requires the metadata_csum feature.\n"
 msgstr ""
 
-#: misc/mke2fs.c:3067
+#: misc/mke2fs.c:3071
 msgid "Discard succeeded and will return 0s - skipping inode table wipe\n"
 msgstr ""
 
-#: misc/mke2fs.c:3166
+#: misc/mke2fs.c:3170
 #, c-format
 msgid "unknown os - %s"
 msgstr ""
 
-#: misc/mke2fs.c:3229
+#: misc/mke2fs.c:3233
 msgid "Allocating group tables: "
 msgstr ""
 
-#: misc/mke2fs.c:3237
+#: misc/mke2fs.c:3241
 msgid "while trying to allocate filesystem tables"
 msgstr ""
 
-#: misc/mke2fs.c:3252
+#: misc/mke2fs.c:3256
 msgid "while unmarking bad blocks"
 msgstr ""
 
-#: misc/mke2fs.c:3263
+#: misc/mke2fs.c:3267
 msgid ""
 "\n"
 "\twhile converting subcluster bitmap"
 msgstr ""
 
-#: misc/mke2fs.c:3272
+#: misc/mke2fs.c:3276
 msgid "while calculating overhead"
 msgstr ""
 
-#: misc/mke2fs.c:3291
+#: misc/mke2fs.c:3295
 #, c-format
 msgid "%s may be further corrupted by superblock rewrite\n"
 msgstr ""
 
-#: misc/mke2fs.c:3332
+#: misc/mke2fs.c:3336
 #, c-format
 msgid "while zeroing block %llu at end of filesystem"
 msgstr ""
 
-#: misc/mke2fs.c:3345
+#: misc/mke2fs.c:3349
 msgid "while reserving blocks for online resize"
 msgstr ""
 
-#: misc/mke2fs.c:3357 misc/tune2fs.c:1567
+#: misc/mke2fs.c:3361 misc/tune2fs.c:1567
 msgid "journal"
 msgstr ""
 
-#: misc/mke2fs.c:3369
+#: misc/mke2fs.c:3373
 #, c-format
 msgid "Adding journal to device %s: "
 msgstr ""
 
-#: misc/mke2fs.c:3376
+#: misc/mke2fs.c:3380
 #, c-format
 msgid ""
 "\n"
 "\twhile trying to add journal to device %s"
 msgstr ""
 
-#: misc/mke2fs.c:3381 misc/mke2fs.c:3411 misc/mke2fs.c:3453
-#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1596 misc/tune2fs.c:1615
+#: misc/mke2fs.c:3385 misc/mke2fs.c:3415 misc/mke2fs.c:3457
+#: misc/mk_hugefiles.c:602 misc/tune2fs.c:1596 misc/tune2fs.c:1615
 msgid "done\n"
 msgstr ""
 
-#: misc/mke2fs.c:3388
+#: misc/mke2fs.c:3392
 msgid "Skipping journal creation in super-only mode\n"
 msgstr ""
 
-#: misc/mke2fs.c:3398
+#: misc/mke2fs.c:3402
 #, c-format
 msgid "Creating journal (%u blocks): "
 msgstr ""
 
-#: misc/mke2fs.c:3407
+#: misc/mke2fs.c:3411
 msgid ""
 "\n"
 "\twhile trying to create journal"
 msgstr ""
 
-#: misc/mke2fs.c:3419 misc/tune2fs.c:1170
+#: misc/mke2fs.c:3423 misc/tune2fs.c:1170
 msgid ""
 "\n"
 "Error while enabling multiple mount protection feature."
 msgstr ""
 
-#: misc/mke2fs.c:3424
+#: misc/mke2fs.c:3428
 #, c-format
 msgid "Multiple mount protection is enabled with update interval %d seconds.\n"
 msgstr ""
 
-#: misc/mke2fs.c:3444
+#: misc/mke2fs.c:3448
 msgid "Copying files into the device: "
 msgstr ""
 
-#: misc/mke2fs.c:3450
+#: misc/mke2fs.c:3454
 msgid "while populating file system"
 msgstr ""
 
-#: misc/mke2fs.c:3457
+#: misc/mke2fs.c:3461
 msgid "Writing superblocks and filesystem accounting information: "
 msgstr ""
 
-#: misc/mke2fs.c:3464
+#: misc/mke2fs.c:3468
 msgid "while writing out and closing file system"
 msgstr ""
 
-#: misc/mke2fs.c:3467
+#: misc/mke2fs.c:3471
 msgid ""
 "done\n"
 "\n"
@@ -5978,27 +5973,27 @@
 msgid "while zeroing block %llu for hugefile"
 msgstr ""
 
-#: misc/mk_hugefiles.c:515
+#: misc/mk_hugefiles.c:516
 #, c-format
 msgid ""
 "Partition offset of %llu (%uk) blocks not compatible with cluster size %u.\n"
 msgstr ""
 
-#: misc/mk_hugefiles.c:583
+#: misc/mk_hugefiles.c:584
 msgid "Huge files will be zero'ed\n"
 msgstr ""
 
-#: misc/mk_hugefiles.c:584
+#: misc/mk_hugefiles.c:585
 #, c-format
 msgid "Creating %lu huge file(s) "
 msgstr ""
 
-#: misc/mk_hugefiles.c:586
+#: misc/mk_hugefiles.c:587
 #, c-format
 msgid "with %llu blocks each"
 msgstr ""
 
-#: misc/mk_hugefiles.c:595
+#: misc/mk_hugefiles.c:597
 #, c-format
 msgid "while creating huge file %lu"
 msgstr ""
@@ -6072,19 +6067,19 @@
 msgid "while trying to open external journal"
 msgstr ""
 
-#: misc/tune2fs.c:292 misc/tune2fs.c:2883
+#: misc/tune2fs.c:292 misc/tune2fs.c:2888
 #, c-format
 msgid "%s is not a journal device.\n"
 msgstr ""
 
-#: misc/tune2fs.c:301 misc/tune2fs.c:2892
+#: misc/tune2fs.c:301 misc/tune2fs.c:2897
 #, c-format
 msgid ""
 "Journal superblock is corrupted, nr_users\n"
 "is too high (%d).\n"
 msgstr ""
 
-#: misc/tune2fs.c:308 misc/tune2fs.c:2899
+#: misc/tune2fs.c:308 misc/tune2fs.c:2904
 msgid "Filesystem's UUID not found on journal device.\n"
 msgstr ""
 
@@ -6284,7 +6279,7 @@
 "Warning: '^quota' option overrides '-Q'arguments.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1481 misc/tune2fs.c:2233
+#: misc/tune2fs.c:1481 misc/tune2fs.c:2238
 msgid ""
 "The casefold feature may only be enabled when the filesystem is unmounted.\n"
 msgstr ""
@@ -6380,60 +6375,60 @@
 msgid "Couldn't parse date/time specifier: %s"
 msgstr ""
 
-#: misc/tune2fs.c:1832 misc/tune2fs.c:1845
+#: misc/tune2fs.c:1839 misc/tune2fs.c:1850
 #, c-format
 msgid "bad mounts count - %s"
 msgstr ""
 
-#: misc/tune2fs.c:1888
+#: misc/tune2fs.c:1893
 #, c-format
 msgid "bad gid/group name - %s"
 msgstr ""
 
-#: misc/tune2fs.c:1921
+#: misc/tune2fs.c:1926
 #, c-format
 msgid "bad interval - %s"
 msgstr ""
 
-#: misc/tune2fs.c:1950
+#: misc/tune2fs.c:1955
 #, c-format
 msgid "bad reserved block ratio - %s"
 msgstr ""
 
-#: misc/tune2fs.c:1965
+#: misc/tune2fs.c:1970
 msgid "-o may only be specified once"
 msgstr ""
 
-#: misc/tune2fs.c:1974
+#: misc/tune2fs.c:1979
 msgid "-O may only be specified once"
 msgstr ""
 
-#: misc/tune2fs.c:1991
+#: misc/tune2fs.c:1996
 #, c-format
 msgid "bad reserved blocks count - %s"
 msgstr ""
 
-#: misc/tune2fs.c:2020
+#: misc/tune2fs.c:2025
 #, c-format
 msgid "bad uid/user name - %s"
 msgstr ""
 
-#: misc/tune2fs.c:2037
+#: misc/tune2fs.c:2042
 #, c-format
 msgid "bad inode size - %s"
 msgstr ""
 
-#: misc/tune2fs.c:2044
+#: misc/tune2fs.c:2049
 #, c-format
 msgid "Inode size must be a power of two- %s"
 msgstr ""
 
-#: misc/tune2fs.c:2144
+#: misc/tune2fs.c:2149
 #, c-format
 msgid "mmp_update_interval too big: %lu\n"
 msgstr ""
 
-#: misc/tune2fs.c:2149
+#: misc/tune2fs.c:2154
 #, c-format
 msgid "Setting multiple mount protection update interval to %lu second\n"
 msgid_plural ""
@@ -6441,52 +6436,52 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: misc/tune2fs.c:2158
+#: misc/tune2fs.c:2163
 #, c-format
 msgid "Setting filesystem error flag to force fsck.\n"
 msgstr ""
 
-#: misc/tune2fs.c:2176
+#: misc/tune2fs.c:2181
 #, c-format
 msgid "Invalid RAID stride: %s\n"
 msgstr ""
 
-#: misc/tune2fs.c:2191
+#: misc/tune2fs.c:2196
 #, c-format
 msgid "Invalid RAID stripe-width: %s\n"
 msgstr ""
 
-#: misc/tune2fs.c:2206
+#: misc/tune2fs.c:2211
 #, c-format
 msgid "Invalid hash algorithm: %s\n"
 msgstr ""
 
-#: misc/tune2fs.c:2212
+#: misc/tune2fs.c:2217
 #, c-format
 msgid "Setting default hash algorithm to %s (%d)\n"
 msgstr ""
 
-#: misc/tune2fs.c:2239
+#: misc/tune2fs.c:2244
 #, c-format
 msgid "Cannot alter existing encoding\n"
 msgstr ""
 
-#: misc/tune2fs.c:2245
+#: misc/tune2fs.c:2250
 #, c-format
 msgid "Invalid encoding: %s\n"
 msgstr ""
 
-#: misc/tune2fs.c:2251
+#: misc/tune2fs.c:2256
 #, c-format
 msgid "Setting encoding to '%s'\n"
 msgstr ""
 
-#: misc/tune2fs.c:2275
+#: misc/tune2fs.c:2280
 #, c-format
 msgid "Setting encoding_flags to '%s'\n"
 msgstr ""
 
-#: misc/tune2fs.c:2285
+#: misc/tune2fs.c:2290
 msgid ""
 "\n"
 "Bad options specified.\n"
@@ -6508,72 +6503,72 @@
 "\tencoding_flags=<flags>\n"
 msgstr ""
 
-#: misc/tune2fs.c:2701
+#: misc/tune2fs.c:2706
 msgid "Failed to read inode bitmap\n"
 msgstr ""
 
-#: misc/tune2fs.c:2706
+#: misc/tune2fs.c:2711
 msgid "Failed to read block bitmap\n"
 msgstr ""
 
-#: misc/tune2fs.c:2723 resize/resize2fs.c:1278
+#: misc/tune2fs.c:2728 resize/resize2fs.c:1279
 msgid "blocks to be moved"
 msgstr ""
 
-#: misc/tune2fs.c:2726
+#: misc/tune2fs.c:2731
 msgid "Failed to allocate block bitmap when increasing inode size\n"
 msgstr ""
 
-#: misc/tune2fs.c:2732
+#: misc/tune2fs.c:2737
 msgid "Not enough space to increase inode size \n"
 msgstr ""
 
-#: misc/tune2fs.c:2737
+#: misc/tune2fs.c:2742
 msgid "Failed to relocate blocks during inode resize \n"
 msgstr ""
 
-#: misc/tune2fs.c:2769
+#: misc/tune2fs.c:2774
 msgid ""
 "Error in resizing the inode size.\n"
 "Run e2undo to undo the file system changes. \n"
 msgstr ""
 
-#: misc/tune2fs.c:2980
+#: misc/tune2fs.c:2985
 msgid ""
 "If you are sure the filesystem is not in use on any node, run:\n"
 "'tune2fs -f -E clear_mmp {device}'\n"
 msgstr ""
 
-#: misc/tune2fs.c:2987
+#: misc/tune2fs.c:2992
 #, c-format
 msgid ""
 "MMP block magic is bad. Try to fix it by running:\n"
 "'e2fsck -f %s'\n"
 msgstr ""
 
-#: misc/tune2fs.c:2999
+#: misc/tune2fs.c:3004
 msgid "Cannot modify a journal device.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3012
+#: misc/tune2fs.c:3017
 #, c-format
 msgid "The inode size is already %lu\n"
 msgstr ""
 
-#: misc/tune2fs.c:3019
+#: misc/tune2fs.c:3024
 msgid "Shrinking inode size is not supported\n"
 msgstr ""
 
-#: misc/tune2fs.c:3024
+#: misc/tune2fs.c:3029
 #, c-format
 msgid "Invalid inode size %lu (max %d)\n"
 msgstr ""
 
-#: misc/tune2fs.c:3030
+#: misc/tune2fs.c:3035
 msgid "Resizing inodes could take some time."
 msgstr ""
 
-#: misc/tune2fs.c:3079
+#: misc/tune2fs.c:3084
 #, c-format
 msgid ""
 "Warning: The journal is dirty. You may wish to replay the journal like:\n"
@@ -6584,159 +6579,159 @@
 "by journal recovery.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3088
+#: misc/tune2fs.c:3093
 #, c-format
 msgid "Recovering journal.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3109
+#: misc/tune2fs.c:3117
 #, c-format
 msgid "Setting maximal mount count to %d\n"
 msgstr ""
 
-#: misc/tune2fs.c:3115
+#: misc/tune2fs.c:3123
 #, c-format
 msgid "Setting current mount count to %d\n"
 msgstr ""
 
-#: misc/tune2fs.c:3120
+#: misc/tune2fs.c:3128
 #, c-format
 msgid "Setting error behavior to %d\n"
 msgstr ""
 
-#: misc/tune2fs.c:3125
+#: misc/tune2fs.c:3133
 #, c-format
 msgid "Setting reserved blocks gid to %lu\n"
 msgstr ""
 
-#: misc/tune2fs.c:3130
+#: misc/tune2fs.c:3138
 #, c-format
 msgid "interval between checks is too big (%lu)"
 msgstr ""
 
-#: misc/tune2fs.c:3137
+#: misc/tune2fs.c:3145
 #, c-format
 msgid "Setting interval between checks to %lu seconds\n"
 msgstr ""
 
-#: misc/tune2fs.c:3144
+#: misc/tune2fs.c:3152
 #, c-format
 msgid "Setting reserved blocks percentage to %g%% (%llu blocks)\n"
 msgstr ""
 
-#: misc/tune2fs.c:3150
+#: misc/tune2fs.c:3159
 #, c-format
 msgid "reserved blocks count is too big (%llu)"
 msgstr ""
 
-#: misc/tune2fs.c:3157
+#: misc/tune2fs.c:3166
 #, c-format
 msgid "Setting reserved blocks count to %llu\n"
 msgstr ""
 
-#: misc/tune2fs.c:3162
+#: misc/tune2fs.c:3171
 msgid ""
 "\n"
 "The filesystem already has sparse superblocks.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3165
+#: misc/tune2fs.c:3174
 msgid ""
 "\n"
 "Setting the sparse superblock flag not supported\n"
 "for filesystems with the meta_bg feature enabled.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3175
+#: misc/tune2fs.c:3184
 #, c-format
 msgid ""
 "\n"
 "Sparse superblock flag set.  %s"
 msgstr ""
 
-#: misc/tune2fs.c:3180
+#: misc/tune2fs.c:3189
 msgid ""
 "\n"
 "Clearing the sparse superblock flag not supported.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3188
+#: misc/tune2fs.c:3197
 #, c-format
 msgid "Setting time filesystem last checked to %s\n"
 msgstr ""
 
-#: misc/tune2fs.c:3194
+#: misc/tune2fs.c:3203
 #, c-format
 msgid "Setting reserved blocks uid to %lu\n"
 msgstr ""
 
-#: misc/tune2fs.c:3226
+#: misc/tune2fs.c:3235
 msgid "Error in using clear_mmp. It must be used with -f\n"
 msgstr ""
 
-#: misc/tune2fs.c:3244
+#: misc/tune2fs.c:3253
 msgid ""
 "The quota feature may only be changed when the filesystem is unmounted.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3261
+#: misc/tune2fs.c:3270
 msgid ""
 "Cannot change the UUID of this filesystem because it has the stable_inodes "
 "feature flag.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3271
+#: misc/tune2fs.c:3280
 msgid "Setting the UUID on this filesystem could take some time."
 msgstr ""
 
-#: misc/tune2fs.c:3288
+#: misc/tune2fs.c:3297
 msgid "The UUID may only be changed when the filesystem is unmounted.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3291
+#: misc/tune2fs.c:3300
 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:3322
+#: misc/tune2fs.c:3331
 msgid "Invalid UUID format\n"
 msgstr ""
 
-#: misc/tune2fs.c:3338
+#: misc/tune2fs.c:3347
 msgid "Need to update journal superblock.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3360
+#: misc/tune2fs.c:3369
 msgid "The inode size may only be changed when the filesystem is unmounted.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3367
+#: misc/tune2fs.c:3376
 msgid ""
 "Changing the inode size not supported for filesystems with the flex_bg\n"
 "feature enabled.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3385
+#: misc/tune2fs.c:3394
 #, c-format
 msgid "Setting inode size %lu\n"
 msgstr ""
 
-#: misc/tune2fs.c:3389
+#: misc/tune2fs.c:3398
 msgid "Failed to change inode size\n"
 msgstr ""
 
-#: misc/tune2fs.c:3403
+#: misc/tune2fs.c:3412
 #, c-format
 msgid "Setting stride size to %d\n"
 msgstr ""
 
-#: misc/tune2fs.c:3408
+#: misc/tune2fs.c:3417
 #, c-format
 msgid "Setting stripe width to %d\n"
 msgstr ""
 
-#: misc/tune2fs.c:3415
+#: misc/tune2fs.c:3424
 #, c-format
 msgid "Setting extended default mount options to '%s'\n"
 msgstr ""
@@ -7049,11 +7044,11 @@
 msgid "New size smaller than minimum (%llu)\n"
 msgstr ""
 
-#: resize/main.c:554
+#: resize/main.c:555
 msgid "Invalid stride length"
 msgstr ""
 
-#: resize/main.c:578
+#: resize/main.c:579
 #, c-format
 msgid ""
 "The containing partition (or device) is only %llu (%dk) blocks.\n"
@@ -7061,89 +7056,89 @@
 "\n"
 msgstr ""
 
-#: resize/main.c:585
+#: resize/main.c:586
 #, c-format
 msgid "Cannot set and unset 64bit feature.\n"
 msgstr ""
 
-#: resize/main.c:589
+#: resize/main.c:590
 #, c-format
 msgid ""
 "Cannot change the 64bit feature on a filesystem that is larger than 2^32 "
 "blocks.\n"
 msgstr ""
 
-#: resize/main.c:595
+#: resize/main.c:596
 #, c-format
 msgid "Cannot change the 64bit feature while the filesystem is mounted.\n"
 msgstr ""
 
-#: resize/main.c:601
+#: resize/main.c:602
 #, c-format
 msgid ""
 "Please enable the extents feature with tune2fs before enabling the 64bit "
 "feature.\n"
 msgstr ""
 
-#: resize/main.c:607
+#: resize/main.c:608
 #, c-format
 msgid ""
 "The filesystem is already %llu (%dk) blocks long.  Nothing to do!\n"
 "\n"
 msgstr ""
 
-#: resize/main.c:614
+#: resize/main.c:616
 #, c-format
 msgid "The filesystem is already 64-bit.\n"
 msgstr ""
 
-#: resize/main.c:619
+#: resize/main.c:621
 #, c-format
 msgid "The filesystem is already 32-bit.\n"
 msgstr ""
 
-#: resize/main.c:624
+#: resize/main.c:626
 #, c-format
 msgid ""
 "Cannot shrink this filesystem because it has the stable_inodes feature "
 "flag.\n"
 msgstr ""
 
-#: resize/main.c:633
+#: resize/main.c:635
 #, c-format
 msgid "Converting the filesystem to 64-bit.\n"
 msgstr ""
 
-#: resize/main.c:635
+#: resize/main.c:637
 #, c-format
 msgid "Converting the filesystem to 32-bit.\n"
 msgstr ""
 
-#: resize/main.c:637
+#: resize/main.c:639
 #, c-format
 msgid "Resizing the filesystem on %s to %llu (%dk) blocks.\n"
 msgstr ""
 
-#: resize/main.c:646
+#: resize/main.c:649
 #, c-format
 msgid "while trying to resize %s"
 msgstr ""
 
-#: resize/main.c:649
+#: resize/main.c:652
 #, c-format
 msgid ""
 "Please run 'e2fsck -fy %s' to fix the filesystem\n"
 "after the aborted resize operation.\n"
 msgstr ""
 
-#: resize/main.c:655
+#: resize/main.c:658
 #, c-format
 msgid ""
 "The filesystem on %s is now %llu (%dk) blocks long.\n"
 "\n"
 msgstr ""
 
-#: resize/main.c:670
+#: resize/main.c:673
 #, c-format
 msgid "while trying to truncate %s"
 msgstr ""
@@ -7200,16 +7195,16 @@
 msgid "Performing an on-line resize of %s to %llu (%dk) blocks.\n"
 msgstr ""
 
-#: resize/online.c:230
+#: resize/online.c:231
 msgid "While trying to extend the last group"
 msgstr ""
 
-#: resize/online.c:277
+#: resize/online.c:278
 #, c-format
 msgid "While trying to add group #%d"
 msgstr ""
 
-#: resize/online.c:288
+#: resize/online.c:289
 #, c-format
 msgid ""
 "Filesystem at %s is mounted on %s, and on-line resizing is not supported on "
@@ -7225,28 +7220,28 @@
 msgid "reserved blocks"
 msgstr ""
 
-#: resize/resize2fs.c:1283
+#: resize/resize2fs.c:1284
 msgid "meta-data blocks"
 msgstr ""
 
-#: resize/resize2fs.c:1387 resize/resize2fs.c:2422
+#: resize/resize2fs.c:1388 resize/resize2fs.c:2430
 msgid "new meta blocks"
 msgstr ""
 
-#: resize/resize2fs.c:2645
+#: resize/resize2fs.c:2654
 msgid "Should never happen!  No sb in last super_sparse bg?\n"
 msgstr ""
 
-#: resize/resize2fs.c:2650
+#: resize/resize2fs.c:2659
 msgid "Should never happen!  Unexpected old_desc in super_sparse bg?\n"
 msgstr ""
 
-#: resize/resize2fs.c:2723
+#: resize/resize2fs.c:2732
 msgid "Should never happen: resize inode corrupt!\n"
 msgstr ""
 
 #: lib/ext2fs/ext2_err.c:11
-msgid "EXT2FS Library version 1.46.0"
+msgid "EXT2FS Library version 1.46.2"
 msgstr ""
 
 #: lib/ext2fs/ext2_err.c:12
@@ -7965,6 +7960,10 @@
 msgid "Group descriptors not loaded"
 msgstr ""
 
+#: lib/ext2fs/ext2_err.c:191
+msgid "The internal ext2_filsys data structure appears to be corrupted"
+msgstr ""
+
 #: lib/support/prof_err.c:11
 msgid "Profile version 0.0"
 msgstr ""
diff --git a/po/es.po b/po/es.po
index 3504566..5e3a330 100644
--- a/po/es.po
+++ b/po/es.po
@@ -4,7 +4,7 @@
 #
 # Max de Mendizábal <max@upn.mx>, 2003, 2005.
 # Benno Schulenberg <benno@vertaalt.nl>, 2008, 2014.
-# Antonio Ceballos <aceballos@gmail.com>, 2014, 2015, 2016, 2017, 2018, 2019.
+# Antonio Ceballos <aceballos@gmail.com>, 2014, 2015, 2016, 2017, 2018, 2019, 2021.
 #
 # Comienzo de un vocabulario (lista de palabras usadas aquí):
 # block --> bloque
@@ -95,10 +95,10 @@
 #.
 msgid ""
 msgstr ""
-"Project-Id-Version: e2fsprogs-1.45.3\n"
+"Project-Id-Version: e2fsprogs-1.46.0\n"
 "Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
-"POT-Creation-Date: 2019-07-14 20:56-0400\n"
-"PO-Revision-Date: 2019-07-23 19:08+0200\n"
+"POT-Creation-Date: 2021-01-28 13:42-0500\n"
+"PO-Revision-Date: 2021-02-20 12:02+0100\n"
 "Last-Translator: Antonio Ceballos <aceballos@gmail.com>\n"
 "Language-Team: Spanish <es@tp.org.es>\n"
 "Language: es\n"
@@ -138,9 +138,9 @@
 #: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1571
 #: e2fsck/unix.c:1685 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:1430
+#: misc/dumpe2fs.c:692 misc/dumpe2fs.c:696 misc/e2image.c:1430
 #: misc/e2image.c:1627 misc/e2image.c:1648 misc/mke2fs.c:236
-#: misc/tune2fs.c:2796 misc/tune2fs.c:2895 resize/main.c:414
+#: misc/tune2fs.c:2881 misc/tune2fs.c:2980 resize/main.c:416
 #, c-format
 msgid "while trying to open %s"
 msgstr "mientras se intentaba abrir %s"
@@ -165,7 +165,7 @@
 msgid "Warning: illegal block %u found in bad block inode.  Cleared.\n"
 msgstr "Atención: se encontró un bloque no válido %u en el nodo-i de bloques dañados. Limpiado.\n"
 
-#: e2fsck/dirinfo.c:331
+#: e2fsck/dirinfo.c:332
 msgid "while freeing dir_info tdb file"
 msgstr "mientras se liberaba el fichero tdb dir_info"
 
@@ -197,15 +197,15 @@
 msgid "Error writing block %lu (%s).  "
 msgstr "Error al escribir el bloque %lu (%s).  "
 
-#: e2fsck/emptydir.c:57
+#: e2fsck/emptydir.c:56
 msgid "empty dirblocks"
 msgstr "bloques de directorio vacíos"
 
-#: e2fsck/emptydir.c:62
+#: e2fsck/emptydir.c:61
 msgid "empty dir map"
 msgstr "mapa de directorios vacío"
 
-#: e2fsck/emptydir.c:98
+#: e2fsck/emptydir.c:97
 #, c-format
 msgid "Empty directory block %u (#%d) in inode %u\n"
 msgstr "El bloque del directorio %u (#%d) está vacío en el nodo-i %u\n"
@@ -215,12 +215,12 @@
 msgid "%s: %s filename nblocks blocksize\n"
 msgstr "%s: %s fichero númerodebloques tamañodelbloque\n"
 
-#: e2fsck/extend.c:44
+#: e2fsck/extend.c:45
 #, c-format
 msgid "Illegal number of blocks!\n"
 msgstr "¡Número inválido de bloques!\n"
 
-#: e2fsck/extend.c:50
+#: e2fsck/extend.c:51
 #, c-format
 msgid "Couldn't allocate block buffer (size=%d)\n"
 msgstr "No se puede reservar un búfer de bloques (tamaño=%d)\n"
@@ -249,7 +249,7 @@
 msgid "while opening %s for flushing"
 msgstr "mientras se abría %s para su vaciado"
 
-#: e2fsck/iscan.c:86 e2fsck/unix.c:1088 resize/main.c:383
+#: e2fsck/iscan.c:86 e2fsck/unix.c:1088 resize/main.c:385
 #, c-format
 msgid "while trying to flush %s"
 msgstr "mientras se intentaba vaciar %s"
@@ -291,7 +291,7 @@
 msgid "%s: journal too short\n"
 msgstr "%s: el fichero de transacciones es demasiado corto\n"
 
-#: e2fsck/journal.c:972 misc/fuse2fs.c:3792
+#: e2fsck/journal.c:972 misc/fuse2fs.c:3787
 #, c-format
 msgid "%s: recovering journal\n"
 msgstr "%s: recuperando el fichero de transacciones\n"
@@ -543,113 +543,113 @@
 msgid "multiply claimed inode map"
 msgstr "mapa de nodos-i reclamados en múltiples ocasiones"
 
-#: e2fsck/pass1b.c:672 e2fsck/pass1b.c:826
+#: e2fsck/pass1b.c:672 e2fsck/pass1b.c:830
 #, c-format
 msgid "internal error: can't find dup_blk for %llu\n"
 msgstr "error interno: no se ha encontrado el dup_blk para %llu\n"
 
-#: e2fsck/pass1b.c:952
+#: e2fsck/pass1b.c:956
 msgid "returned from clone_file_block"
 msgstr "regresado del clone_file_block"
 
-#: e2fsck/pass1b.c:976
+#: e2fsck/pass1b.c:980
 #, c-format
 msgid "internal error: couldn't lookup EA block record for %llu"
 msgstr "Error interno: no se puede encontrar el registro de bloque EA para %llu"
 
-#: e2fsck/pass1b.c:988
+#: e2fsck/pass1b.c:992
 #, c-format
 msgid "internal error: couldn't lookup EA inode record for %u"
 msgstr "Error interno: no se puede encontrar el registro de bloque EA %u"
 
-#: e2fsck/pass1.c:357
+#: e2fsck/pass1.c:358
 #, c-format
 msgid "while hashing entry with e_value_inum = %u"
 msgstr "mientras se hace «hash» de la entrada con e_value_inum = %u"
 
-#: e2fsck/pass1.c:775 e2fsck/pass2.c:1007
+#: e2fsck/pass1.c:776 e2fsck/pass2.c:1018
 msgid "reading directory block"
 msgstr "leyendo bloque de directorio"
 
-#: e2fsck/pass1.c:1224
-msgid "in-use inode map"
-msgstr "mapa de nodos-i usados"
-
-#: e2fsck/pass1.c:1235
-msgid "directory inode map"
-msgstr "mapa de nodos-i de directorio"
-
-#: e2fsck/pass1.c:1245
-msgid "regular file inode map"
-msgstr "mapa de nodos-i de ficheros normales"
-
-#: e2fsck/pass1.c:1254 misc/e2image.c:1282
-msgid "in-use block map"
-msgstr "mapa de bloques usados"
-
-#: e2fsck/pass1.c:1263
-msgid "metadata block map"
-msgstr "mapa de bloques de metadatos"
-
-#: e2fsck/pass1.c:1325
-msgid "opening inode scan"
-msgstr "iniciando la exploración de los nodos-i"
-
-#: e2fsck/pass1.c:1363
+#: e2fsck/pass1.c:1175
 msgid "getting next inode from scan"
 msgstr "obteniendo el siguiente nodo-i para examinar"
 
-#: e2fsck/pass1.c:2067
+#: e2fsck/pass1.c:1227
+msgid "in-use inode map"
+msgstr "mapa de nodos-i usados"
+
+#: e2fsck/pass1.c:1238
+msgid "directory inode map"
+msgstr "mapa de nodos-i de directorio"
+
+#: e2fsck/pass1.c:1248
+msgid "regular file inode map"
+msgstr "mapa de nodos-i de ficheros normales"
+
+#: e2fsck/pass1.c:1257 misc/e2image.c:1282
+msgid "in-use block map"
+msgstr "mapa de bloques usados"
+
+#: e2fsck/pass1.c:1266
+msgid "metadata block map"
+msgstr "mapa de bloques de metadatos"
+
+#: e2fsck/pass1.c:1328
+msgid "opening inode scan"
+msgstr "iniciando la exploración de los nodos-i"
+
+#: e2fsck/pass1.c:2083
 msgid "Pass 1"
 msgstr "Paso 1"
 
-#: e2fsck/pass1.c:2128
+#: e2fsck/pass1.c:2144
 #, c-format
 msgid "reading indirect blocks of inode %u"
 msgstr "leyendo bloques indirectos del nodo-i %u"
 
-#: e2fsck/pass1.c:2179
+#: e2fsck/pass1.c:2195
 msgid "bad inode map"
 msgstr "mapa de nodos-i dañados"
 
-#: e2fsck/pass1.c:2219
+#: e2fsck/pass1.c:2253
 msgid "inode in bad block map"
 msgstr "el nodo-i está en el mapa de bloques dañados"
 
-#: e2fsck/pass1.c:2239
+#: e2fsck/pass1.c:2273
 msgid "imagic inode map"
 msgstr "mapa de nodos-i con 'imagic'"
 
-#: e2fsck/pass1.c:2270
+#: e2fsck/pass1.c:2304
 msgid "multiply claimed block map"
 msgstr "mapa de bloques reclamados en múltiples ocasiones"
 
-#: e2fsck/pass1.c:2395
+#: e2fsck/pass1.c:2429
 msgid "ext attr block map"
 msgstr "mapa de bloques de atributos extendidos"
 
-#: e2fsck/pass1.c:3640
+#: e2fsck/pass1.c:3685
 #, c-format
 msgid "%6lu(%c): expecting %6lu got phys %6lu (blkcnt %lld)\n"
 msgstr "%6lu(%c): se esperaba %6lu, pero se han obtenido bloques físicos %6lu (número de bloques %lld)\n"
 
-#: e2fsck/pass1.c:4060
+#: e2fsck/pass1.c:4105
 msgid "block bitmap"
 msgstr "mapa de bits de bloques"
 
-#: e2fsck/pass1.c:4066
+#: e2fsck/pass1.c:4111
 msgid "inode bitmap"
 msgstr "mapa de bits de nodos-i"
 
-#: e2fsck/pass1.c:4072
+#: e2fsck/pass1.c:4117
 msgid "inode table"
 msgstr "tabla de nodos-i"
 
-#: e2fsck/pass2.c:307
+#: e2fsck/pass2.c:312
 msgid "Pass 2"
 msgstr "Paso 2"
 
-#: e2fsck/pass2.c:1079 e2fsck/pass2.c:1246
+#: e2fsck/pass2.c:1091 e2fsck/pass2.c:1266
 msgid "Can not continue."
 msgstr "No se puede continuar."
 
@@ -665,11 +665,11 @@
 msgid "Pass 3"
 msgstr "Paso 3"
 
-#: e2fsck/pass3.c:344
+#: e2fsck/pass3.c:350
 msgid "inode loop detection bitmap"
 msgstr "mapa de bits de detección de bucles de nodos-i"
 
-#: e2fsck/pass4.c:277
+#: e2fsck/pass4.c:289
 msgid "Pass 4"
 msgstr "Paso 4"
 
@@ -685,7 +685,7 @@
 msgid "check_block_bitmap_checksum: Memory allocation error"
 msgstr "check_block_bitmap_checksum: Error de asignación de memoria"
 
-#: e2fsck/problem.c:52
+#: e2fsck/problem.c:53
 msgid "(no prompt)"
 msgstr "(sin cursor)"
 
@@ -693,183 +693,191 @@
 # mejor en forma impersonal. Fíjate que todos los demás verbos que siguen
 # están en infinitivo.
 # Cierto. mm
-#: e2fsck/problem.c:53
+#: e2fsck/problem.c:54
 msgid "Fix"
 msgstr "Arreglar"
 
-#: e2fsck/problem.c:54
+#: e2fsck/problem.c:55
 msgid "Clear"
 msgstr "Borrar"
 
-#: e2fsck/problem.c:55
+#: e2fsck/problem.c:56
 msgid "Relocate"
 msgstr "Reubicar"
 
-#: e2fsck/problem.c:56
+#: e2fsck/problem.c:57
 msgid "Allocate"
 msgstr "Reservar"
 
-#: e2fsck/problem.c:57
+#: e2fsck/problem.c:58
 msgid "Expand"
 msgstr "Expandir"
 
-#: e2fsck/problem.c:58
+#: e2fsck/problem.c:59
 msgid "Connect to /lost+found"
 msgstr "Conectar a /lost+found"
 
-#: e2fsck/problem.c:59
+#: e2fsck/problem.c:60
 msgid "Create"
 msgstr "Crear"
 
-#: e2fsck/problem.c:60
+#: e2fsck/problem.c:61
 msgid "Salvage"
 msgstr "Recuperar"
 
-#: e2fsck/problem.c:61
+#: e2fsck/problem.c:62
 msgid "Truncate"
 msgstr "Truncar"
 
-#: e2fsck/problem.c:62
+#: e2fsck/problem.c:63
 msgid "Clear inode"
 msgstr "Borrar nodo-i"
 
-#: e2fsck/problem.c:63
+#: e2fsck/problem.c:64
 msgid "Abort"
 msgstr "Interrumpir"
 
-#: e2fsck/problem.c:64
+#: e2fsck/problem.c:65
 msgid "Split"
 msgstr "Dividir"
 
-#: e2fsck/problem.c:65
+#: e2fsck/problem.c:66
 msgid "Continue"
 msgstr "Continuar"
 
-#: e2fsck/problem.c:66
+#: e2fsck/problem.c:67
 msgid "Clone multiply-claimed blocks"
 msgstr "Clonar los bloques reclamados en múltiples ocasiones"
 
-#: e2fsck/problem.c:67
+#: e2fsck/problem.c:68
 msgid "Delete file"
 msgstr "Borrar fichero"
 
-#: e2fsck/problem.c:68
+#: e2fsck/problem.c:69
 msgid "Suppress messages"
 msgstr "Eliminar mensajes"
 
-#: e2fsck/problem.c:69
+#: e2fsck/problem.c:70
 msgid "Unlink"
 msgstr "Desvincular"
 
-#: e2fsck/problem.c:70
+#: e2fsck/problem.c:71
 msgid "Clear HTree index"
 msgstr "Borrar el índice del árbol-H"
 
-#: e2fsck/problem.c:71
+#: e2fsck/problem.c:72
 msgid "Recreate"
 msgstr "Recrear"
 
-#: e2fsck/problem.c:72
+#: e2fsck/problem.c:73
 msgid "Optimize"
 msgstr "Optimizar"
 
-#: e2fsck/problem.c:81
+#: e2fsck/problem.c:74
+msgid "Clear flag"
+msgstr "Borrar bandera"
+
+#: e2fsck/problem.c:83
 msgid "(NONE)"
 msgstr "(NINGUNO)"
 
-#: e2fsck/problem.c:82
+#: e2fsck/problem.c:84
 msgid "FIXED"
 msgstr "ARREGLADO"
 
-#: e2fsck/problem.c:83
+#: e2fsck/problem.c:85
 msgid "CLEARED"
 msgstr "BORRADO"
 
-#: e2fsck/problem.c:84
+#: e2fsck/problem.c:86
 msgid "RELOCATED"
 msgstr "REUBICADO"
 
-#: e2fsck/problem.c:85
+#: e2fsck/problem.c:87
 msgid "ALLOCATED"
 msgstr "RESERVADO"
 
-#: e2fsck/problem.c:86
+#: e2fsck/problem.c:88
 msgid "EXPANDED"
 msgstr "EXPANDIDO"
 
-#: e2fsck/problem.c:87
+#: e2fsck/problem.c:89
 msgid "RECONNECTED"
 msgstr "RECONECTADO"
 
-#: e2fsck/problem.c:88
+#: e2fsck/problem.c:90
 msgid "CREATED"
 msgstr "CREADO"
 
-#: e2fsck/problem.c:89
+#: e2fsck/problem.c:91
 msgid "SALVAGED"
 msgstr "RECUPERADO"
 
-#: e2fsck/problem.c:90
+#: e2fsck/problem.c:92
 msgid "TRUNCATED"
 msgstr "TRUNCADO"
 
-#: e2fsck/problem.c:91
+#: e2fsck/problem.c:93
 msgid "INODE CLEARED"
 msgstr "NODO-I BORRADO"
 
-#: e2fsck/problem.c:92
+#: e2fsck/problem.c:94
 msgid "ABORTED"
 msgstr "INTERRUMPIDO"
 
-#: e2fsck/problem.c:93
+#: e2fsck/problem.c:95
 msgid "SPLIT"
 msgstr "DIVIDIDO"
 
-#: e2fsck/problem.c:94
+#: e2fsck/problem.c:96
 msgid "CONTINUING"
 msgstr "CONTINUANDO"
 
-#: e2fsck/problem.c:95
+#: e2fsck/problem.c:97
 msgid "MULTIPLY-CLAIMED BLOCKS CLONED"
 msgstr "SE CLONARON LOS BLOQUES RECLAMADOS EN MÚLTIPLES OCASIONES"
 
-#: e2fsck/problem.c:96
+#: e2fsck/problem.c:98
 msgid "FILE DELETED"
 msgstr "FICHERO BORRADO"
 
-#: e2fsck/problem.c:97
+#: e2fsck/problem.c:99
 msgid "SUPPRESSED"
 msgstr "SUPRIMIDO"
 
-#: e2fsck/problem.c:98
+#: e2fsck/problem.c:100
 msgid "UNLINKED"
 msgstr "DESVINCULADO"
 
-#: e2fsck/problem.c:99
+#: e2fsck/problem.c:101
 msgid "HTREE INDEX CLEARED"
 msgstr "SE HA LIMPIADO EL ÍNDICE DEL ÁRBOL-H"
 
-#: e2fsck/problem.c:100
+#: e2fsck/problem.c:102
 msgid "WILL RECREATE"
 msgstr "SE CREARÁ DE NUEVO"
 
-#: e2fsck/problem.c:101
+#: e2fsck/problem.c:103
 msgid "WILL OPTIMIZE"
 msgstr "SE OPTIMIZARÁ"
 
+#: e2fsck/problem.c:104
+msgid "FLAG CLEARED"
+msgstr "BANDERA BORRADA"
+
 #. @-expanded: block bitmap for group %g is not in group.  (block %b)\n
-#: e2fsck/problem.c:115
+#: e2fsck/problem.c:118
 msgid "@b @B for @g %g is not in @g.  (@b %b)\n"
 msgstr "El mapa de bits de bloques para el grupo %g no está en el grupo.  (bloque %b)\n"
 
 #. @-expanded: inode bitmap for group %g is not in group.  (block %b)\n
-#: e2fsck/problem.c:119
+#: e2fsck/problem.c:122
 msgid "@i @B for @g %g is not in @g.  (@b %b)\n"
 msgstr "El mapa de bits de nodos-i para el grupo %g no está en el grupo.  (bloque %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:124
+#: e2fsck/problem.c:127
 msgid ""
 "@i table for @g %g is not in @g.  (@b %b)\n"
 "WARNING: SEVERE DATA LOSS POSSIBLE.\n"
@@ -886,7 +894,7 @@
 #. @-expanded:  or\n
 #. @-expanded:     e2fsck -b 32768 <device>\n
 #. @-expanded: \n
-#: e2fsck/problem.c:130
+#: e2fsck/problem.c:133
 msgid ""
 "\n"
 "The @S could not be read or does not describe a valid ext2/ext3/ext4\n"
@@ -911,7 +919,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:141
+#: e2fsck/problem.c:144
 msgid ""
 "The @f size (according to the @S) is %b @bs\n"
 "The physical size of the @v is %c @bs\n"
@@ -925,7 +933,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:148
+#: e2fsck/problem.c:151
 msgid ""
 "@S @b_size = %b, fragsize = %c.\n"
 "This version of e2fsck does not support fragment sizes different\n"
@@ -936,24 +944,24 @@
 "tamaños de fragmento distintos al del @b.\n"
 
 #. @-expanded: superblock blocks_per_group = %b, should have been %c\n
-#: e2fsck/problem.c:155
+#: e2fsck/problem.c:158
 msgid "@S @bs_per_group = %b, should have been %c\n"
 msgstr "El «blocks_per_group» del @S es %b y debería haber sido %c\n"
 
 #. @-expanded: superblock first_data_block = %b, should have been %c\n
-#: e2fsck/problem.c:160
+#: e2fsck/problem.c:163
 msgid "@S first_data_@b = %b, should have been %c\n"
 msgstr "El «first_data_block» del @S es %b y debería haber sido %c\n"
 
 #. @-expanded: filesystem did not have a UUID; generating one.\n
 #. @-expanded: \n
-#: e2fsck/problem.c:165
+#: e2fsck/problem.c:168
 msgid ""
 "@f did not have a UUID; generating one.\n"
 "\n"
 msgstr "El @f no tiene un UUID; se generará uno.\n"
 
-#: e2fsck/problem.c:171
+#: e2fsck/problem.c:174
 #, no-c-format
 msgid ""
 "Note: if several inode or block bitmap blocks or part\n"
@@ -972,48 +980,48 @@
 "\n"
 
 #. @-expanded: Corruption found in superblock.  (%s = %N).\n
-#: e2fsck/problem.c:180
+#: e2fsck/problem.c:183
 msgid "Corruption found in @S.  (%s = %N).\n"
 msgstr "El @S está corrupto.  (%s = %N).\n"
 
 #. @-expanded: Error determining size of the physical device: %m\n
-#: e2fsck/problem.c:186
+#: e2fsck/problem.c:189
 #, no-c-format
 msgid "Error determining size of the physical @v: %m\n"
 msgstr "Error al determinar el tamaño del @v físico: %m\n"
 
 #. @-expanded: inode count in superblock is %i, should be %j.\n
-#: e2fsck/problem.c:191
+#: e2fsck/problem.c:194
 msgid "@i count in @S is %i, @s %j.\n"
 msgstr "La cuenta @i en el @S es %i, @s %j.\n"
 
-#: e2fsck/problem.c:195
+#: e2fsck/problem.c:198
 msgid "The Hurd does not support the filetype feature.\n"
 msgstr "El Hurd no tiene implementada la opción de tipos de fichero.\n"
 
 #. @-expanded: superblock has an invalid journal (inode %i).\n
-#: e2fsck/problem.c:201
+#: e2fsck/problem.c:204
 #, no-c-format
 msgid "@S has an @n @j (@i %i).\n"
 msgstr "@S tiene un @j @n (@i %i).\n"
 
 #. @-expanded: External journal has multiple filesystem users (unsupported).\n
-#: e2fsck/problem.c:206
+#: e2fsck/problem.c:209
 msgid "External @j has multiple @f users (unsupported).\n"
 msgstr "El @j externo tiene varios usuarios del @f (no implementado).\n"
 
 #. @-expanded: Can't find external journal\n
-#: e2fsck/problem.c:211
+#: e2fsck/problem.c:214
 msgid "Can't find external @j\n"
 msgstr "No se ha encontrado un @j externo\n"
 
 #. @-expanded: External journal has bad superblock\n
-#: e2fsck/problem.c:216
+#: e2fsck/problem.c:219
 msgid "External @j has bad @S\n"
 msgstr "El @j externo tiene un @S dañado\n"
 
 #. @-expanded: External journal does not support this filesystem\n
-#: e2fsck/problem.c:221
+#: e2fsck/problem.c:224
 msgid "External @j does not support this @f\n"
 msgstr "El @j externo no tiene implementado este @f\n"
 
@@ -1021,7 +1029,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:226
+#: e2fsck/problem.c:229
 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 format.\n"
@@ -1033,82 +1041,82 @@
 "También es posible que el @S del @j esté corrupto.\n"
 
 #. @-expanded: journal superblock is corrupt.\n
-#: e2fsck/problem.c:235
+#: e2fsck/problem.c:238
 msgid "@j @S is corrupt.\n"
 msgstr "El @S del @j está corrupto.\n"
 
 #. @-expanded: superblock has_journal flag is clear, but a journal is present.\n
-#: e2fsck/problem.c:240
+#: e2fsck/problem.c:243
 msgid "@S has_@j flag is clear, but a @j is present.\n"
 msgstr "La bandera has_journal del @S está quitada, pero hay un @j.\n"
 
 #. @-expanded: superblock needs_recovery flag is set, but no journal is present.\n
-#: e2fsck/problem.c:245
+#: e2fsck/problem.c:248
 msgid "@S needs_recovery flag is set, but no @j is present.\n"
 msgstr "La bandera de recuperación del superbloque está puesta, pero no hay @j.\n"
 
 #. @-expanded: superblock needs_recovery flag is clear, but journal has data.\n
-#: e2fsck/problem.c:250
+#: e2fsck/problem.c:253
 msgid "@S needs_recovery flag is clear, but @j has data.\n"
 msgstr ""
 "La bandera de recuperación del superbloque está limpia, pero el @j\n"
 "contiene información.\n"
 
 #. @-expanded: Clear journal
-#: e2fsck/problem.c:255
+#: e2fsck/problem.c:258
 msgid "Clear @j"
 msgstr "Borrar el @j"
 
 #. @-expanded: filesystem has feature flag(s) set, but is a revision 0 filesystem.  
-#: e2fsck/problem.c:260 e2fsck/problem.c:796
+#: e2fsck/problem.c:263 e2fsck/problem.c:799
 msgid "@f has feature flag(s) set, but is a revision 0 @f.  "
 msgstr "El @f tiene una(s) bandera(s) especial(es), pero es una revisión 0 del @f.  "
 
 #. @-expanded: %s orphaned inode %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n
-#: e2fsck/problem.c:265
+#: e2fsck/problem.c:268
 msgid "%s @o @i %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n"
 msgstr "%s @i @o %i (uid=%Iu, gid=%Ig, modo=%Im, tamaño=%Is)\n"
 
 #. @-expanded: illegal %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:270
+#: e2fsck/problem.c:273
 msgid "@I %B (%b) found in @o @i %i.\n"
 msgstr "@I %B (%b) encontrado en un @i @o %i.\n"
 
 #. @-expanded: Already cleared %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:275
+#: e2fsck/problem.c:278
 msgid "Already cleared %B (%b) found in @o @i %i.\n"
 msgstr "Ya se borró el %B (%b) encontrado en el @i @o %i.\n"
 
 #. @-expanded: illegal orphaned inode %i in superblock.\n
-#: e2fsck/problem.c:281
+#: e2fsck/problem.c:284
 #, no-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:287
+#: e2fsck/problem.c:290
 #, no-c-format
 msgid "@I @i %i in @o @i list.\n"
 msgstr "@i @I %i en la lista de nodos-i huérfanos.\n"
 
 #. @-expanded: journal superblock has an unknown read-only feature flag set.\n
-#: e2fsck/problem.c:292
+#: e2fsck/problem.c:295
 msgid "@j @S has an unknown read-only feature flag set.\n"
 msgstr "El @S del @j tiene puesta una bandera desconocida de sólo lectura.\n"
 
 #. @-expanded: journal superblock has an unknown incompatible feature flag set.\n
-#: e2fsck/problem.c:297
+#: e2fsck/problem.c:300
 msgid "@j @S has an unknown incompatible feature flag set.\n"
 msgstr "El @S del @j tiene puesta una bandera desconocida incompatible.\n"
 
 #. @-expanded: journal version not supported by this e2fsck.\n
-#: e2fsck/problem.c:302
+#: e2fsck/problem.c:305
 msgid "@j version not supported by this e2fsck.\n"
 msgstr "La versión del @j no está implementada en este e2fsck.\n"
 
 #. @-expanded: Moving journal from /%s to hidden inode.\n
 #. @-expanded: \n
-#: e2fsck/problem.c:308
+#: e2fsck/problem.c:311
 #, no-c-format
 msgid ""
 "Moving @j from /%s to hidden @i.\n"
@@ -1119,7 +1127,7 @@
 
 #. @-expanded: Error moving journal: %m\n
 #. @-expanded: \n
-#: e2fsck/problem.c:314
+#: e2fsck/problem.c:317
 #, no-c-format
 msgid ""
 "Error moving @j: %m\n"
@@ -1131,7 +1139,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:319
+#: e2fsck/problem.c:322
 msgid ""
 "Found @n V2 @j @S fields (from V1 @j).\n"
 "Clearing fields beyond the V1 @j @S...\n"
@@ -1143,12 +1151,12 @@
 "\n"
 
 #. @-expanded: Run journal anyway
-#: e2fsck/problem.c:325
+#: e2fsck/problem.c:328
 msgid "Run @j anyway"
 msgstr "Ejecutar el @j de todas formas"
 
 #. @-expanded: Recovery flag not set in backup superblock, so running journal anyway.\n
-#: e2fsck/problem.c:330
+#: e2fsck/problem.c:333
 msgid "Recovery flag not set in backup @S, so running @j anyway.\n"
 msgstr ""
 "La bandera de recuperación no está puesta en el @S de respaldo,\n"
@@ -1156,7 +1164,7 @@
 
 #. @-expanded: Backing up journal inode block information.\n
 #. @-expanded: \n
-#: e2fsck/problem.c:335
+#: e2fsck/problem.c:338
 msgid ""
 "Backing up @j @i @b information.\n"
 "\n"
@@ -1166,7 +1174,7 @@
 
 #. @-expanded: filesystem does not have resize_inode enabled, but s_reserved_gdt_blocks\n
 #. @-expanded: is %N; should be zero.  
-#: e2fsck/problem.c:341
+#: e2fsck/problem.c:344
 msgid ""
 "@f does not have resize_@i enabled, but s_reserved_gdt_@bs\n"
 "is %N; @s zero.  "
@@ -1175,18 +1183,18 @@
 "es %N; debería ser cero.  "
 
 #. @-expanded: Resize_inode not enabled, but the resize inode is non-zero.  
-#: e2fsck/problem.c:347
+#: e2fsck/problem.c:350
 msgid "Resize_@i not enabled, but the resize @i is non-zero.  "
 msgstr "El 'resize_inode' no está habilitado, pero el nodo-i de cambio del tamaño no es cero.  "
 
 #. @-expanded: Resize inode not valid.  
-#: e2fsck/problem.c:352
+#: e2fsck/problem.c:355
 msgid "Resize @i not valid.  "
 msgstr "Cambio de tamaño de nodo-i no válido.  "
 
 #. @-expanded: superblock last mount time (%t,\n
 #. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:357
+#: e2fsck/problem.c:360
 msgid ""
 "@S last mount time (%t,\n"
 "\tnow = %T) is in the future.\n"
@@ -1196,7 +1204,7 @@
 
 #. @-expanded: superblock last write time (%t,\n
 #. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:362
+#: e2fsck/problem.c:365
 msgid ""
 "@S last write time (%t,\n"
 "\tnow = %T) is in the future.\n"
@@ -1205,14 +1213,14 @@
 "se escribió en el superbloque es en el futuro.\n"
 
 #. @-expanded: superblock hint for external superblock should be %X.  
-#: e2fsck/problem.c:368
+#: e2fsck/problem.c:371
 #, no-c-format
 msgid "@S hint for external superblock @s %X.  "
 msgstr "La pista de superbloque para un superbloque externo debería ser %X.  "
 
 #. @-expanded: Adding dirhash hint to filesystem.\n
 #. @-expanded: \n
-#: e2fsck/problem.c:373
+#: e2fsck/problem.c:376
 msgid ""
 "Adding dirhash hint to @f.\n"
 "\n"
@@ -1221,39 +1229,39 @@
 "\n"
 
 #. @-expanded: group descriptor %g checksum is %04x, should be %04y.  
-#: e2fsck/problem.c:378
+#: e2fsck/problem.c:381
 msgid "@g descriptor %g checksum is %04x, should be %04y.  "
 msgstr "El «checksum» del descriptor de @g %g es %04x; debería ser %04y.  "
 
 #. @-expanded: group descriptor %g marked uninitialized without feature set.\n
-#: e2fsck/problem.c:384
+#: e2fsck/problem.c:387
 #, no-c-format
 msgid "@g descriptor %g marked uninitialized without feature set.\n"
 msgstr "El descriptor de @g %g etiquetado como no inicializado no tiene activada esa funcionalidad.\n"
 
 #. @-expanded: group descriptor %g has invalid unused inodes count %b.  
-#: e2fsck/problem.c:389
+#: e2fsck/problem.c:392
 msgid "@g descriptor %g has invalid unused inodes count %b.  "
 msgstr "La cuenta de nodos-i no utilizados %b del descriptor de @g %g no es válida.  "
 
 #. @-expanded: Last group block bitmap uninitialized.  
-#: e2fsck/problem.c:394
+#: e2fsck/problem.c:397
 msgid "Last @g @b @B uninitialized.  "
 msgstr "El mapa de bits de bloque del último grupo no está inicializado.  "
 
-#: e2fsck/problem.c:400
+#: e2fsck/problem.c:403
 #, no-c-format
 msgid "Journal transaction %i was corrupt, replay was aborted.\n"
 msgstr "La transacción %i del fichero de transacciones estaba corrupta; se ha interrumpido la repetición.\n"
 
-#: e2fsck/problem.c:405
+#: e2fsck/problem.c:408
 msgid "The test_fs flag is set (and ext4 is available).  "
 msgstr "La bandera test_fs está puesta (y ext4 está disponible).  "
 
 #. @-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:410
+#: e2fsck/problem.c:413
 msgid ""
 "@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"
@@ -1264,7 +1272,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:416
+#: e2fsck/problem.c:419
 msgid ""
 "@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"
@@ -1273,103 +1281,103 @@
 "\t(por menos de un día, probablemente debido a que el reloj del hardware está mal puesto)\n"
 
 #. @-expanded: One or more block group descriptor checksums are invalid.  
-#: e2fsck/problem.c:422
+#: e2fsck/problem.c:425
 msgid "One or more @b @g descriptor checksums are invalid.  "
 msgstr "Los «checksums» de uno o más descriptores de @gs de @bs son inválidos.  "
 
 #. @-expanded: Setting free inodes count to %j (was %i)\n
-#: e2fsck/problem.c:427
+#: e2fsck/problem.c:430
 msgid "Setting free @is count to %j (was %i)\n"
 msgstr "Se pone la cantidad de nodos-i libres a %j (era %i)\n"
 
 #. @-expanded: Setting free blocks count to %c (was %b)\n
-#: e2fsck/problem.c:432
+#: e2fsck/problem.c:435
 msgid "Setting free @bs count to %c (was %b)\n"
 msgstr "Se pone la cantidad de bloques libres a %c (era %b)\n"
 
 #. @-expanded: Hiding %U quota inode %i (%Q).\n
-#: e2fsck/problem.c:437
+#: e2fsck/problem.c:440
 msgid "Hiding %U @q @i %i (%Q).\n"
 msgstr "Ocultando el %U @i de @q %i (%Q).\n"
 
 #. @-expanded: superblock has invalid MMP block.  
-#: e2fsck/problem.c:442
+#: e2fsck/problem.c:445
 msgid "@S has invalid MMP block.  "
 msgstr "El superbloque tiene un bloque MMP inválido.  "
 
 #. @-expanded: superblock has invalid MMP magic.  
-#: e2fsck/problem.c:447
+#: e2fsck/problem.c:450
 msgid "@S has invalid MMP magic.  "
 msgstr "El superbloque tiene un número mágico de MMP inválido.  "
 
-#: e2fsck/problem.c:453
+#: e2fsck/problem.c:456
 #, no-c-format
 msgid "ext2fs_open2: %m\n"
 msgstr "ext2fs_open2(): %m\n"
 
-#: e2fsck/problem.c:459
+#: e2fsck/problem.c:462
 #, no-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:465
+#: e2fsck/problem.c:468
 msgid "@S metadata_csum supersedes uninit_bg; both feature bits cannot be set simultaneously."
 msgstr "El metadata_csum de superbloque reemplaza a uninit_bg; no pueden ponerse los dos bits a la vez."
 
 #. @-expanded: superblock MMP block checksum does not match.  
-#: e2fsck/problem.c:471
+#: e2fsck/problem.c:474
 msgid "@S MMP @b checksum does not match.  "
 msgstr "El «checksum» del @b MMP del @S no cuadra.  "
 
 #. @-expanded: superblock 64bit filesystem needs extents to access the whole disk.  
-#: e2fsck/problem.c:476
+#: e2fsck/problem.c:479
 msgid "@S 64bit @f needs extents to access the whole disk.  "
 msgstr "@S de un @f de 64 bits necesita «extents» para acceder al disco entero.  "
 
-#: e2fsck/problem.c:481
+#: e2fsck/problem.c:484
 msgid "First_meta_bg is too big.  (%N, max value %g).  "
 msgstr "First_meta_bg es demasiado grande. (%N, valor máx. %g).  "
 
 #. @-expanded: External journal superblock checksum does not match superblock.  
-#: e2fsck/problem.c:486
+#: e2fsck/problem.c:489
 msgid "External @j @S checksum does not match @S.  "
 msgstr "El «checksum» del @S externo @j no cuadra con el @S.  "
 
 #. @-expanded: superblock metadata_csum_seed is not necessary without metadata_csum.
-#: e2fsck/problem.c:491
+#: e2fsck/problem.c:494
 msgid "@S metadata_csum_seed is not necessary without metadata_csum."
 msgstr "El metadata_csum_seed de @S no es necesario sin metadata_csum."
 
-#: e2fsck/problem.c:497
+#: e2fsck/problem.c:500
 #, no-c-format
 msgid "Error initializing quota context in support library: %m\n"
 msgstr "Error al inicializar el contexto de cuota en la biblioteca de soporte: %m\n"
 
 #. @-expanded: Bad required extra isize in superblock (%N).  
-#: e2fsck/problem.c:502
+#: e2fsck/problem.c:505
 msgid "Bad required extra isize in @S (%N).  "
 msgstr "Tamaño-i extra requerido en @S incorrecto (%N).  "
 
 #. @-expanded: Bad desired extra isize in superblock (%N).  
-#: e2fsck/problem.c:507
+#: e2fsck/problem.c:510
 msgid "Bad desired extra isize in @S (%N).  "
 msgstr "Tamaño-i extra deseado en @S incorrecto (%N).  "
 
 #. @-expanded: Invalid %U quota inode %i.  
-#: e2fsck/problem.c:512
+#: e2fsck/problem.c:515
 msgid "Invalid %U @q @i %i.  "
 msgstr "%U @i de @q %i no válido.  "
 
 #. @-expanded: superblock would have too many inodes (%N).\n
-#: e2fsck/problem.c:517
+#: e2fsck/problem.c:520
 msgid "@S would have too many inodes (%N).\n"
 msgstr "El @S tendría demasiados nodos-i (%N).\n"
 
 #. @-expanded: Resize_inode and meta_bg features are enabled. Those features are\n
 #. @-expanded: not compatible. Resize inode should be disabled.  
-#: e2fsck/problem.c:522
+#: e2fsck/problem.c:525
 msgid ""
 "Resize_@i and meta_bg features are enabled. Those features are\n"
 "not compatible. Resize @i should be disabled.  "
@@ -1382,117 +1390,117 @@
 # da la impresión de que en ese momento se están haciendo las cosas.
 # En este caso en particular, creo que es conveniente el gerundio. mm
 #. @-expanded: Pass 1: Checking inodes, blocks, and sizes\n
-#: e2fsck/problem.c:530
+#: e2fsck/problem.c:533
 msgid "Pass 1: Checking @is, @bs, and sizes\n"
 msgstr "Paso 1: Verificando nodos-i, @bs y tamaños\n"
 
 #. @-expanded: root inode is not a directory.  
-#: e2fsck/problem.c:534
+#: e2fsck/problem.c:537
 msgid "@r is not a @d.  "
 msgstr "El @r no es un @d.  "
 
 #. @-expanded: root inode has dtime set (probably due to old mke2fs).  
-#: e2fsck/problem.c:539
+#: e2fsck/problem.c:542
 msgid "@r has dtime set (probably due to old mke2fs).  "
 msgstr "El @r tiene puesto el dtime (probablemente debido a una versión antigua del mke2fs).  "
 
 #. @-expanded: Reserved inode %i (%Q) has invalid mode.  
-#: e2fsck/problem.c:544
+#: e2fsck/problem.c:547
 msgid "Reserved @i %i (%Q) has @n mode.  "
 msgstr "El @i reservado %i %Q tiene un modo incorrecto.  "
 
 #. @-expanded: deleted inode %i has zero dtime.  
-#: e2fsck/problem.c:550
+#: e2fsck/problem.c:553
 #, no-c-format
 msgid "@D @i %i has zero dtime.  "
 msgstr "El @i %i @, tiene un dtime cero.  "
 
 #. @-expanded: inode %i is in use, but has dtime set.  
-#: e2fsck/problem.c:556
+#: e2fsck/problem.c:559
 #, no-c-format
 msgid "@i %i is in use, but has dtime set.  "
 msgstr "El @i %i está en uso, pero tiene puesto dtime.  "
 
 #. @-expanded: inode %i is a zero-length directory.  
-#: e2fsck/problem.c:562
+#: e2fsck/problem.c:565
 #, no-c-format
 msgid "@i %i is a @z @d.  "
 msgstr "El @i %i es un @d con @z.  "
 
 #. @-expanded: group %g's block bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:567
+#: e2fsck/problem.c:570
 msgid "@g %g's @b @B at %b @C.\n"
 msgstr "El @B de bloques del @g %g en el lugar %b @C.\n"
 
 #. @-expanded: group %g's inode bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:572
+#: e2fsck/problem.c:575
 msgid "@g %g's @i @B at %b @C.\n"
 msgstr "El @B de nodos-i del @g %g en el lugar %b @C.\n"
 
 #. @-expanded: group %g's inode table at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:577
+#: e2fsck/problem.c:580
 msgid "@g %g's @i table at %b @C.\n"
 msgstr "La tabla de nodos-i del @g %g en el lugar %b @C.\n"
 
 #. @-expanded: group %g's block bitmap (%b) is bad.  
-#: e2fsck/problem.c:582
+#: e2fsck/problem.c:585
 msgid "@g %g's @b @B (%b) is bad.  "
 msgstr "El @B (%b) de bloques del @g %g está dañado.  "
 
 #. @-expanded: group %g's inode bitmap (%b) is bad.  
-#: e2fsck/problem.c:587
+#: e2fsck/problem.c:590
 msgid "@g %g's @i @B (%b) is bad.  "
 msgstr "El @B (%b) de nodos-i del @g %g está dañado.  "
 
 #. @-expanded: inode %i, i_size is %Is, should be %N.  
-#: e2fsck/problem.c:592
+#: e2fsck/problem.c:595
 msgid "@i %i, i_size is %Is, @s %N.  "
 msgstr "@i %i, i_size es %Is, @s %N.  "
 
 #. @-expanded: inode %i, i_blocks is %Ib, should be %N.  
-#: e2fsck/problem.c:597
+#: e2fsck/problem.c:600
 msgid "@i %i, i_@bs is %Ib, @s %N.  "
 msgstr "@i %i, i_@bs es %Ib, @s %N.  "
 
 #. @-expanded: illegal %B (%b) in inode %i.  
-#: e2fsck/problem.c:602
+#: e2fsck/problem.c:605
 msgid "@I %B (%b) in @i %i.  "
 msgstr "@I %B (%b) en @i %i.  "
 
 #. @-expanded: %B (%b) overlaps filesystem metadata in inode %i.  
-#: e2fsck/problem.c:607
+#: e2fsck/problem.c:610
 msgid "%B (%b) overlaps @f metadata in @i %i.  "
 msgstr "%B (%b) se solapa con los metadatos del @f en el @i %i.  "
 
 #. @-expanded: inode %i has illegal block(s).  
-#: e2fsck/problem.c:613
+#: e2fsck/problem.c:616
 #, no-c-format
 msgid "@i %i has illegal @b(s).  "
 msgstr "@i %i tiene @b(s) inválido(s).  "
 
 #. @-expanded: Too many illegal blocks in inode %i.\n
-#: e2fsck/problem.c:619
+#: e2fsck/problem.c:622
 #, no-c-format
 msgid "Too many illegal @bs in @i %i.\n"
 msgstr "Demasiados @bs inválidos en el @i %i.\n"
 
 #. @-expanded: illegal %B (%b) in bad block inode.  
-#: e2fsck/problem.c:624
+#: e2fsck/problem.c:627
 msgid "@I %B (%b) in bad @b @i.  "
 msgstr "Número de bloque inválido (%b) en el nodo-i de bloques dañados.  "
 
 #. @-expanded: Bad block inode has illegal block(s).  
-#: e2fsck/problem.c:629
+#: e2fsck/problem.c:632
 msgid "Bad @b @i has illegal @b(s).  "
 msgstr "El nodo-i de bloques dañados tiene @b(s) inválido(s).  "
 
 #. @-expanded: Duplicate or bad block in use!\n
-#: e2fsck/problem.c:634
+#: e2fsck/problem.c:637
 msgid "Duplicate or bad @b in use!\n"
 msgstr "¡@b duplicado o dañado está en uso!\n"
 
 #. @-expanded: Bad block %b used as bad block inode indirect block.  
-#: e2fsck/problem.c:639
+#: e2fsck/problem.c:642
 msgid "Bad @b %b used as bad @b @i indirect @b.  "
 msgstr "El @b dañado %b se usa como bloque indirecto en el nodo-i de bloques dañados"
 
@@ -1500,7 +1508,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:644
+#: e2fsck/problem.c:647
 msgid ""
 "\n"
 "The bad @b @i has probably been corrupted.  You probably\n"
@@ -1516,7 +1524,7 @@
 # cuando se traducen.
 #. @-expanded: \n
 #. @-expanded: If the block is really bad, the filesystem can not be fixed.\n
-#: e2fsck/problem.c:651
+#: e2fsck/problem.c:654
 msgid ""
 "\n"
 "If the @b is really bad, the @f can not be fixed.\n"
@@ -1527,7 +1535,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:656
+#: e2fsck/problem.c:659
 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"
@@ -1538,122 +1546,122 @@
 "\n"
 
 #. @-expanded: The primary superblock (%b) is on the bad block list.\n
-#: e2fsck/problem.c:662
+#: e2fsck/problem.c:665
 msgid "The primary @S (%b) is on the bad @b list.\n"
 msgstr "El @S primario (%b) está en la lista de @bs dañados.\n"
 
 #. @-expanded: Block %b in the primary group descriptors is on the bad block list\n
-#: e2fsck/problem.c:667
+#: e2fsck/problem.c:670
 msgid "Block %b in the primary @g descriptors is on the bad @b list\n"
 msgstr "El bloque %b en los descriptores primarios de grupos está en la lista de @bs dañados\n"
 
 #. @-expanded: Warning: Group %g's superblock (%b) is bad.\n
-#: e2fsck/problem.c:673
+#: e2fsck/problem.c:676
 msgid "Warning: Group %g's @S (%b) is bad.\n"
 msgstr "Atención: el @S (%b) del grupo %g está dañado.\n"
 
 #. @-expanded: Warning: Group %g's copy of the group descriptors has a bad block (%b).\n
-#: e2fsck/problem.c:679
+#: e2fsck/problem.c:682
 msgid "Warning: Group %g's copy of the @g descriptors has a bad @b (%b).\n"
 msgstr "Atención: la copia de los descriptores del @g %g tiene un @b (%b) dañado.\n"
 
 #. @-expanded: Programming error?  block #%b claimed for no reason in process_bad_block.\n
-#: e2fsck/problem.c:685
+#: e2fsck/problem.c:688
 msgid "Programming error?  @b #%b claimed for no reason in process_bad_@b.\n"
 msgstr "¿Será un error de programación?  El @b #%b se reclama sin razón en el process_bad_block.\n"
 
 #. @-expanded: error allocating %N contiguous block(s) in block group %g for %s: %m\n
-#: e2fsck/problem.c:691
+#: e2fsck/problem.c:694
 msgid "@A %N contiguous @b(s) in @b @g %g for %s: %m\n"
 msgstr "@A %N, es contigua a los @bs en el @b del @g %g para %s: %m\n"
 
 #. @-expanded: error allocating block buffer for relocating %s\n
-#: e2fsck/problem.c:697
+#: e2fsck/problem.c:700
 #, no-c-format
 msgid "@A @b buffer for relocating %s\n"
 msgstr "@A del búfer del @b para reubicar %s\n"
 
 #. @-expanded: Relocating group %g's %s from %b to %c...\n
-#: e2fsck/problem.c:702
+#: e2fsck/problem.c:705
 msgid "Relocating @g %g's %s from %b to %c...\n"
 msgstr "Reubicando %s del @g %g de %b a %c...\n"
 
 #. @-expanded: Relocating group %g's %s to %c...\n
-#: e2fsck/problem.c:708
+#: e2fsck/problem.c:711
 #, no-c-format
 msgid "Relocating @g %g's %s to %c...\n"
 msgstr "Reubicando el @g %g de %s hacia %c...\n"
 
 #. @-expanded: Warning: could not read block %b of %s: %m\n
-#: e2fsck/problem.c:713
+#: e2fsck/problem.c:716
 msgid "Warning: could not read @b %b of %s: %m\n"
 msgstr "Atención: no se puede leer el @b %b de %s: %m\n"
 
 #. @-expanded: Warning: could not write block %b for %s: %m\n
-#: e2fsck/problem.c:718
+#: e2fsck/problem.c:721
 msgid "Warning: could not write @b %b for %s: %m\n"
 msgstr "Atención: no se puede escribir el @b %b para %s: %m\n"
 
 #. @-expanded: error allocating inode bitmap (%N): %m\n
-#: e2fsck/problem.c:723 e2fsck/problem.c:1871
+#: e2fsck/problem.c:726 e2fsck/problem.c:1898
 msgid "@A @i @B (%N): %m\n"
 msgstr "Hay un @A del @B del @i (%N): %m\n"
 
 #. @-expanded: error allocating block bitmap (%N): %m\n
-#: e2fsck/problem.c:728
+#: e2fsck/problem.c:731
 msgid "@A @b @B (%N): %m\n"
 msgstr "Hay un @A del @b del @B (%N): %m\n"
 
 #. @-expanded: error allocating icount link information: %m\n
-#: e2fsck/problem.c:734
+#: e2fsck/problem.c:737
 #, no-c-format
 msgid "@A icount link information: %m\n"
 msgstr "@A en la cuenta-i de la información del enlace: %m\n"
 
 # array -> matriz
 #. @-expanded: error allocating directory block array: %m\n
-#: e2fsck/problem.c:740
+#: e2fsck/problem.c:743
 #, no-c-format
 msgid "@A @d @b array: %m\n"
 msgstr "@A del arreglo del @b de @ds: %m\n"
 
 #. @-expanded: Error while scanning inodes (%i): %m\n
-#: e2fsck/problem.c:746
+#: e2fsck/problem.c:749
 #, no-c-format
 msgid "Error while scanning @is (%i): %m\n"
 msgstr "Error mientras se exploraba el @i (%i): %m\n"
 
 #. @-expanded: Error while iterating over blocks in inode %i: %m\n
-#: e2fsck/problem.c:752
+#: e2fsck/problem.c:755
 #, no-c-format
 msgid "Error while iterating over @bs in @i %i: %m\n"
 msgstr "Error mientras se iteraba sobre los @bs en el @i %i: %m\n"
 
 #. @-expanded: Error storing inode count information (inode=%i, count=%N): %m\n
-#: e2fsck/problem.c:757
+#: e2fsck/problem.c:760
 msgid "Error storing @i count information (@i=%i, count=%N): %m\n"
 msgstr "Error al guardar la información de la cuenta del @i (@i=%i, cuenta=%N): %m\n"
 
 #. @-expanded: Error storing directory block information (inode=%i, block=%b, num=%N): %m\n
-#: e2fsck/problem.c:762
+#: e2fsck/problem.c:765
 msgid "Error storing @d @b information (@i=%i, @b=%b, num=%N): %m\n"
 msgstr "Error al guardar la información del @b de @ds (@i=%i, @b=%b, núm=%N): %m\n"
 
 #. @-expanded: Error reading inode %i: %m\n
-#: e2fsck/problem.c:769
+#: e2fsck/problem.c:772
 #, no-c-format
 msgid "Error reading @i %i: %m\n"
 msgstr "Error al leer el @i %i: %m\n"
 
 #. @-expanded: inode %i has imagic flag set.  
-#: e2fsck/problem.c:778
+#: e2fsck/problem.c:781
 #, no-c-format
 msgid "@i %i has imagic flag set.  "
 msgstr "@i %i tiene puesta la bandera imagic.  "
 
 #. @-expanded: Special (device/socket/fifo/symlink) file (inode %i) has immutable\n
 #. @-expanded: or append-only flag set.  
-#: e2fsck/problem.c:784
+#: e2fsck/problem.c:787
 #, no-c-format
 msgid ""
 "Special (@v/socket/fifo/symlink) file (@i %i) has immutable\n"
@@ -1663,7 +1671,7 @@
 "no es modificable o tiene la bandera 'append-only' (sólo añadir).  "
 
 #. @-expanded: Special (device/socket/fifo) inode %i has non-zero size.  
-#: e2fsck/problem.c:791
+#: e2fsck/problem.c:794
 #, no-c-format
 msgid "Special (@v/socket/fifo) @i %i has non-zero size.  "
 msgstr ""
@@ -1671,137 +1679,137 @@
 "tiene un tamaño distinto de cero.  "
 
 #. @-expanded: journal inode is not in use, but contains data.  
-#: e2fsck/problem.c:801
+#: e2fsck/problem.c:804
 msgid "@j @i is not in use, but contains data.  "
 msgstr "El @i del @j no está en uso, pero contiene información.  "
 
 #. @-expanded: journal is not regular file.  
-#: e2fsck/problem.c:806
+#: e2fsck/problem.c:809
 msgid "@j is not regular file.  "
 msgstr "el @j no es un fichero normal.  "
 
 #. @-expanded: inode %i was part of the orphaned inode list.  
-#: e2fsck/problem.c:812
+#: e2fsck/problem.c:815
 #, no-c-format
 msgid "@i %i was part of the @o @i list.  "
 msgstr "el @i %i era parte de la lista de nodos-i @os.  "
 
 #. @-expanded: inodes that were part of a corrupted orphan linked list found.  
-#: e2fsck/problem.c:818
+#: e2fsck/problem.c:821
 msgid "@is that were part of a corrupted orphan linked list found.  "
 msgstr "Los nodos-i fueron parte de una lista enlazada que estaba huérfana y dañada.  "
 
 #. @-expanded: error allocating refcount structure (%N): %m\n
-#: e2fsck/problem.c:823
+#: e2fsck/problem.c:826
 msgid "@A refcount structure (%N): %m\n"
 msgstr "@A de la estructura refcount (%N): %m\n"
 
 #. @-expanded: Error reading extended attribute block %b for inode %i.  
-#: e2fsck/problem.c:828
+#: e2fsck/problem.c:831
 msgid "Error reading @a @b %b for @i %i.  "
 msgstr "Error al leer el @b del @a %b para el @i %i.  "
 
 #. @-expanded: inode %i has a bad extended attribute block %b.  
-#: e2fsck/problem.c:833
+#: e2fsck/problem.c:836
 msgid "@i %i has a bad @a @b %b.  "
 msgstr "@i %i tiene un @b del @a %b dañado.  "
 
 #. @-expanded: Error reading extended attribute block %b (%m).  
-#: e2fsck/problem.c:838
+#: e2fsck/problem.c:841
 msgid "Error reading @a @b %b (%m).  "
 msgstr "Error al leer el @b del @a %b (%m).  "
 
 #. @-expanded: extended attribute block %b has reference count %r, should be %N.  
-#: e2fsck/problem.c:843
+#: e2fsck/problem.c:846
 msgid "@a @b %b has reference count %r, @s %N.  "
 msgstr "El @b del @a %b tiene una cuenta de referencia %r y @s %N.  "
 
 #. @-expanded: Error writing extended attribute block %b (%m).  
-#: e2fsck/problem.c:848
+#: e2fsck/problem.c:851
 msgid "Error writing @a @b %b (%m).  "
 msgstr "Error al escribir el @b de @a %b (%m).  "
 
 #. @-expanded: extended attribute block %b has h_blocks > 1.  
-#: e2fsck/problem.c:853
+#: e2fsck/problem.c:856
 msgid "@a @b %b has h_@bs > 1.  "
 msgstr "El @b del @a %b tiene h_@bs > 1.  "
 
 #. @-expanded: error allocating extended attribute region allocation structure.  
-#: e2fsck/problem.c:858
+#: e2fsck/problem.c:861
 msgid "@A @a region allocation structure.  "
 msgstr "@A de la estructura de reserva de región de @a.  "
 
 #. @-expanded: extended attribute block %b is corrupt (allocation collision).  
-#: e2fsck/problem.c:863
+#: e2fsck/problem.c:866
 msgid "@a @b %b is corrupt (allocation collision).  "
 msgstr "el @b del @a %b está dañado (hubo una colisión en la reserva).  "
 
 #. @-expanded: extended attribute block %b is corrupt (invalid name).  
-#: e2fsck/problem.c:868
+#: e2fsck/problem.c:871
 msgid "@a @b %b is corrupt (@n name).  "
 msgstr "el @b del @a %b está dañado (nombre no válido).  "
 
 #. @-expanded: extended attribute block %b is corrupt (invalid value).  
-#: e2fsck/problem.c:873
+#: e2fsck/problem.c:876
 msgid "@a @b %b is corrupt (@n value).  "
 msgstr "el @b del @a %b está dañado (valor no válido).  "
 
 #. @-expanded: inode %i is too big.  
-#: e2fsck/problem.c:879
+#: e2fsck/problem.c:882
 #, no-c-format
 msgid "@i %i is too big.  "
 msgstr "el @i %i es demasiado grande.  "
 
 #. @-expanded: %B (%b) causes directory to be too big.  
-#: e2fsck/problem.c:883
+#: e2fsck/problem.c:886
 msgid "%B (%b) causes @d to be too big.  "
 msgstr "%B (%b) provoca que el @d sea demasiado grande.  "
 
-#: e2fsck/problem.c:888
+#: e2fsck/problem.c:891
 msgid "%B (%b) causes file to be too big.  "
 msgstr "%B (%b) provoca que el fichero sea demasiado grande.  "
 
-#: e2fsck/problem.c:893
+#: e2fsck/problem.c:896
 msgid "%B (%b) causes symlink to be too big.  "
 msgstr "%B (%b) provoca que el enlace simbólico sea demasiado grande.  "
 
 #. @-expanded: inode %i has INDEX_FL flag set on filesystem without htree support.\n
-#: e2fsck/problem.c:899
+#: e2fsck/problem.c:902
 #, no-c-format
 msgid "@i %i has INDEX_FL flag set on @f without htree support.\n"
 msgstr "el @i %i tiene la bandera INDEX_FL puesta en el @f sin el árbol-h implementado.\n"
 
 #. @-expanded: inode %i has INDEX_FL flag set but is not a directory.\n
-#: e2fsck/problem.c:905
+#: e2fsck/problem.c:908
 #, no-c-format
 msgid "@i %i has INDEX_FL flag set but is not a @d.\n"
 msgstr "@i %i tiene puesta la bandera INDEX_FL pero no es un @d.\n"
 
 #. @-expanded: HTREE directory inode %i has an invalid root node.\n
-#: e2fsck/problem.c:911
+#: e2fsck/problem.c:914
 #, no-c-format
 msgid "@h %i has an @n root node.\n"
 msgstr "El @h %i tiene un nodo raíz no válido.\n"
 
 #. @-expanded: HTREE directory inode %i has an unsupported hash version (%N)\n
-#: e2fsck/problem.c:916
+#: e2fsck/problem.c:919
 msgid "@h %i has an unsupported hash version (%N)\n"
 msgstr "El @h %i tiene una versión de hash no implementada (%N)\n"
 
 #. @-expanded: HTREE directory inode %i uses an incompatible htree root node flag.\n
-#: e2fsck/problem.c:922
+#: e2fsck/problem.c:925
 #, no-c-format
 msgid "@h %i uses an incompatible htree root node flag.\n"
 msgstr "El @h %i utiliza una bandera incompatible para el nodo raíz del árbol-h.\n"
 
 #. @-expanded: HTREE directory inode %i has a tree depth (%N) which is too big\n
-#: e2fsck/problem.c:927
+#: e2fsck/problem.c:930
 msgid "@h %i has a tree depth (%N) which is too big\n"
 msgstr "El @h %i tiene una profundidad (%N) muy grande\n"
 
 #. @-expanded: Bad block inode has an indirect block (%b) that conflicts with\n
 #. @-expanded: filesystem metadata.  
-#: e2fsck/problem.c:933
+#: e2fsck/problem.c:936
 msgid ""
 "Bad @b @i has an indirect @b (%b) that conflicts with\n"
 "@f metadata.  "
@@ -1810,55 +1818,55 @@
 "entra en conflicto con la metainformación del @f.  "
 
 #. @-expanded: Resize inode (re)creation failed: %m.
-#: e2fsck/problem.c:940
+#: e2fsck/problem.c:943
 #, no-c-format
 msgid "Resize @i (re)creation failed: %m."
 msgstr "Falló la (re)creación del nodo-i de cambio de tamaño: %m."
 
 #. @-expanded: inode %i has a extra size (%IS) which is invalid\n
-#: e2fsck/problem.c:945
+#: e2fsck/problem.c:948
 msgid "@i %i has a extra size (%IS) which is @n\n"
 msgstr "El @i %i tiene un tamaño adicional (%IS) que es @n\n"
 
 #. @-expanded: extended attribute in inode %i has a namelen (%N) which is invalid\n
-#: e2fsck/problem.c:950
+#: e2fsck/problem.c:953
 msgid "@a in @i %i has a namelen (%N) which is @n\n"
 msgstr "El @a en el @i %i tiene una longitud de nombre (%N) que es @n\n"
 
 #. @-expanded: extended attribute in inode %i has a value offset (%N) which is invalid\n
-#: e2fsck/problem.c:955
+#: e2fsck/problem.c:958
 msgid "@a in @i %i has a value offset (%N) which is @n\n"
 msgstr "El @a en @i %i tiene un valor de desplazamiento (%N) que es @n\n"
 
 #. @-expanded: extended attribute in inode %i has a value block (%N) which is invalid (must be 0)\n
-#: e2fsck/problem.c:960
+#: e2fsck/problem.c:963
 msgid "@a in @i %i has a value @b (%N) which is @n (must be 0)\n"
 msgstr "El @a en el @i %i tiene un valor de @b (%N) que es @n (debe ser 0)\n"
 
 #. @-expanded: extended attribute in inode %i has a value size (%N) which is invalid\n
-#: e2fsck/problem.c:965
+#: e2fsck/problem.c:968
 msgid "@a in @i %i has a value size (%N) which is @n\n"
 msgstr "El @a en el @i %i tiene un valor de tamaño (%N) que es @n\n"
 
 #. @-expanded: extended attribute in inode %i has a hash (%N) which is invalid\n
-#: e2fsck/problem.c:970
+#: e2fsck/problem.c:973
 msgid "@a in @i %i has a hash (%N) which is @n\n"
 msgstr "El @a en el @i %i tiene un hash (%N) que es @n\n"
 
 #. @-expanded: inode %i is a %It but it looks like it is really a directory.\n
-#: e2fsck/problem.c:975
+#: e2fsck/problem.c:978
 msgid "@i %i is a %It but it looks like it is really a directory.\n"
 msgstr "El nodo-i %i está marcado como un %It pero parece ser un directorio.\n"
 
 #. @-expanded: Error while reading over extent tree in inode %i: %m\n
-#: e2fsck/problem.c:981
+#: e2fsck/problem.c:984
 #, no-c-format
 msgid "Error while reading over @x tree in @i %i: %m\n"
 msgstr "Error mientras se leía el árbol de «@xs» en el @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:986
+#: e2fsck/problem.c:989
 msgid ""
 "Failed to iterate extents in @i %i\n"
 "\t(op %s, blk %b, lblk %c): %m\n"
@@ -1868,7 +1876,7 @@
 
 #. @-expanded: inode %i has an invalid extent\n
 #. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:992
+#: e2fsck/problem.c:995
 msgid ""
 "@i %i has an @n extent\n"
 "\t(logical @b %c, @n physical @b %b, len %N)\n"
@@ -1878,7 +1886,7 @@
 
 #. @-expanded: inode %i has an invalid extent\n
 #. @-expanded: \t(logical block %c, physical block %b, invalid len %N)\n
-#: e2fsck/problem.c:997
+#: e2fsck/problem.c:1000
 msgid ""
 "@i %i has an @n extent\n"
 "\t(logical @b %c, physical @b %b, @n len %N)\n"
@@ -1887,31 +1895,31 @@
 "\t(@b lógico %c, @b físico %b, longitud @n %N)\n"
 
 #. @-expanded: inode %i has EXTENTS_FL flag set on filesystem without extents support.\n
-#: e2fsck/problem.c:1003
+#: e2fsck/problem.c:1006
 #, no-c-format
 msgid "@i %i has EXTENTS_FL flag set on @f without extents support.\n"
 msgstr "El @i %i tiene la bandera EXTENTS_FL puesta en el @f sin «extents» implementado.\n"
 
 #. @-expanded: inode %i is in extent format, but superblock is missing EXTENTS feature\n
-#: e2fsck/problem.c:1009
+#: e2fsck/problem.c:1012
 #, no-c-format
 msgid "@i %i is in extent format, but @S is missing EXTENTS feature\n"
 msgstr "el @i %i está en formato «extent», pero el @S no tiene la característica EXTENTS\n"
 
 #. @-expanded: inode %i missing EXTENT_FL, but is in extents format\n
-#: e2fsck/problem.c:1015
+#: e2fsck/problem.c:1018
 #, no-c-format
 msgid "@i %i missing EXTENT_FL, but is in extents format\n"
 msgstr "el @i %i no tiene EXTENT_FL, pero está en formato «extents»\n"
 
-#: e2fsck/problem.c:1021
+#: e2fsck/problem.c:1024
 #, no-c-format
 msgid "Fast symlink %i has EXTENT_FL set.  "
 msgstr "El enlace simbólico rápido %i tiene puesto 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:1026
+#: e2fsck/problem.c:1029
 msgid ""
 "@i %i has out of order extents\n"
 "\t(@n logical @b %c, physical @b %b, len %N)\n"
@@ -1920,39 +1928,39 @@
 "\t(@b lógico @n %c, @b físico %b, longitud %N)\n"
 
 #. @-expanded: inode %i has an invalid extent node (blk %b, lblk %c)\n
-#: e2fsck/problem.c:1030
+#: e2fsck/problem.c:1033
 msgid "@i %i has an invalid extent node (blk %b, lblk %c)\n"
 msgstr "el @i %i tiene un modo de «extent» no válido (blk %b, lblk %c)\n"
 
 #. @-expanded: Error converting subcluster block bitmap: %m\n
-#: e2fsck/problem.c:1036
+#: e2fsck/problem.c:1039
 #, no-c-format
 msgid "Error converting subcluster @b @B: %m\n"
 msgstr "Error al convertir el @B de @bs del «subcluster»: %m\n"
 
 #. @-expanded: quota inode is not a regular file.  
-#: e2fsck/problem.c:1041
+#: e2fsck/problem.c:1044
 msgid "@q @i is not a regular file.  "
 msgstr "El @i de la @q no es un fichero normal.  "
 
 #. @-expanded: quota inode is not in use, but contains data.  
-#: e2fsck/problem.c:1046
+#: e2fsck/problem.c:1049
 msgid "@q @i is not in use, but contains data.  "
 msgstr "El @i de la @q no está en uso, pero contiene datos.  "
 
 #. @-expanded: quota inode is visible to the user.  
-#: e2fsck/problem.c:1051
+#: e2fsck/problem.c:1054
 msgid "@q @i is visible to the user.  "
 msgstr "El @i de la @q es visible para el usuario.  "
 
 #. @-expanded: The bad block inode looks invalid.  
-#: e2fsck/problem.c:1056
+#: e2fsck/problem.c:1059
 msgid "The bad @b @i looks @n.  "
 msgstr "El nodo-i de bloques dañados parece inválido.  "
 
 #. @-expanded: inode %i has zero length extent\n
 #. @-expanded: \t(invalid logical block %c, physical block %b)\n
-#: e2fsck/problem.c:1061
+#: e2fsck/problem.c:1064
 msgid ""
 "@i %i has zero length extent\n"
 "\t(@n logical @b %c, physical @b %b)\n"
@@ -1961,26 +1969,26 @@
 "\t(@b lógico @n %c, @b físico %b)\n"
 
 #. @-expanded: inode %i seems to contain garbage.  
-#: e2fsck/problem.c:1067
+#: e2fsck/problem.c:1070
 #, no-c-format
 msgid "@i %i seems to contain garbage.  "
 msgstr "el @i %i parece que contiene basura.  "
 
 #. @-expanded: inode %i passes checks, but checksum does not match inode.  
-#: e2fsck/problem.c:1073
+#: e2fsck/problem.c:1076
 #, no-c-format
 msgid "@i %i passes checks, but checksum does not match @i.  "
 msgstr "el @i %i pasa las comprobaciones, pero el «checksum» no cuadra con el @i.  "
 
 #. @-expanded: inode %i extended attribute is corrupt (allocation collision).  
-#: e2fsck/problem.c:1079
+#: e2fsck/problem.c:1082
 #, no-c-format
 msgid "@i %i @a is corrupt (allocation collision).  "
 msgstr "el @a del @i %i está dañado (hubo una colisión en la reserva).  "
 
 #. @-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:1087
+#: e2fsck/problem.c:1090
 msgid ""
 "@i %i extent block passes checks, but checksum does not match extent\n"
 "\t(logical @b %c, physical @b %b, len %N)\n"
@@ -1989,13 +1997,13 @@
 "\t(@b lógico %c, @b físico %b, longitud %N)\n"
 
 #. @-expanded: inode %i extended attribute block %b passes checks, but checksum does not match block.  
-#: e2fsck/problem.c:1096
+#: e2fsck/problem.c:1099
 msgid "@i %i @a @b %b passes checks, but checksum does not match @b.  "
 msgstr "el @b de @a %b del @i %i pasa las comprobaciones, pero el «checksum» no concuerda con el @b.  "
 
 #. @-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:1101
+#: e2fsck/problem.c:1104
 msgid ""
 "Interior @x node level %N of @i %i:\n"
 "Logical start %b does not match logical start %c at next level.  "
@@ -2005,7 +2013,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:1107
+#: e2fsck/problem.c:1110
 msgid ""
 "@i %i, end of extent exceeds allowed value\n"
 "\t(logical @b %c, physical @b %b, len %N)\n"
@@ -2014,37 +2022,37 @@
 "\t(@b lógico %c, @b físico %b, longitud %N)\n"
 
 #. @-expanded: inode %i has inline data, but superblock is missing INLINE_DATA feature\n
-#: e2fsck/problem.c:1113
+#: e2fsck/problem.c:1116
 #, no-c-format
 msgid "@i %i has inline data, but @S is missing INLINE_DATA feature\n"
 msgstr "el @i %i tiene datos en línea, pero el @S no tiene la característica INLINE_DATA\n"
 
 #. @-expanded: inode %i has INLINE_DATA_FL flag on filesystem without inline data support.\n
-#: e2fsck/problem.c:1119
+#: e2fsck/problem.c:1122
 #, no-c-format
 msgid "@i %i has INLINE_DATA_FL flag on @f without inline data support.\n"
 msgstr "el @i %i tiene la bandera INLINE_DATA_FL puesta en el @f pero no tiene capacidad de datos en línea.\n"
 
 #. @-expanded: inode %i block %b conflicts with critical metadata, skipping block checks.\n
-#: e2fsck/problem.c:1127
+#: e2fsck/problem.c:1130
 #, no-c-format
 msgid "@i %i block %b conflicts with critical metadata, skipping block checks.\n"
 msgstr "El bloque %b del @i %i está en conflicto con metadatos críticos; saltar comprobaciones de bloque.\n"
 
 #. @-expanded: directory inode %i block %b should be at block %c.  
-#: e2fsck/problem.c:1132
+#: e2fsck/problem.c:1135
 msgid "@d @i %i @b %b should be at @b %c.  "
 msgstr "El @b %b del @i %i de @d debería estar en el @b %c.  "
 
 #. @-expanded: directory inode %i has extent marked uninitialized at block %c.  
-#: e2fsck/problem.c:1138
+#: e2fsck/problem.c:1141
 #, no-c-format
 msgid "@d @i %i has @x marked uninitialized at @b %c.  "
 msgstr "El @i %i del @d tiene un @x marcado como no inicializado en el @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:1143
+#: e2fsck/problem.c:1146
 msgid ""
 "@i %i logical @b %b (physical @b %c) violates cluster allocation rules.\n"
 "Will fix in pass 1B.\n"
@@ -2053,14 +2061,14 @@
 "Se corregirá en el paso 1B.\n"
 
 #. @-expanded: inode %i has INLINE_DATA_FL flag but extended attribute not found.  
-#: e2fsck/problem.c:1149
+#: e2fsck/problem.c:1152
 #, no-c-format
 msgid "@i %i has INLINE_DATA_FL flag but @a not found.  "
 msgstr "El @i %i tiene puesta la bandera INLINE_DATA_FL pero no se ha encontrado @a.  "
 
 #. @-expanded: Special (device/socket/fifo) file (inode %i) has extents\n
 #. @-expanded: or inline-data flag set.  
-#: e2fsck/problem.c:1156
+#: e2fsck/problem.c:1159
 #, no-c-format
 msgid ""
 "Special (@v/socket/fifo) file (@i %i) has extents\n"
@@ -2070,42 +2078,42 @@
 "o tiene la bandera 'inline-data' (datos en línea).  "
 
 #. @-expanded: inode %i has extent header but inline data flag is set.\n
-#: e2fsck/problem.c:1163
+#: e2fsck/problem.c:1166
 #, no-c-format
 msgid "@i %i has @x header but inline data flag is set.\n"
 msgstr "El @i %i tiene cabecera de @x pero la bandera de datos en línea está puesta.\n"
 
 #. @-expanded: inode %i seems to have inline data but extent flag is set.\n
-#: e2fsck/problem.c:1169
+#: e2fsck/problem.c:1172
 #, no-c-format
 msgid "@i %i seems to have inline data but @x flag is set.\n"
 msgstr "El @i %i parece tener datos en línea pero la bandera @x está puesta.\n"
 
 #. @-expanded: inode %i seems to have block map but inline data and extent flags set.\n
-#: e2fsck/problem.c:1175
+#: e2fsck/problem.c:1178
 #, no-c-format
 msgid "@i %i seems to have @b map but inline data and @x flags set.\n"
 msgstr "El @i %i parece tener mapa de @b pero datos en línea y la bandera @x está puesta.\n"
 
 #. @-expanded: inode %i has inline data and extent flags set but i_block contains junk.\n
-#: e2fsck/problem.c:1181
+#: e2fsck/problem.c:1184
 #, no-c-format
 msgid "@i %i has inline data and @x flags set but i_block contains junk.\n"
 msgstr "El @i %i tiene datos en línea y las banderas @x están puestas pero el i_block contiene basura.\n"
 
 #. @-expanded: Bad block list says the bad block list inode is bad.  
-#: e2fsck/problem.c:1186
+#: e2fsck/problem.c:1189
 msgid "Bad block list says the bad block list @i is bad.  "
 msgstr "La lista de bloques defectuosos dice que el @i de dicha lista es defectuoso.  "
 
 #. @-expanded: error allocating extent region allocation structure.  
-#: e2fsck/problem.c:1191
+#: e2fsck/problem.c:1194
 msgid "@A @x region allocation structure.  "
 msgstr "Error asignando estructura de reserva de la región de @x.  "
 
 #. @-expanded: inode %i has a duplicate extent mapping\n
 #. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:1196
+#: e2fsck/problem.c:1199
 msgid ""
 "@i %i has a duplicate @x mapping\n"
 "\t(logical @b %c, @n physical @b %b, len %N)\n"
@@ -2114,46 +2122,46 @@
 "\t(@b lógico %c, @b físico @n %b, longitud %N)\n"
 
 #. @-expanded: error allocating memory for encrypted directory list\n
-#: e2fsck/problem.c:1201
+#: e2fsck/problem.c:1204
 msgid "@A memory for encrypted @d list\n"
 msgstr "@A memoria para la lista de @d cifrados\n"
 
 #. @-expanded: inode %i extent tree could be more shallow (%b; could be <= %c)\n
-#: e2fsck/problem.c:1206
+#: e2fsck/problem.c:1209
 msgid "@i %i @x tree could be more shallow (%b; could be <= %c)\n"
 msgstr "el árbol de @x del @i %i podía ser más superficial (%b; podía ser <= %c)\n"
 
 #. @-expanded: inode %i on bigalloc filesystem cannot be block mapped.  
-#: e2fsck/problem.c:1212
+#: e2fsck/problem.c:1215
 #, no-c-format
 msgid "@i %i on bigalloc @f cannot be @b mapped.  "
 msgstr "El @i %i del @f de «bigalloc» no puede asociarse a bloque.  "
 
 #. @-expanded: inode %i has corrupt extent header.  
-#: e2fsck/problem.c:1218
+#: e2fsck/problem.c:1221
 #, no-c-format
 msgid "@i %i has corrupt @x header.  "
 msgstr "el @i %i tiene dañada la cabecera de @x.  "
 
 #. @-expanded: Timestamp(s) on inode %i beyond 2310-04-04 are likely pre-1970.\n
-#: e2fsck/problem.c:1224
+#: e2fsck/problem.c:1227
 #, no-c-format
 msgid "Timestamp(s) on @i %i beyond 2310-04-04 are likely pre-1970.\n"
 msgstr "La(s) fecha(s) del @i %i posteriores a 2310-04-04 probablemente son anteriores a 1970.\n"
 
 #. @-expanded: inode %i has illegal extended attribute value inode %N.\n
-#: e2fsck/problem.c:1229
+#: e2fsck/problem.c:1232
 msgid "@i %i has @I @a value @i %N.\n"
 msgstr "@i %i tiene un valor de @I @a @i %N.\n"
 
 #. @-expanded: inode %i has invalid extended attribute. EA inode %N missing EA_INODE flag.\n
-#: e2fsck/problem.c:1235
+#: e2fsck/problem.c:1238
 msgid "@i %i has @n @a. EA @i %N missing EA_INODE flag.\n"
 msgstr "el @i %i tiene @n, @a, EA @i %N no tiene el indicador EA_INODE.\n"
 
 #. @-expanded: EA inode %N for parent inode %i missing EA_INODE flag.\n
 #. @-expanded:  
-#: e2fsck/problem.c:1240
+#: e2fsck/problem.c:1243
 msgid ""
 "EA @i %N for parent @i %i missing EA_INODE flag.\n"
 " "
@@ -2161,10 +2169,38 @@
 "EA @i %N para el padre @i %i no tiene el indicador EA_INODE.\n"
 " "
 
+#. @-expanded: inode %i has the casefold flag set but is not a directory.  
+#: e2fsck/problem.c:1248
+#, c-format
+msgid "@i %i has the casefold flag set but is not a directory.  "
+msgstr "@i %i tiene puesta la bandera casefold pero no es un directorio.  "
+
+#. @-expanded: directory %p has the casefold flag, but the\n
+#. @-expanded: casefold feature is not enabled.  
+#: e2fsck/problem.c:1253
+#, c-format
+msgid ""
+"@d %p has the casefold flag, but the\n"
+"casefold feature is not enabled.  "
+msgstr ""
+"@d %p tiene puesta la bandera casefold, pero\n"
+"la característica casefold no está activada.  "
+
+#. @-expanded: HTREE directory inode %i uses hash version (%N), but should use SipHash (6) \n
+#: e2fsck/problem.c:1258
+msgid "@h %i uses hash version (%N), but should use SipHash (6) \n"
+msgstr "@h %i utiliza la versión de hash (%N), pero debería utilizar SipHash (6) \n"
+
+#. @-expanded: HTREE directory inode %i uses SipHash, but should not.  
+#: e2fsck/problem.c:1263
+#, c-format
+msgid "@h %i uses SipHash, but should not.  "
+msgstr "@h %i utiliza SipHash, pero no debería.  "
+
 #. @-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:1248
+#: e2fsck/problem.c:1270
 msgid ""
 "\n"
 "Running additional passes to resolve @bs claimed by more than one @i...\n"
@@ -2175,46 +2211,46 @@
 "Paso 1B: Se vuelven a explorar para los @bs reclamados en múltiples ocasiones\n"
 
 #. @-expanded: multiply-claimed block(s) in inode %i:
-#: e2fsck/problem.c:1255
+#: e2fsck/problem.c:1277
 #, no-c-format
 msgid "@m @b(s) in @i %i:"
 msgstr "Bloque(s) reclamado(s) en múltiples ocasiones en @i %i:"
 
-#: e2fsck/problem.c:1271
+#: e2fsck/problem.c:1293
 #, no-c-format
 msgid "Error while scanning inodes (%i): %m\n"
 msgstr "Error mientras se exploraban los nodos-i (%i): %m\n"
 
 #. @-expanded: error allocating inode bitmap (inode_dup_map): %m\n
-#: e2fsck/problem.c:1277
+#: e2fsck/problem.c:1299
 #, no-c-format
 msgid "@A @i @B (@i_dup_map): %m\n"
 msgstr "@A del @B del @i (@i_dup_map): %m\n"
 
 #. @-expanded: Error while iterating over blocks in inode %i (%s): %m\n
-#: e2fsck/problem.c:1283
+#: e2fsck/problem.c:1305
 #, no-c-format
 msgid "Error while iterating over @bs in @i %i (%s): %m\n"
 msgstr "Error mientras se iteraba sobre los @bs en el @i %i (%s): %m\n"
 
 #. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n
-#: e2fsck/problem.c:1288 e2fsck/problem.c:1663
+#: e2fsck/problem.c:1310 e2fsck/problem.c:1685
 msgid "Error adjusting refcount for @a @b %b (@i %i): %m\n"
 msgstr "Error al ajustar la cuenta de referencia para el @b del @a %b (@i %i): %m\n"
 
 #. @-expanded: Pass 1C: Scanning directories for inodes with multiply-claimed blocks\n
-#: e2fsck/problem.c:1298
+#: e2fsck/problem.c:1320
 msgid "Pass 1C: Scanning directories for @is with @m @bs\n"
 msgstr "Paso 1C: Explorando los directorios para buscar nodos-i con @bs reclamados en múltiples ocasiones\n"
 
 #. @-expanded: Pass 1D: Reconciling multiply-claimed blocks\n
-#: e2fsck/problem.c:1304
+#: e2fsck/problem.c:1326
 msgid "Pass 1D: Reconciling @m @bs\n"
 msgstr "Paso 1D: Reconciliando los @bs reclamados en múltiples ocasiones\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:1309
+#: e2fsck/problem.c:1331
 msgid ""
 "File %Q (@i #%i, mod time %IM) \n"
 "  has %r @m @b(s), shared with %N file(s):\n"
@@ -2223,18 +2259,18 @@
 "  tiene %r @b(s) reclamado(s) en múltiples ocasiones, compartido(s) con %N fichero(s):\n"
 
 #. @-expanded: \t%Q (inode #%i, mod time %IM)\n
-#: e2fsck/problem.c:1315
+#: e2fsck/problem.c:1337
 msgid "\t%Q (@i #%i, mod time %IM)\n"
 msgstr "\t%Q (@i #%i, fecha de modificación %IM)\n"
 
 #. @-expanded: \t<filesystem metadata>\n
-#: e2fsck/problem.c:1320
+#: e2fsck/problem.c:1342
 msgid "\t<@f metadata>\n"
 msgstr "\t<metadatos del @f>\n"
 
 #. @-expanded: (There are %N inodes containing multiply-claimed blocks.)\n
 #. @-expanded: \n
-#: e2fsck/problem.c:1325
+#: e2fsck/problem.c:1347
 msgid ""
 "(There are %N @is containing @m @bs.)\n"
 "\n"
@@ -2244,357 +2280,357 @@
 
 #. @-expanded: multiply-claimed blocks already reassigned or cloned.\n
 #. @-expanded: \n
-#: e2fsck/problem.c:1330
+#: e2fsck/problem.c:1352
 msgid ""
 "@m @bs already reassigned or cloned.\n"
 "\n"
 msgstr "Los @bs reclamados en múltiples ocasiones ya se reasignaron o se clonaron.\n"
 
-#: e2fsck/problem.c:1344
+#: e2fsck/problem.c:1366
 #, no-c-format
 msgid "Couldn't clone file: %m\n"
 msgstr "No se puede clonar el fichero: %m\n"
 
 #. @-expanded: Pass 1E: Optimizing extent trees\n
-#: e2fsck/problem.c:1350
+#: e2fsck/problem.c:1372
 msgid "Pass 1E: Optimizing @x trees\n"
 msgstr "Paso 1E: Optimizando los árboles @x\n"
 
 #. @-expanded: Failed to optimize extent tree %p (%i): %m\n
-#: e2fsck/problem.c:1356
+#: e2fsck/problem.c:1378
 #, no-c-format
 msgid "Failed to optimize @x tree %p (%i): %m\n"
 msgstr "Fallo al optimizar el árbol @x %p (%i): %m\n"
 
 #. @-expanded: Optimizing extent trees: 
-#: e2fsck/problem.c:1361
+#: e2fsck/problem.c:1383
 msgid "Optimizing @x trees: "
 msgstr "Optimizando los árboles @x: "
 
-#: e2fsck/problem.c:1376
+#: e2fsck/problem.c:1398
 msgid "Internal error: max extent tree depth too large (%b; expected=%c).\n"
 msgstr "Error interno: máxima profundidad de árbol «extent» demasiado grande (%b; esperada=%c).\n"
 
 #. @-expanded: inode %i extent tree (at level %b) could be shorter.  
-#: e2fsck/problem.c:1381
+#: e2fsck/problem.c:1403
 msgid "@i %i @x tree (at level %b) could be shorter.  "
 msgstr "El árbol @x del @i %i (nivel %b) podría ser más corto.  "
 
 #. @-expanded: inode %i extent tree (at level %b) could be narrower.  
-#: e2fsck/problem.c:1386
+#: e2fsck/problem.c:1408
 msgid "@i %i @x tree (at level %b) could be narrower.  "
 msgstr "El árbol @x del @i %i (nivel %b) podría ser más estrecho.  "
 
 #. @-expanded: Pass 2: Checking directory structure\n
-#: e2fsck/problem.c:1393
+#: e2fsck/problem.c:1415
 msgid "Pass 2: Checking @d structure\n"
 msgstr "Paso 2: Verificando la estructura de @ds\n"
 
 #. @-expanded: invalid inode number for '.' in directory inode %i.\n
-#: e2fsck/problem.c:1399
+#: e2fsck/problem.c:1421
 #, no-c-format
 msgid "@n @i number for '.' in @d @i %i.\n"
 msgstr "Número @n del @i para '.' en el @i del @d %i.\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) has invalid inode #: %Di.\n
-#: e2fsck/problem.c:1404
+#: e2fsck/problem.c:1426
 msgid "@E has @n @i #: %Di.\n"
 msgstr "@E tiene un @i @n #: %Di.\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) has deleted/unused inode %Di.  
-#: e2fsck/problem.c:1409
+#: e2fsck/problem.c:1431
 msgid "@E has @D/unused @i %Di.  "
 msgstr "@E tiene un @i %Di @D/no utilizado.  "
 
 #. @-expanded: entry '%Dn' in %p (%i) is a link to '.'  
-#: e2fsck/problem.c:1414
+#: e2fsck/problem.c:1436
 msgid "@E @L to '.'  "
 msgstr "@E @L a '.'  "
 
 # '@E' o 'La @e', no 'La @E'. Ver: e2fsck/message.c:125
 #. @-expanded: entry '%Dn' in %p (%i) points to inode (%Di) located in a bad block.\n
-#: e2fsck/problem.c:1419
+#: e2fsck/problem.c:1441
 msgid "@E points to @i (%Di) located in a bad @b.\n"
 msgstr "@E apunta al @i (%Di) ubicado en un @b dañado.\n"
 
 # '@E' o 'La @e', no 'La @E'. Ver: e2fsck/message.c:125
 #. @-expanded: entry '%Dn' in %p (%i) is a link to directory %P (%Di).\n
-#: e2fsck/problem.c:1424
+#: e2fsck/problem.c:1446
 msgid "@E @L to @d %P (%Di).\n"
 msgstr "@E @L al @d %P (%Di).\n"
 
 # '@E' o 'La @e', no 'La @E'. Ver: e2fsck/message.c:125
 #. @-expanded: entry '%Dn' in %p (%i) is a link to the root inode.\n
-#: e2fsck/problem.c:1429
+#: e2fsck/problem.c:1451
 msgid "@E @L to the @r.\n"
 msgstr "@E @L al @r.\n"
 
 # '@E' o 'La @e', no 'La @E'. Ver: e2fsck/message.c:125
 #. @-expanded: entry '%Dn' in %p (%i) has illegal characters in its name.\n
-#: e2fsck/problem.c:1434
+#: e2fsck/problem.c:1456
 msgid "@E has illegal characters in its name.\n"
 msgstr "@E contiene caracteres no válidos en el nombre.\n"
 
 #. @-expanded: Missing '.' in directory inode %i.\n
-#: e2fsck/problem.c:1440
+#: e2fsck/problem.c:1462
 #, no-c-format
 msgid "Missing '.' in @d @i %i.\n"
 msgstr "Falta '.' en el @d @i %i.\n"
 
 #. @-expanded: Missing '..' in directory inode %i.\n
-#: e2fsck/problem.c:1446
+#: e2fsck/problem.c:1468
 #, no-c-format
 msgid "Missing '..' in @d @i %i.\n"
 msgstr "Falta '..' en el @i del @d %i.\n"
 
 #. @-expanded: First entry '%Dn' (inode=%Di) in directory inode %i (%p) should be '.'\n
-#: e2fsck/problem.c:1451
+#: e2fsck/problem.c:1473
 msgid "First @e '%Dn' (@i=%Di) in @d @i %i (%p) @s '.'\n"
 msgstr "La primera @e '%Dn' (@i=%Di) en el @i del @d %i (%p) @s '.'\n"
 
 #. @-expanded: Second entry '%Dn' (inode=%Di) in directory inode %i should be '..'\n
-#: e2fsck/problem.c:1456
+#: e2fsck/problem.c:1478
 msgid "Second @e '%Dn' (@i=%Di) in @d @i %i @s '..'\n"
 msgstr "La segunda @e '%Dn' (@i=%Di) en el @i del @d %i @s '..'\n"
 
 #. @-expanded: i_faddr for inode %i (%Q) is %IF, should be zero.\n
-#: e2fsck/problem.c:1461
+#: e2fsck/problem.c:1483
 msgid "i_faddr @F %IF, @s zero.\n"
 msgstr "El i_faddr @F %IF, @s cero.\n"
 
 #. @-expanded: i_file_acl for inode %i (%Q) is %If, should be zero.\n
-#: e2fsck/problem.c:1466
+#: e2fsck/problem.c:1488
 msgid "i_file_acl @F %If, @s zero.\n"
 msgstr "El i_file_acl @F %If, @s cero.\n"
 
 #. @-expanded: i_size_high for inode %i (%Q) is %Id, should be zero.\n
-#: e2fsck/problem.c:1471
+#: e2fsck/problem.c:1493
 msgid "i_size_high @F %Id, @s zero.\n"
 msgstr "El i_size @F %Id, @s cero.\n"
 
 #. @-expanded: i_frag for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1476
+#: e2fsck/problem.c:1498
 msgid "i_frag @F %N, @s zero.\n"
 msgstr "El i_frag @F %N, @s cero.\n"
 
 #. @-expanded: i_fsize for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1481
+#: e2fsck/problem.c:1503
 msgid "i_fsize @F %N, @s zero.\n"
 msgstr "El i_fsize @F %N, @s cero.\n"
 
 #. @-expanded: inode %i (%Q) has invalid mode (%Im).\n
-#: e2fsck/problem.c:1486
+#: e2fsck/problem.c:1508
 msgid "@i %i (%Q) has @n mode (%Im).\n"
 msgstr "El @i %i (%Q) tiene un modo @n (%Im).\n"
 
 #. @-expanded: directory inode %i, %B, offset %N: directory corrupted\n
-#: e2fsck/problem.c:1491
+#: e2fsck/problem.c:1513
 msgid "@d @i %i, %B, offset %N: @d corrupted\n"
 msgstr "El @i del @d %i, %B, desplazamiento %N: el @d está dañado\n"
 
 #. @-expanded: directory inode %i, %B, offset %N: filename too long\n
-#: e2fsck/problem.c:1496
+#: e2fsck/problem.c:1518
 msgid "@d @i %i, %B, offset %N: filename too long\n"
 msgstr "El @i del @d %i, %B, desplazamiento %N: el nombre del fichero es muy largo\n"
 
 #. @-expanded: directory inode %i has an unallocated %B.  
-#: e2fsck/problem.c:1501
+#: e2fsck/problem.c:1523
 msgid "@d @i %i has an unallocated %B.  "
 msgstr "El @i %i del @d tiene un %B que no está reservado.  "
 
 #. @-expanded: '.' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1507
+#: e2fsck/problem.c:1529
 #, no-c-format
 msgid "'.' @d @e in @d @i %i is not NULL terminated\n"
 msgstr "La @e del @d '.' en el @i del @d %i no termina con NULL\n"
 
 #. @-expanded: '..' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1513
+#: e2fsck/problem.c:1535
 #, no-c-format
 msgid "'..' @d @e in @d @i %i is not NULL terminated\n"
 msgstr "La @e del @d '..' en el @i %i del @d no termina con NULL\n"
 
 #. @-expanded: inode %i (%Q) is an illegal character device.\n
-#: e2fsck/problem.c:1518
+#: e2fsck/problem.c:1540
 msgid "@i %i (%Q) is an @I character @v.\n"
 msgstr "El @i %i (%Q) es un @v de carácter @I.\n"
 
 #. @-expanded: inode %i (%Q) is an illegal block device.\n
-#: e2fsck/problem.c:1523
+#: e2fsck/problem.c:1545
 msgid "@i %i (%Q) is an @I @b @v.\n"
 msgstr "El @i %i (%Q) es un @v de @b @I.\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) is duplicate '.' entry.\n
-#: e2fsck/problem.c:1528
+#: e2fsck/problem.c:1550
 msgid "@E is duplicate '.' @e.\n"
 msgstr "La @E está duplicada en la @e '.'.\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) is duplicate '..' entry.\n
-#: e2fsck/problem.c:1533
+#: e2fsck/problem.c:1555
 msgid "@E is duplicate '..' @e.\n"
 msgstr "La @E está duplicada en la @e '..'.\n"
 
-#: e2fsck/problem.c:1539 e2fsck/problem.c:1898
+#: e2fsck/problem.c:1561 e2fsck/problem.c:1925
 #, no-c-format
 msgid "Internal error: couldn't find dir_info for %i.\n"
 msgstr "Error interno: no se puede encontrar el dir_info para %i.\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) has rec_len of %Dr, should be %N.\n
-#: e2fsck/problem.c:1544
+#: e2fsck/problem.c:1566
 msgid "@E has rec_len of %Dr, @s %N.\n"
 msgstr "La @E tiene un rec_len de %Dr y @s %N.\n"
 
 #. @-expanded: error allocating icount structure: %m\n
-#: e2fsck/problem.c:1550
+#: e2fsck/problem.c:1572
 #, no-c-format
 msgid "@A icount structure: %m\n"
 msgstr "@A de la estructura icount: %m\n"
 
 #. @-expanded: Error iterating over directory blocks: %m\n
-#: e2fsck/problem.c:1556
+#: e2fsck/problem.c:1578
 #, no-c-format
 msgid "Error iterating over @d @bs: %m\n"
 msgstr "Error al iterar sobre los @bs del @d: %m\n"
 
 #. @-expanded: Error reading directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1561
+#: e2fsck/problem.c:1583
 msgid "Error reading @d @b %b (@i %i): %m\n"
 msgstr "Error al leer el @b %b del @d (@i %i): %m\n"
 
 #. @-expanded: Error writing directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1566
+#: e2fsck/problem.c:1588
 msgid "Error writing @d @b %b (@i %i): %m\n"
 msgstr "Error al escribir el @b %b del @d (@i %i): %m\n"
 
 #. @-expanded: error allocating new directory block for inode %i (%s): %m\n
-#: e2fsck/problem.c:1572
+#: e2fsck/problem.c:1594
 #, no-c-format
 msgid "@A new @d @b for @i %i (%s): %m\n"
 msgstr "@A del @b del @d para el @i %i (%s): %m\n"
 
 #. @-expanded: Error deallocating inode %i: %m\n
-#: e2fsck/problem.c:1578
+#: e2fsck/problem.c:1600
 #, no-c-format
 msgid "Error deallocating @i %i: %m\n"
 msgstr "Error al liberar el @i %i: %m\n"
 
 #. @-expanded: directory entry for '.' in %p (%i) is big.\n
-#: e2fsck/problem.c:1584
+#: e2fsck/problem.c:1606
 #, no-c-format
 msgid "@d @e for '.' in %p (%i) is big.\n"
 msgstr "La @e del @d para '.' en %p (%i) es grande.\n"
 
 #. @-expanded: inode %i (%Q) is an illegal FIFO.\n
-#: e2fsck/problem.c:1589
+#: e2fsck/problem.c:1611
 msgid "@i %i (%Q) is an @I FIFO.\n"
 msgstr "El @i %i (%Q) es un FIFO @I.\n"
 
 #. @-expanded: inode %i (%Q) is an illegal socket.\n
-#: e2fsck/problem.c:1594
+#: e2fsck/problem.c:1616
 msgid "@i %i (%Q) is an @I socket.\n"
 msgstr "El @i %i (%Q) es un «socket» @I.\n"
 
 #. @-expanded: Setting filetype for entry '%Dn' in %p (%i) to %N.\n
-#: e2fsck/problem.c:1599
+#: e2fsck/problem.c:1621
 msgid "Setting filetype for @E to %N.\n"
 msgstr "Se pone el tipo de fichero para la @E a %N.\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) has an incorrect filetype (was %Dt, should be %N).\n
-#: e2fsck/problem.c:1604
+#: e2fsck/problem.c:1626
 msgid "@E has an incorrect filetype (was %Dt, @s %N).\n"
 msgstr "La @E tiene un tipo de fichero incorrecto (era %Dt y @s %N).\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) has filetype set.\n
-#: e2fsck/problem.c:1609
+#: e2fsck/problem.c:1631
 msgid "@E has filetype set.\n"
 msgstr "La @E tiene puesto el tipo de fichero.\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) has a zero-length name.\n
-#: e2fsck/problem.c:1614
+#: e2fsck/problem.c:1636
 msgid "@E has a @z name.\n"
 msgstr "La @E tiene un nombre de @z.\n"
 
 #. @-expanded: Symlink %Q (inode #%i) is invalid.\n
-#: e2fsck/problem.c:1619
+#: e2fsck/problem.c:1641
 msgid "Symlink %Q (@i #%i) is @n.\n"
 msgstr "El enlace simbólico %Q (@i #%i) es @n.\n"
 
 #. @-expanded: extended attribute block for inode %i (%Q) is invalid (%If).\n
-#: e2fsck/problem.c:1624
+#: e2fsck/problem.c:1646
 msgid "@a @b @F @n (%If).\n"
 msgstr "El @b del @a @F es @n (%If).\n"
 
 #. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n
-#: e2fsck/problem.c:1629
+#: e2fsck/problem.c:1651
 msgid "@f contains large files, but lacks LARGE_FILE flag in @S.\n"
 msgstr "El @f contiene ficheros grandes, pero no tiene la bandera LARGE_FILE en el @S.\n"
 
 #. @-expanded: problem in HTREE directory inode %d: %B not referenced\n
-#: e2fsck/problem.c:1634
+#: e2fsck/problem.c:1656
 msgid "@p @h %d: %B not referenced\n"
 msgstr "Hay un @p el @h %d: %B no ha sido referenciado\n"
 
 #. @-expanded: problem in HTREE directory inode %d: %B referenced twice\n
-#: e2fsck/problem.c:1639
+#: e2fsck/problem.c:1661
 msgid "@p @h %d: %B referenced twice\n"
 msgstr "Hay un @p el @h %d: %B ha sido referenciado dos veces\n"
 
 #. @-expanded: problem in HTREE directory inode %d: %B has bad min hash\n
-#: e2fsck/problem.c:1644
+#: e2fsck/problem.c:1666
 msgid "@p @h %d: %B has bad min hash\n"
 msgstr "Hay un @en el @h %d: %B tiene un hash mínimo incorrecto\n"
 
 #. @-expanded: problem in HTREE directory inode %d: %B has bad max hash\n
-#: e2fsck/problem.c:1649
+#: e2fsck/problem.c:1671
 msgid "@p @h %d: %B has bad max hash\n"
 msgstr "Hay un @p el @h %d: %B tiene un hash máximo incorrecto\n"
 
 #. @-expanded: invalid HTREE directory inode %d (%q).  
-#: e2fsck/problem.c:1654
+#: e2fsck/problem.c:1676
 msgid "@n @h %d (%q).  "
 msgstr "El @h %d es @n (%q).  "
 
 #. @-expanded: problem in HTREE directory inode %d (%q): bad block number %b.\n
-#: e2fsck/problem.c:1658
+#: e2fsck/problem.c:1680
 msgid "@p @h %d (%q): bad @b number %b.\n"
 msgstr "Hay un @p el @h %d (%q): el número del @b %b es incorrecto.\n"
 
 #. @-expanded: problem in HTREE directory inode %d: root node is invalid\n
-#: e2fsck/problem.c:1669
+#: e2fsck/problem.c:1691
 #, no-c-format
 msgid "@p @h %d: root node is @n\n"
 msgstr "Hay un @p el @h %d: el nodo raíz es @n.\n"
 
 #. @-expanded: problem in HTREE directory inode %d: %B has invalid limit (%N)\n
-#: e2fsck/problem.c:1674
+#: e2fsck/problem.c:1696
 msgid "@p @h %d: %B has @n limit (%N)\n"
 msgstr "Hay un @p el @h %d: %B tiene un límite @n (%N)\n"
 
 #. @-expanded: problem in HTREE directory inode %d: %B has invalid count (%N)\n
-#: e2fsck/problem.c:1679
+#: e2fsck/problem.c:1701
 msgid "@p @h %d: %B has @n count (%N)\n"
 msgstr "Hay un @p el @h %d: %B tiene una cuenta @n (%N)\n"
 
 #. @-expanded: problem in HTREE directory inode %d: %B has an unordered hash table\n
-#: e2fsck/problem.c:1684
+#: e2fsck/problem.c:1706
 msgid "@p @h %d: %B has an unordered hash table\n"
 msgstr "Hay un @p el @h %d: %B tiene una tabla de hash no ordenada\n"
 
 #. @-expanded: problem in HTREE directory inode %d: %B has invalid depth (%N)\n
-#: e2fsck/problem.c:1689
+#: e2fsck/problem.c:1711
 msgid "@p @h %d: %B has @n depth (%N)\n"
 msgstr "Hay un @p el @h %d: %B tiene una profundidad que no es válida (%N)\n"
 
 # '@E' o 'La @e', no 'La @E'. Ver: e2fsck/message.c:125
 #. @-expanded: Duplicate entry '%Dn' in %p (%i) found.  
-#: e2fsck/problem.c:1694
+#: e2fsck/problem.c:1716
 msgid "Duplicate @E found.  "
 msgstr "@E está duplicada.  "
 
 # '@E' o 'La @e', no 'La @E'. Ver: e2fsck/message.c:125
 #. @-expanded: entry '%Dn' in %p (%i) has a non-unique filename.\n
 #. @-expanded: Rename to %s
-#: e2fsck/problem.c:1699
+#: e2fsck/problem.c:1721
 #, no-c-format
 msgid ""
 "@E has a non-unique filename.\n"
@@ -2606,7 +2642,7 @@
 #. @-expanded: Duplicate entry '%Dn' found.\n
 #. @-expanded: \tMarking %p (%i) to be rebuilt.\n
 #. @-expanded: \n
-#: e2fsck/problem.c:1704
+#: e2fsck/problem.c:1726
 msgid ""
 "Duplicate @e '%Dn' found.\n"
 "\tMarking %p (%i) to be rebuilt.\n"
@@ -2617,158 +2653,164 @@
 "\n"
 
 #. @-expanded: i_blocks_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1709
+#: e2fsck/problem.c:1731
 msgid "i_blocks_hi @F %N, @s zero.\n"
 msgstr "El i_blocks_hi @F %N, @s cero.\n"
 
 #. @-expanded: Unexpected block in HTREE directory inode %d (%q).\n
-#: e2fsck/problem.c:1714
+#: e2fsck/problem.c:1736
 msgid "Unexpected @b in @h %d (%q).\n"
 msgstr "@b inesperado en el @h %d (%q).\n"
 
 # '@E' o 'La @e', no 'La @E'. Ver: e2fsck/message.c:125
 #. @-expanded: entry '%Dn' in %p (%i) references inode %Di in group %g where _INODE_UNINIT is set.\n
-#: e2fsck/problem.c:1719
+#: e2fsck/problem.c:1741
 msgid "@E references @i %Di in @g %g where _INODE_UNINIT is set.\n"
 msgstr "@E hace referencia al @i %Di del @g %g en el que _INODE_UNINIT está puesto.\n"
 
 # '@E' o 'La @e', no 'La @E'. Ver: e2fsck/message.c:125
 #. @-expanded: entry '%Dn' in %p (%i) references inode %Di found in group %g's unused inodes area.\n
-#: e2fsck/problem.c:1724
+#: e2fsck/problem.c:1746
 msgid "@E references @i %Di found in @g %g's unused inodes area.\n"
 msgstr "@E hace referencia al @i %Di encontrado en la zona de nodos-i no utilizados del @g %g.\n"
 
 #. @-expanded: i_file_acl_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1729
+#: e2fsck/problem.c:1751
 msgid "i_file_acl_hi @F %N, @s zero.\n"
 msgstr "El i_file_acl @F %N, @s cero.\n"
 
 #. @-expanded: problem in HTREE directory inode %d: root node fails checksum.\n
-#: e2fsck/problem.c:1735
+#: e2fsck/problem.c:1757
 #, no-c-format
 msgid "@p @h %d: root node fails checksum.\n"
 msgstr "Hay un @p el @h %d: falla la suma de comprobación del nodo raíz.\n"
 
 #. @-expanded: problem in HTREE directory inode %d: internal node fails checksum.\n
-#: e2fsck/problem.c:1741
+#: e2fsck/problem.c:1763
 #, no-c-format
 msgid "@p @h %d: internal node fails checksum.\n"
 msgstr "Hay un @p el @h %d: falla el «checksum» del nodo interno.\n"
 
 #. @-expanded: directory inode %i, %B, offset %N: directory has no checksum.\n
-#: e2fsck/problem.c:1746
+#: e2fsck/problem.c:1768
 msgid "@d @i %i, %B, offset %N: @d has no checksum.\n"
 msgstr "El @i de @d %i, %B, desplazamiento %N: el @d no tiene «checksum».\n"
 
 #. @-expanded: directory inode %i, %B: directory passes checks but fails checksum.\n
-#: e2fsck/problem.c:1751
+#: e2fsck/problem.c:1773
 msgid "@d @i %i, %B: @d passes checks but fails checksum.\n"
 msgstr "el @i de @d %i, %B: el @d pasa las comprobaciones pero falla el «checksum».\n"
 
 #. @-expanded: Inline directory inode %i size (%N) must be a multiple of 4.\n
-#: e2fsck/problem.c:1756
+#: e2fsck/problem.c:1778
 msgid "Inline @d @i %i size (%N) must be a multiple of 4.\n"
 msgstr "El tamaño (%N) del @i de @d en línea %i debe ser múltiplo de 4.\n"
 
 #. @-expanded: Fixing size of inline directory inode %i failed.\n
-#: e2fsck/problem.c:1762
+#: e2fsck/problem.c:1784
 #, no-c-format
 msgid "Fixing size of inline @d @i %i failed.\n"
 msgstr "Fallo al reparar el tamaño del @i de @d en línea %i.\n"
 
 # '@E' o 'La @e', no 'La @E'. Ver: e2fsck/message.c:125
 #. @-expanded: Encrypted entry '%Dn' in %p (%i) is too short.\n
-#: e2fsck/problem.c:1767
+#: e2fsck/problem.c:1789
 msgid "Encrypted @E is too short.\n"
 msgstr "@E cifrada es demasiado corta.\n"
 
+# '@E' o 'La @e', no 'La @E'. Ver: e2fsck/message.c:125
+#. @-expanded: Duplicate filename entry '%Dn' in %p (%i) found.  
+#: e2fsck/problem.c:1794
+msgid "Duplicate filename @E found.  "
+msgstr "Nombre de fichero @E duplicado.  "
+
 #. @-expanded: Pass 3: Checking directory connectivity\n
-#: e2fsck/problem.c:1774
+#: e2fsck/problem.c:1801
 msgid "Pass 3: Checking @d connectivity\n"
 msgstr "Paso 3: Revisando la conectividad de directorios\n"
 
 #. @-expanded: root inode not allocated.  
-#: e2fsck/problem.c:1779
+#: e2fsck/problem.c:1806
 msgid "@r not allocated.  "
 msgstr "El @r no ha sido reservado.  "
 
 #. @-expanded: No room in lost+found directory.  
-#: e2fsck/problem.c:1784
+#: e2fsck/problem.c:1811
 msgid "No room in @l @d.  "
 msgstr "No hay espacio en el @d @l.  "
 
 #. @-expanded: Unconnected directory inode %i (%p)\n
-#: e2fsck/problem.c:1790
+#: e2fsck/problem.c:1817
 #, no-c-format
 msgid "Unconnected @d @i %i (%p)\n"
 msgstr "El @d del @i %i (%p) está desconectado\n"
 
 #. @-expanded: /lost+found not found.  
-#: e2fsck/problem.c:1795
+#: e2fsck/problem.c:1822
 msgid "/@l not found.  "
 msgstr "No se encontró /@l.  "
 
 #. @-expanded: '..' in %Q (%i) is %P (%j), should be %q (%d).\n
-#: e2fsck/problem.c:1800
+#: e2fsck/problem.c:1827
 msgid "'..' in %Q (%i) is %P (%j), @s %q (%d).\n"
 msgstr "'..' en %Q (%i) es %P (%j) y debería ser %q (%d).\n"
 
 #. @-expanded: Bad or non-existent /lost+found.  Cannot reconnect.\n
-#: e2fsck/problem.c:1806
+#: e2fsck/problem.c:1833
 #, no-c-format
 msgid "Bad or non-existent /@l.  Cannot reconnect.\n"
 msgstr "El /@l no existe o está dañado.  No se puede reconectar.\n"
 
 #. @-expanded: Could not expand /lost+found: %m\n
-#: e2fsck/problem.c:1812
+#: e2fsck/problem.c:1839
 #, no-c-format
 msgid "Could not expand /@l: %m\n"
 msgstr "No se puede expandir /@l: %m\n"
 
-#: e2fsck/problem.c:1818
+#: e2fsck/problem.c:1845
 #, no-c-format
 msgid "Could not reconnect %i: %m\n"
 msgstr "No se puede reconectar %i: %m\n"
 
 #. @-expanded: Error while trying to find /lost+found: %m\n
-#: e2fsck/problem.c:1824
+#: e2fsck/problem.c:1851
 #, no-c-format
 msgid "Error while trying to find /@l: %m\n"
 msgstr "Error mientras se intentaba encontrar /@l: %m\n"
 
 #. @-expanded: ext2fs_new_block: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1830
+#: e2fsck/problem.c:1857
 #, no-c-format
 msgid "ext2fs_new_@b: %m while trying to create /@l @d\n"
 msgstr "ext2fs_new_block: %m mientras se intentaba crear el @d /@l.\n"
 
 #. @-expanded: ext2fs_new_inode: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1836
+#: e2fsck/problem.c:1863
 #, no-c-format
 msgid "ext2fs_new_@i: %m while trying to create /@l @d\n"
 msgstr "ext2fs_new_inode: %m cuando se intentaba crear el @d /@l.\n"
 
 #. @-expanded: ext2fs_new_dir_block: %m while creating new directory block\n
-#: e2fsck/problem.c:1842
+#: e2fsck/problem.c:1869
 #, no-c-format
 msgid "ext2fs_new_dir_@b: %m while creating new @d @b\n"
 msgstr "ext2fs_new_dir_block: %m mientras se creaba un nuevo @b de @d.\n"
 
 #. @-expanded: ext2fs_write_dir_block: %m while writing the directory block for /lost+found\n
-#: e2fsck/problem.c:1848
+#: e2fsck/problem.c:1875
 #, no-c-format
 msgid "ext2fs_write_dir_@b: %m while writing the @d @b for /@l\n"
 msgstr "ext2fs_write_dir_block: %m mientras se escribía el @b de @d para /@l\n"
 
 #. @-expanded: Error while adjusting inode count on inode %i\n
-#: e2fsck/problem.c:1854
+#: e2fsck/problem.c:1881
 #, no-c-format
 msgid "Error while adjusting @i count on @i %i\n"
 msgstr "Error mientras se ajustaba la cuenta del @i en el @i %i\n"
 
 #. @-expanded: Couldn't fix parent of inode %i: %m\n
 #. @-expanded: \n
-#: e2fsck/problem.c:1860
+#: e2fsck/problem.c:1887
 #, no-c-format
 msgid ""
 "Couldn't fix parent of @i %i: %m\n"
@@ -2782,7 +2824,7 @@
 # Hay alguna regla que se me escape? mm
 #. @-expanded: Couldn't fix parent of inode %i: Couldn't find parent directory entry\n
 #. @-expanded: \n
-#: e2fsck/problem.c:1866
+#: e2fsck/problem.c:1893
 #, no-c-format
 msgid ""
 "Couldn't fix parent of @i %i: Couldn't find parent @d @e\n"
@@ -2792,42 +2834,42 @@
 "\n"
 
 #. @-expanded: Error creating root directory (%s): %m\n
-#: e2fsck/problem.c:1877
+#: e2fsck/problem.c:1904
 #, no-c-format
 msgid "Error creating root @d (%s): %m\n"
 msgstr "Error al crear el @d raíz (%s): %m\n"
 
 #. @-expanded: Error creating /lost+found directory (%s): %m\n
-#: e2fsck/problem.c:1883
+#: e2fsck/problem.c:1910
 #, no-c-format
 msgid "Error creating /@l @d (%s): %m\n"
 msgstr "Error al crear el @d /@l (%s): %m\n"
 
 #. @-expanded: root inode is not a directory; aborting.\n
-#: e2fsck/problem.c:1888
+#: e2fsck/problem.c:1915
 msgid "@r is not a @d; aborting.\n"
 msgstr "El @r no es un @d; se finaliza la operación.\n"
 
 #. @-expanded: Cannot proceed without a root inode.\n
-#: e2fsck/problem.c:1893
+#: e2fsck/problem.c:1920
 msgid "Cannot proceed without a @r.\n"
 msgstr "No se puede proceder sin un @r.\n"
 
 #. @-expanded: /lost+found is not a directory (ino=%i)\n
-#: e2fsck/problem.c:1904
+#: e2fsck/problem.c:1931
 #, no-c-format
 msgid "/@l is not a @d (ino=%i)\n"
 msgstr "/@l no es un @d (ino=%i)\n"
 
 #. @-expanded: /lost+found has inline data\n
-#: e2fsck/problem.c:1909
+#: e2fsck/problem.c:1936
 msgid "/@l has inline data\n"
 msgstr "/@l tiene datos en línea\n"
 
 # Parece que habría que redactarlo como una orden: Coloque los ficheros perdidos en el directorio raíz
 #. @-expanded: Cannot allocate space for /lost+found.\n
 #. @-expanded: Place lost files in root directory instead
-#: e2fsck/problem.c:1914
+#: e2fsck/problem.c:1941
 msgid ""
 "Cannot allocate space for /@l.\n"
 "Place lost files in root directory instead"
@@ -2838,7 +2880,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:1919
+#: e2fsck/problem.c:1946
 msgid ""
 "Insufficient space to recover lost files!\n"
 "Move data off the @f and re-run e2fsck.\n"
@@ -2848,52 +2890,52 @@
 "Saque datos fuera del @f y ejecute otra vez e2fsck.\n"
 
 #. @-expanded: /lost+found is encrypted\n
-#: e2fsck/problem.c:1924
+#: e2fsck/problem.c:1951
 msgid "/@l is encrypted\n"
 msgstr "/@l está cifrado\n"
 
-#: e2fsck/problem.c:1931
+#: e2fsck/problem.c:1958
 msgid "Pass 3A: Optimizing directories\n"
 msgstr "Paso 3A: Optimizando directorios\n"
 
-#: e2fsck/problem.c:1937
+#: e2fsck/problem.c:1964
 #, no-c-format
 msgid "Failed to create dirs_to_hash iterator: %m\n"
 msgstr "Fallo al crear el iterador dirs_to_hash: %m\n"
 
-#: e2fsck/problem.c:1942
+#: e2fsck/problem.c:1969
 msgid "Failed to optimize directory %q (%d): %m\n"
 msgstr "Fallo al optimizar el directorio %q (%d): %m\n"
 
-#: e2fsck/problem.c:1947
+#: e2fsck/problem.c:1974
 msgid "Optimizing directories: "
 msgstr "Optimizando directorios: "
 
-#: e2fsck/problem.c:1964
+#: e2fsck/problem.c:1991
 msgid "Pass 4: Checking reference counts\n"
 msgstr "Paso 4: Revisando las cuentas de referencia\n"
 
 #. @-expanded: unattached zero-length inode %i.  
-#: e2fsck/problem.c:1970
+#: e2fsck/problem.c:1997
 #, no-c-format
 msgid "@u @z @i %i.  "
 msgstr "@i %i que tiene @z está @u.  "
 
 #. @-expanded: unattached inode %i\n
-#: e2fsck/problem.c:1976
+#: e2fsck/problem.c:2003
 #, no-c-format
 msgid "@u @i %i\n"
 msgstr "el @i %i está @u\n"
 
 #. @-expanded: inode %i ref count is %Il, should be %N.  
-#: e2fsck/problem.c:1981
+#: e2fsck/problem.c:2008
 msgid "@i %i ref count is %Il, @s %N.  "
 msgstr "La cuenta de referencia del @i %i es %Il, y @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:1985
+#: e2fsck/problem.c:2012
 msgid ""
 "WARNING: PROGRAMMING BUG IN E2FSCK!\n"
 "\tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n"
@@ -2904,146 +2946,151 @@
 "inode_link_info[%i] es %N, inode.i_links_count es %Il.  ¡Y deberían ser el mismo!\n"
 
 #. @-expanded: extended attribute inode %i ref count is %N, should be %n. 
-#: e2fsck/problem.c:1992
+#: e2fsck/problem.c:2019
 msgid "@a @i %i ref count is %N, @s %n. "
 msgstr "La cuenta de referencia del @a @i %i es %N, y @s %n. "
 
 #. @-expanded: directory exceeds max links, but no DIR_NLINK feature in superblock.\n
-#: e2fsck/problem.c:1997
+#: e2fsck/problem.c:2024
 msgid "@d exceeds max links, but no DIR_NLINK feature in @S.\n"
 msgstr "El @d excede el número máximo de enlaces, pero no hay característica DIR_NLINK en el @S.\n"
 
+#. @-expanded: directory inode %i ref count set to overflow but could be exact value %N.  
+#: e2fsck/problem.c:2029
+msgid "@d @i %i ref count set to overflow but could be exact value %N.  "
+msgstr "La cuenta de referencia del @d @i %i está puesta a desbordamiento pero podría ser el valor exacto %N.  "
+
 #. @-expanded: Pass 5: Checking group summary information\n
-#: e2fsck/problem.c:2004
+#: e2fsck/problem.c:2036
 msgid "Pass 5: Checking @g summary information\n"
 msgstr "Paso 5: Revisando el resumen de información de grupos\n"
 
 #. @-expanded: Padding at end of inode bitmap is not set. 
-#: e2fsck/problem.c:2009
+#: e2fsck/problem.c:2041
 msgid "Padding at end of @i @B is not set. "
 msgstr "No está puesto el relleno al final del @B del @i. "
 
 #. @-expanded: Padding at end of block bitmap is not set. 
-#: e2fsck/problem.c:2014
+#: e2fsck/problem.c:2046
 msgid "Padding at end of @b @B is not set. "
 msgstr "No está puesto el relleno al final del @B del @b. "
 
 #. @-expanded: block bitmap differences: 
-#: e2fsck/problem.c:2019
+#: e2fsck/problem.c:2051
 msgid "@b @B differences: "
 msgstr "Diferencias del @B del @b: "
 
 #. @-expanded: inode bitmap differences: 
-#: e2fsck/problem.c:2041
+#: e2fsck/problem.c:2073
 msgid "@i @B differences: "
 msgstr "Diferencias del @B del @i: "
 
 #. @-expanded: Free inodes count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:2063
+#: e2fsck/problem.c:2095
 msgid "Free @is count wrong for @g #%g (%i, counted=%j).\n"
 msgstr "La cuenta de nodos-i libres es incorrecta para el @g #%g (%i, contados=%j).\n"
 
 #. @-expanded: Directories count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:2068
+#: e2fsck/problem.c:2100
 msgid "Directories count wrong for @g #%g (%i, counted=%j).\n"
 msgstr "La cuenta de directorios es incorrecta para @g #%g (%i, contados=%j).\n"
 
 #. @-expanded: Free inodes count wrong (%i, counted=%j).\n
-#: e2fsck/problem.c:2073
+#: e2fsck/problem.c:2105
 msgid "Free @is count wrong (%i, counted=%j).\n"
 msgstr "La cuenta de nodos-i libres es incorrecta (%i, contados=%j).\n"
 
 #. @-expanded: Free blocks count wrong for group #%g (%b, counted=%c).\n
-#: e2fsck/problem.c:2078
+#: e2fsck/problem.c:2110
 msgid "Free @bs count wrong for @g #%g (%b, counted=%c).\n"
 msgstr "La cuenta de @bs libres es incorrecta para el @g #%g (%b, contados=%c).\n"
 
 #. @-expanded: Free blocks count wrong (%b, counted=%c).\n
-#: e2fsck/problem.c:2083
+#: e2fsck/problem.c:2115
 msgid "Free @bs count wrong (%b, counted=%c).\n"
 msgstr "La cuenta de @bs libres es incorrecta (%b, contados=%c).\n"
 
 #. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap 
 #. @-expanded: endpoints (%i, %j)\n
-#: e2fsck/problem.c:2088
+#: e2fsck/problem.c:2120
 msgid "PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B endpoints (%i, %j)\n"
 msgstr "ERROR DE PROGRAMACIÓN: los puntos finales del %B (%b, %c) del @f (#%N) no coinciden con los puntos finales del @B calculados (%i, %j)\n"
 
-#: e2fsck/problem.c:2094
+#: e2fsck/problem.c:2126
 msgid "Internal error: fudging end of bitmap (%N)\n"
 msgstr "Error interno: el final del bitmap (%N) no tiene sentido\n"
 
 #. @-expanded: Error copying in replacement inode bitmap: %m\n
-#: e2fsck/problem.c:2100
+#: e2fsck/problem.c:2132
 #, no-c-format
 msgid "Error copying in replacement @i @B: %m\n"
 msgstr "Error al copiar el reemplazo del @i @B: %m\n"
 
 #. @-expanded: Error copying in replacement block bitmap: %m\n
-#: e2fsck/problem.c:2106
+#: e2fsck/problem.c:2138
 #, no-c-format
 msgid "Error copying in replacement @b @B: %m\n"
 msgstr "Error al copiar el reemplazo del @b @B: %m\n"
 
 #. @-expanded: group %g block(s) in use but group is marked BLOCK_UNINIT\n
-#: e2fsck/problem.c:2136
+#: e2fsck/problem.c:2168
 #, no-c-format
 msgid "@g %g @b(s) in use but @g is marked BLOCK_UNINIT\n"
 msgstr "El(los) @b(s) del @g %g está(n) en uso, pero el grupo está etiquetado como BLOCK_UNINIT\n"
 
 #. @-expanded: group %g inode(s) in use but group is marked INODE_UNINIT\n
-#: e2fsck/problem.c:2142
+#: e2fsck/problem.c:2174
 #, no-c-format
 msgid "@g %g @i(s) in use but @g is marked INODE_UNINIT\n"
 msgstr "El(los) nodo(s)-i del @g %g está(n) en uso, pero el grupo está etiquetado como INODE_UNINIT\n"
 
 #. @-expanded: group %g inode bitmap does not match checksum.\n
-#: e2fsck/problem.c:2148
+#: e2fsck/problem.c:2180
 #, no-c-format
 msgid "@g %g @i @B does not match checksum.\n"
 msgstr "El @B del @i del @g %g no concuerda con el «checksum».\n"
 
 #. @-expanded: group %g block bitmap does not match checksum.\n
-#: e2fsck/problem.c:2154
+#: e2fsck/problem.c:2186
 #, no-c-format
 msgid "@g %g @b @B does not match checksum.\n"
 msgstr "El @B del @b del @g %g no concuerda con el «checksum».\n"
 
 #. @-expanded: Recreate journal
-#: e2fsck/problem.c:2161
+#: e2fsck/problem.c:2193
 msgid "Recreate @j"
 msgstr "Vuelva a crear el @j"
 
-#: e2fsck/problem.c:2166
+#: e2fsck/problem.c:2198
 msgid "Update quota info for quota type %N"
 msgstr "Actualizar la información de cuota para el tipo de cuota %N"
 
 #. @-expanded: Error setting block group checksum info: %m\n
-#: e2fsck/problem.c:2172
+#: e2fsck/problem.c:2204
 #, no-c-format
 msgid "Error setting @b @g checksum info: %m\n"
 msgstr "Error al poner la información de «checksum» del grupo de bloques: %m\n"
 
-#: e2fsck/problem.c:2178
+#: e2fsck/problem.c:2210
 #, no-c-format
 msgid "Error writing file system info: %m\n"
 msgstr "Error al escribir la información del sistema de ficheros: %m\n"
 
-#: e2fsck/problem.c:2184
+#: e2fsck/problem.c:2216
 #, no-c-format
 msgid "Error flushing writes to storage device: %m\n"
 msgstr "Error al hacer efectivas las escrituras en el dispositivo de almacenamiento: %m\n"
 
-#: e2fsck/problem.c:2189
+#: e2fsck/problem.c:2221
 msgid "Error writing quota info for quota type %N: %m\n"
 msgstr "Error al escribir la información de cuota para el tipo de cuota %N: %m\n"
 
-#: e2fsck/problem.c:2352
+#: e2fsck/problem.c:2384
 #, c-format
 msgid "Unhandled error code (0x%x)!\n"
 msgstr "¡Código de error no previsto (0x%x)!\n"
 
-#: e2fsck/problem.c:2482 e2fsck/problem.c:2486
+#: e2fsck/problem.c:2514 e2fsck/problem.c:2518
 msgid "IGNORED"
 msgstr "SE IGNORA"
 
@@ -3053,8 +3100,8 @@
 
 #: e2fsck/scantest.c:79
 #, c-format
-msgid "Memory used: %d, elapsed time: %6.3f/%6.3f/%6.3f\n"
-msgstr "Memoria utilizada: %d, tiempo transcurrido: %6.3f/%6.3f/%6.3f\n"
+msgid "Memory used: %lu, elapsed time: %6.3f/%6.3f/%6.3f\n"
+msgstr "Memoria utilizada: %lu, tiempo transcurrido: %6.3f/%6.3f/%6.3f\n"
 
 #: e2fsck/scantest.c:98
 #, c-format
@@ -3287,8 +3334,8 @@
 msgstr[0] "%12u fichero\n"
 msgstr[1] "%12u ficheros\n"
 
-#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:2986 misc/util.c:129
-#: resize/main.c:354
+#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:3072 misc/util.c:129
+#: resize/main.c:356
 #, c-format
 msgid "while determining whether %s is mounted."
 msgstr "mientras se determinaba si %s está montado."
@@ -3461,7 +3508,7 @@
 msgstr "La opción -t no está implementada en esta versión de e2fsck.\n"
 
 #: e2fsck/unix.c:934 e2fsck/unix.c:1012 misc/e2initrd_helper.c:330
-#: misc/tune2fs.c:1695 misc/tune2fs.c:1990 misc/tune2fs.c:2008
+#: misc/tune2fs.c:1721 misc/tune2fs.c:2016 misc/tune2fs.c:2034
 #, c-format
 msgid "Unable to resolve '%s'"
 msgstr "No es posible resolver '%s'"
@@ -3533,8 +3580,8 @@
 msgstr "mientras se leía el bloque MMP"
 
 #: e2fsck/unix.c:1302 e2fsck/unix.c:1354 misc/e2undo.c:236 misc/e2undo.c:281
-#: misc/mke2fs.c:2696 misc/mke2fs.c:2747 misc/tune2fs.c:2713
-#: misc/tune2fs.c:2758 resize/main.c:188 resize/main.c:233
+#: misc/mke2fs.c:2708 misc/mke2fs.c:2759 misc/tune2fs.c:2798
+#: misc/tune2fs.c:2843 resize/main.c:188 resize/main.c:233
 #, c-format
 msgid ""
 "Overwriting existing filesystem; this can be undone using the command:\n"
@@ -3545,13 +3592,13 @@
 "    e2undo %s %s\n"
 "\n"
 
-#: e2fsck/unix.c:1343 misc/e2undo.c:270 misc/mke2fs.c:2736 misc/tune2fs.c:2747
+#: e2fsck/unix.c:1343 misc/e2undo.c:270 misc/mke2fs.c:2748 misc/tune2fs.c:2832
 #: resize/main.c:222
 #, c-format
 msgid "while trying to delete %s"
 msgstr "mientras se intentaba borrar %s"
 
-#: e2fsck/unix.c:1369 misc/mke2fs.c:2762 resize/main.c:243
+#: e2fsck/unix.c:1369 misc/mke2fs.c:2774 resize/main.c:243
 msgid "while trying to setup undo file\n"
 msgstr "mientras se intentaba configurar el fichero de anulación\n"
 
@@ -3648,68 +3695,68 @@
 msgid "Get a newer version of e2fsck!"
 msgstr "¡Consiga una versión más moderna de e2fsck!"
 
-#: e2fsck/unix.c:1749
+#: e2fsck/unix.c:1748
 #, c-format
 msgid "while checking journal for %s"
 msgstr "mientras se revisaba el fichero de transacciones para %s"
 
-#: e2fsck/unix.c:1752
+#: e2fsck/unix.c:1751
 msgid "Cannot proceed with file system check"
 msgstr "No se puede proceder con la comprobación del sistema de ficheros"
 
-#: e2fsck/unix.c:1763
+#: e2fsck/unix.c:1762
 msgid "Warning: skipping journal recovery because doing a read-only filesystem check.\n"
 msgstr "Atención: se omitirá la recuperación del fichero de transacciones debido a que se está haciendo una revisión de sólo lectura del sistema de ficheros.\n"
 
-#: e2fsck/unix.c:1775
+#: e2fsck/unix.c:1774
 #, c-format
 msgid "unable to set superblock flags on %s\n"
 msgstr "no es posible poner las banderas de superbloque en %s\n"
 
-#: e2fsck/unix.c:1781
+#: e2fsck/unix.c:1780
 #, c-format
 msgid "Journal checksum error found in %s\n"
 msgstr "Se ha encontrado un error en el fichero de transacciones en %s\n"
 
-#: e2fsck/unix.c:1785
+#: e2fsck/unix.c:1784
 #, c-format
 msgid "Journal corrupted in %s\n"
 msgstr "Fichero de transacciones corrupto en %s\n"
 
-#: e2fsck/unix.c:1789
+#: e2fsck/unix.c:1788
 #, c-format
 msgid "while recovering journal of %s"
 msgstr "mientras se recuperaba el fichero de transacciones de %s"
 
-#: e2fsck/unix.c:1811
+#: e2fsck/unix.c:1810
 #, c-format
 msgid "%s has unsupported feature(s):"
 msgstr "%s tiene características no implementadas:"
 
-#: e2fsck/unix.c:1826
+#: e2fsck/unix.c:1825
 #, c-format
 msgid "%s has unsupported encoding: %0x\n"
 msgstr "%s tiene una codificación no implementada: %0x\n"
 
-#: e2fsck/unix.c:1876
+#: e2fsck/unix.c:1875
 #, c-format
 msgid "%s: %s while reading bad blocks inode\n"
 msgstr "%s: %s mientras se leía el nodo-i de los bloques dañados\n"
 
-#: e2fsck/unix.c:1879
+#: e2fsck/unix.c:1878
 msgid "This doesn't bode well, but we'll try to go on...\n"
 msgstr "Esto no se ve muy bien, pero se intentará continuar...\n"
 
-#: e2fsck/unix.c:1919
+#: e2fsck/unix.c:1918
 #, c-format
 msgid "Creating journal (%d blocks): "
 msgstr "Creando el fichero de transacciones (%d bloques): "
 
-#: e2fsck/unix.c:1929
+#: e2fsck/unix.c:1928
 msgid " Done.\n"
 msgstr " Hecho.\n"
 
-#: e2fsck/unix.c:1931
+#: e2fsck/unix.c:1930
 msgid ""
 "\n"
 "*** journal has been regenerated ***\n"
@@ -3717,24 +3764,24 @@
 "\n"
 "*** el fichero de transacciones se ha regenerado ***\n"
 
-#: e2fsck/unix.c:1937
+#: e2fsck/unix.c:1936
 msgid "aborted"
 msgstr "finalizado"
 
-#: e2fsck/unix.c:1939
+#: e2fsck/unix.c:1938
 #, c-format
 msgid "%s: e2fsck canceled.\n"
 msgstr "%s: se cancela e2fsck.\n"
 
-#: e2fsck/unix.c:1966
+#: e2fsck/unix.c:1965
 msgid "Restarting e2fsck from the beginning...\n"
 msgstr "Se reinicia e2fsck desde el principio...\n"
 
-#: e2fsck/unix.c:1970
+#: e2fsck/unix.c:1969
 msgid "while resetting context"
 msgstr "mientras se reajusta el contexto"
 
-#: e2fsck/unix.c:2029
+#: e2fsck/unix.c:2028
 #, c-format
 msgid ""
 "\n"
@@ -3743,12 +3790,12 @@
 "\n"
 "%s: ***** ERRORES CORREGIDOS DEL SISTEMA DE FICHEROS *****\n"
 
-#: e2fsck/unix.c:2031
+#: e2fsck/unix.c:2030
 #, c-format
 msgid "%s: File system was modified.\n"
 msgstr "%s: El sistema de ficheros se ha modificado.\n"
 
-#: e2fsck/unix.c:2035 e2fsck/util.c:71
+#: e2fsck/unix.c:2034 e2fsck/util.c:71
 #, c-format
 msgid ""
 "\n"
@@ -3757,12 +3804,12 @@
 "\n"
 "%s: ***** EL SISTEMA DE FICHEROS FUE MODIFICADO *****\n"
 
-#: e2fsck/unix.c:2040
+#: e2fsck/unix.c:2039
 #, c-format
 msgid "%s: ***** REBOOT SYSTEM *****\n"
 msgstr "%s: ***** REINICIE EL SISTEMA *****\n"
 
-#: e2fsck/unix.c:2050 e2fsck/util.c:77
+#: e2fsck/unix.c:2049 e2fsck/util.c:77
 #, c-format
 msgid ""
 "\n"
@@ -3773,51 +3820,51 @@
 "%s: ********** ATENCIÓN: El sistema de ficheros todavía tiene errores ***********\n"
 "\n"
 
-#: e2fsck/util.c:196 misc/util.c:93
+#: e2fsck/util.c:195 misc/util.c:93
 msgid "yY"
 msgstr "sS"
 
-#: e2fsck/util.c:197 misc/util.c:112
+#: e2fsck/util.c:196 misc/util.c:112
 msgid "nN"
 msgstr "nN"
 
-#: e2fsck/util.c:198
+#: e2fsck/util.c:197
 msgid "aA"
 msgstr "tT"
 
-#: e2fsck/util.c:202
+#: e2fsck/util.c:201
 msgid " ('a' enables 'yes' to all) "
 msgstr " ('t' aplica 'sí' a todo) "
 
-#: e2fsck/util.c:219
+#: e2fsck/util.c:218
 msgid "<y>"
 msgstr "<s>"
 
-#: e2fsck/util.c:221
+#: e2fsck/util.c:220
 msgid "<n>"
 msgstr "<n>"
 
-#: e2fsck/util.c:223
+#: e2fsck/util.c:222
 msgid " (y/n)"
 msgstr " (s/n)"
 
-#: e2fsck/util.c:246
+#: e2fsck/util.c:245
 msgid "cancelled!\n"
 msgstr "¡cancelado!\n"
 
-#: e2fsck/util.c:279
+#: e2fsck/util.c:278
 msgid "yes to all\n"
 msgstr "sí a todo\n"
 
-#: e2fsck/util.c:281
+#: e2fsck/util.c:280
 msgid "yes\n"
 msgstr "sí\n"
 
-#: e2fsck/util.c:283
+#: e2fsck/util.c:282
 msgid "no\n"
 msgstr "no\n"
 
-#: e2fsck/util.c:293
+#: e2fsck/util.c:292
 #, c-format
 msgid ""
 "%s? no\n"
@@ -3826,7 +3873,7 @@
 "¿%s? no\n"
 "\n"
 
-#: e2fsck/util.c:297
+#: e2fsck/util.c:296
 #, c-format
 msgid ""
 "%s? yes\n"
@@ -3835,38 +3882,38 @@
 "¿%s? sí\n"
 "\n"
 
-#: e2fsck/util.c:301
+#: e2fsck/util.c:300
 msgid "yes"
 msgstr "sí"
 
-#: e2fsck/util.c:301
+#: e2fsck/util.c:300
 msgid "no"
 msgstr "no"
 
-#: e2fsck/util.c:317
+#: e2fsck/util.c:316
 #, c-format
 msgid "e2fsck_read_bitmaps: illegal bitmap block(s) for %s"
 msgstr "e2fsck_read_bitmaps: bloque(s) no válido(s) de mapas de bits para %s"
 
-#: e2fsck/util.c:322
+#: e2fsck/util.c:321
 msgid "reading inode and block bitmaps"
 msgstr "leyendo los mapas de bits del nodo-i y del bloque"
 
-#: e2fsck/util.c:334
+#: e2fsck/util.c:333
 #, c-format
 msgid "while retrying to read bitmaps for %s"
 msgstr "mientras se intentaban leer los mapas de bits para %s"
 
-#: e2fsck/util.c:346
+#: e2fsck/util.c:345
 msgid "writing block and inode bitmaps"
 msgstr "escribiendo los mapas de bits del bloque y del nodo-i"
 
-#: e2fsck/util.c:351
+#: e2fsck/util.c:350
 #, c-format
 msgid "while rewriting block and inode bitmaps for %s"
 msgstr "mientras se reescribían los mapas de bits de bloques y de nodos-i para %s"
 
-#: e2fsck/util.c:363
+#: e2fsck/util.c:362
 #, c-format
 msgid ""
 "\n"
@@ -3879,37 +3926,37 @@
 "%s: INCONSISTENCIA INESPERADA; EJECUTE fsck MANUALMENTE.\n"
 "(i.e., sin las opciones -a o -p)\n"
 
-#: e2fsck/util.c:444
+#: e2fsck/util.c:442
 #, c-format
-msgid "Memory used: %luk/%luk (%luk/%luk), "
-msgstr "Memoria utilizada: %luk/%luk (%luk/%luk), "
+msgid "Memory used: %lluk/%lluk (%lluk/%lluk), "
+msgstr "Memoria utilizada: %lluk/%lluk (%lluk/%lluk), "
 
 #: e2fsck/util.c:448
 #, c-format
-msgid "Memory used: %lu, "
-msgstr "Memoria utilizada: %lu, "
+msgid "Memory used: %lluk, "
+msgstr "Memoria utilizada: %lluk, "
 
-#: e2fsck/util.c:455
+#: e2fsck/util.c:454
 #, c-format
 msgid "time: %5.2f/%5.2f/%5.2f\n"
 msgstr "fecha: %5.2f/%5.2f/%5.2f\n"
 
-#: e2fsck/util.c:460
+#: e2fsck/util.c:459
 #, c-format
 msgid "elapsed time: %6.3f\n"
 msgstr "tiempo transcurrido: %6.3f\n"
 
-#: e2fsck/util.c:495 e2fsck/util.c:509
+#: e2fsck/util.c:494 e2fsck/util.c:508
 #, c-format
 msgid "while reading inode %lu in %s"
 msgstr "mientras se leía el nodo-i %lu en %s"
 
-#: e2fsck/util.c:523 e2fsck/util.c:536
+#: e2fsck/util.c:522 e2fsck/util.c:535
 #, c-format
 msgid "while writing inode %lu in %s"
 msgstr "mientras se escribía el nodo-i %lu en %s"
 
-#: e2fsck/util.c:792
+#: e2fsck/util.c:793
 msgid "UNEXPECTED INCONSISTENCY: the filesystem is being modified while fsck is running.\n"
 msgstr "INCONSISTENCIA INESPERADA: se está modificando el sistema de ficheros mientras fsck está corriendo.\n"
 
@@ -4119,68 +4166,68 @@
 
 #: misc/chattr.c:89
 #, c-format
-msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v version] files...\n"
-msgstr "Modo de empleo: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v versión] ficheros...\n"
+msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuFx] [-v version] files...\n"
+msgstr "Modo de empleo: %s [-pRVf] [-+=aAcCdDeijPsStTuFx] [-v versión] ficheros...\n"
 
-#: misc/chattr.c:160
+#: misc/chattr.c:161
 #, c-format
 msgid "bad project - %s\n"
 msgstr "proyecto incorrecto - %s\n"
 
-#: misc/chattr.c:174
+#: misc/chattr.c:175
 #, c-format
 msgid "bad version - %s\n"
 msgstr "versión incorrecta - %s\n"
 
-#: misc/chattr.c:220 misc/lsattr.c:127
+#: misc/chattr.c:221 misc/lsattr.c:127
 #, c-format
 msgid "while trying to stat %s"
 msgstr "mientras se intentaba ver el estado del fichero %s"
 
-#: misc/chattr.c:227
+#: misc/chattr.c:228
 #, c-format
 msgid "while reading flags on %s"
 msgstr "mientras se estaban leyendo las banderas en %s"
 
-#: misc/chattr.c:232 misc/chattr.c:244
+#: misc/chattr.c:233 misc/chattr.c:245
 #, c-format
 msgid "Flags of %s set as "
 msgstr "Las banderas de %s están puestas como "
 
-#: misc/chattr.c:253
+#: misc/chattr.c:254
 #, c-format
 msgid "while setting flags on %s"
 msgstr "mientras se ponían las banderas en %s"
 
-#: misc/chattr.c:261
+#: misc/chattr.c:262
 #, c-format
 msgid "Version of %s set as %lu\n"
 msgstr "La versión de %s está puesta como %lu\n"
 
-#: misc/chattr.c:265
+#: misc/chattr.c:266
 #, c-format
 msgid "while setting version on %s"
 msgstr "mientras se estaba poniendo la versión en %s"
 
-#: misc/chattr.c:272
+#: misc/chattr.c:273
 #, c-format
 msgid "Project of %s set as %lu\n"
 msgstr "El proyecto de %s está puesto como %lu\n"
 
-#: misc/chattr.c:276
+#: misc/chattr.c:277
 #, c-format
 msgid "while setting project on %s"
 msgstr "mientras se estaba poniendo el proyecto en %s"
 
-#: misc/chattr.c:298
+#: misc/chattr.c:299
 msgid "Couldn't allocate path variable in chattr_dir_proc"
 msgstr "No se puede reservar la variable de ruta en chattr_dir_proc"
 
-#: misc/chattr.c:338
+#: misc/chattr.c:339
 msgid "= is incompatible with - and +\n"
 msgstr "= es incompatible con - y +\n"
 
-#: misc/chattr.c:346
+#: misc/chattr.c:347
 msgid "Must use '-v', =, - or +\n"
 msgstr "Se debe usar '-v', =, - o +\n"
 
@@ -4189,8 +4236,8 @@
 msgid "while reading inode %u"
 msgstr "mientras se leía el nodo-i %u"
 
-#: misc/create_inode.c:90 misc/create_inode.c:288 misc/create_inode.c:353
-#: misc/create_inode.c:391
+#: misc/create_inode.c:90 misc/create_inode.c:290 misc/create_inode.c:355
+#: misc/create_inode.c:393
 msgid "while expanding directory"
 msgstr "mientras se expandía el directorio"
 
@@ -4199,143 +4246,147 @@
 msgid "while linking \"%s\""
 msgstr "mientras se enlazaba \"%s\""
 
-#: misc/create_inode.c:105 misc/create_inode.c:132 misc/create_inode.c:322
+#: misc/create_inode.c:105 misc/create_inode.c:134 misc/create_inode.c:324
 #, c-format
 msgid "while writing inode %u"
 msgstr "mientras se escribía el nodo-i %u"
 
-#: misc/create_inode.c:152 misc/create_inode.c:176
+#: misc/create_inode.c:154 misc/create_inode.c:178
 #, c-format
 msgid "while listing attributes of \"%s\""
 msgstr "mientras se listaban los atributos de \"%s\""
 
-#: misc/create_inode.c:163
+#: misc/create_inode.c:165
 #, c-format
 msgid "while opening inode %u"
 msgstr "mientras se abría el nodo-i %u"
 
-#: misc/create_inode.c:169 misc/create_inode.c:196 misc/create_inode.c:1043
+#: misc/create_inode.c:171 misc/create_inode.c:198 misc/create_inode.c:1045
 #: misc/e2undo.c:182 misc/e2undo.c:479 misc/e2undo.c:485 misc/e2undo.c:491
 #: misc/mke2fs.c:359
 msgid "while allocating memory"
 msgstr "mientras se reservaba memoria"
 
-#: misc/create_inode.c:189 misc/create_inode.c:205
+#: misc/create_inode.c:191 misc/create_inode.c:207
 #, c-format
 msgid "while reading attribute \"%s\" of \"%s\""
 msgstr "mientras se estaban leyendo los atributos \"%s\" de \"%s\""
 
-#: misc/create_inode.c:214
+#: misc/create_inode.c:216
 #, c-format
 msgid "while writing attribute \"%s\" to inode %u"
 msgstr "mientras se escribía el atributo \"%s\" del nodo-i %u"
 
-#: misc/create_inode.c:224
+#: misc/create_inode.c:226
 #, c-format
 msgid "while closing inode %u"
 msgstr "mientras se cerraba el nodo-i %u"
 
-#: misc/create_inode.c:275
+#: misc/create_inode.c:277
 #, c-format
 msgid "while allocating inode \"%s\""
 msgstr "mientras se reservaba al nodo-i \"%s\""
 
-#: misc/create_inode.c:294
+#: misc/create_inode.c:296
 #, c-format
 msgid "while creating inode \"%s\""
 msgstr "mientras se creaba el nodo-i \"%s\""
 
-#: misc/create_inode.c:360
+#: misc/create_inode.c:362
 #, c-format
 msgid "while creating symlink \"%s\""
 msgstr "mientras se creaba el enlace simbólico \"%s\""
 
-#: misc/create_inode.c:378 misc/create_inode.c:963
+#: misc/create_inode.c:380 misc/create_inode.c:965
 #, c-format
 msgid "while looking up \"%s\""
 msgstr "mientras se buscaba \"%s\""
 
-#: misc/create_inode.c:398
+#: misc/create_inode.c:400
 #, c-format
 msgid "while creating directory \"%s\""
 msgstr "mientras se creaba el directorio \"%s\""
 
-#: misc/create_inode.c:627
+#: misc/create_inode.c:629
 #, c-format
 msgid "while opening \"%s\" to copy"
 msgstr "mientras se abría \"%s\" para copiar"
 
-#: misc/create_inode.c:805
+#: misc/create_inode.c:807
 #, c-format
 msgid "while changing working directory to \"%s\""
 msgstr "mientras se cambiaba el directorio de trabajo a \"%s\""
 
-#: misc/create_inode.c:815
+#: misc/create_inode.c:817
 #, c-format
 msgid "while scanning directory \"%s\""
 msgstr "mientras se exploraba el directorio \"%s\""
 
-#: misc/create_inode.c:825
+#: misc/create_inode.c:827
 #, c-format
 msgid "while lstat \"%s\""
 msgstr "mientras se intentaba lstat con \"%s\""
 
-#: misc/create_inode.c:875
+#: misc/create_inode.c:877
 #, c-format
 msgid "while creating special file \"%s\""
 msgstr "mientras se creaba el fichero especial \"%s\""
 
-#: misc/create_inode.c:884
+#: misc/create_inode.c:886
 msgid "malloc failed"
 msgstr "fallo de malloc"
 
-#: misc/create_inode.c:892
+#: misc/create_inode.c:894
 #, c-format
 msgid "while trying to read link \"%s\""
 msgstr "mientras se intentaba leer el enlace \"%s\""
 
-#: misc/create_inode.c:899
+#: misc/create_inode.c:901
 msgid "symlink increased in size between lstat() and readlink()"
 msgstr "el tamaño del enlace simbólico ha aumentado entre lstat() y readlink()"
 
-#: misc/create_inode.c:910
+#: misc/create_inode.c:912
 #, c-format
 msgid "while writing symlink\"%s\""
 msgstr "mientras se escribía el enlace simbólico \"%s\""
 
-#: misc/create_inode.c:921
+#: misc/create_inode.c:923
 #, c-format
 msgid "while writing file \"%s\""
 msgstr "mientras se escribía el fichero \"%s\""
 
-#: misc/create_inode.c:934
+#: misc/create_inode.c:936
 #, c-format
 msgid "while making dir \"%s\""
 msgstr "mientras se creaba el directorio \"%s\""
 
-#: misc/create_inode.c:952
+#: misc/create_inode.c:954
 msgid "while changing directory"
 msgstr "mientras se cambiaba de directorio"
 
-#: misc/create_inode.c:958
+#: misc/create_inode.c:960
 #, c-format
 msgid "ignoring entry \"%s\""
 msgstr "ignorar la entrada \"%s\""
 
-#: misc/create_inode.c:971
+#: misc/create_inode.c:973
 #, c-format
 msgid "while setting inode for \"%s\""
 msgstr "mientras se estaba poniendo el nodo-i para \"%s\""
 
-#: misc/create_inode.c:978
+#: misc/create_inode.c:980
 #, c-format
 msgid "while setting xattrs for \"%s\""
 msgstr "mientras se ponían los xattrs para \"%s\""
 
-#: misc/create_inode.c:1004
+#: misc/create_inode.c:1006
 msgid "while saving inode data"
 msgstr "mientras se guardaban los datos de nodo-i"
 
+#: misc/create_inode.c:1056
+msgid "while copying xattrs on root directory"
+msgstr "mientras se copiaban xattrs en el directorio raíz"
+
 #: misc/dumpe2fs.c:56
 #, c-format
 msgid "Usage: %s [-bfghimxV] [-o superblock=<num>] [-o blocksize=<num>] device\n"
@@ -4461,7 +4512,7 @@
 msgid "Bad blocks: %u"
 msgstr "Bloques dañados: %u"
 
-#: misc/dumpe2fs.c:373 misc/tune2fs.c:373
+#: misc/dumpe2fs.c:373 misc/tune2fs.c:375
 msgid "while reading journal inode"
 msgstr "mientras se leía el nodo-i del fichero de transacciones"
 
@@ -4477,7 +4528,7 @@
 msgid "Journal superblock magic number invalid!\n"
 msgstr "¡El número mágico del superbloque del fichero de transacciones es inválido!\n"
 
-#: misc/dumpe2fs.c:409 misc/tune2fs.c:216
+#: misc/dumpe2fs.c:409 misc/tune2fs.c:218
 msgid "while reading journal superblock"
 msgstr "mientras se leía el superbloque del fichero de transacciones"
 
@@ -4485,30 +4536,30 @@
 msgid "Couldn't find journal superblock magic numbers"
 msgstr "No se pueden encontrar los números mágicos del superbloque del fichero de transacciones"
 
-#: misc/dumpe2fs.c:468
+#: misc/dumpe2fs.c:470
 msgid "failed to alloc MMP buffer\n"
 msgstr "no se ha podido reservar un búfer MMP\n"
 
-#: misc/dumpe2fs.c:479
+#: misc/dumpe2fs.c:481
 #, c-format
 msgid "reading MMP block %llu from '%s'\n"
 msgstr "leyendo el bloque MMP %llu desde '%s'\n"
 
-#: misc/dumpe2fs.c:507 misc/mke2fs.c:800 misc/tune2fs.c:2027
+#: misc/dumpe2fs.c:511 misc/mke2fs.c:798 misc/tune2fs.c:2056
 msgid "Couldn't allocate memory to parse options!\n"
 msgstr "¡No se puede reservar memoria para analizar sintácticamente las opciones!\n"
 
-#: misc/dumpe2fs.c:533
+#: misc/dumpe2fs.c:537
 #, c-format
 msgid "Invalid superblock parameter: %s\n"
 msgstr "Parámetro de superbloque no válido: %s\n"
 
-#: misc/dumpe2fs.c:548
+#: misc/dumpe2fs.c:552
 #, c-format
 msgid "Invalid blocksize parameter: %s\n"
 msgstr "Parámetro de tamaño del bloque no válido: %s\n"
 
-#: misc/dumpe2fs.c:559
+#: misc/dumpe2fs.c:563
 #, c-format
 msgid ""
 "\n"
@@ -4531,27 +4582,27 @@
 "\tsuperblock=<número_del_superbloque>\n"
 "\tblocksize=<tamaño_del_bloque>\n"
 
-#: misc/dumpe2fs.c:649 misc/mke2fs.c:1889
+#: misc/dumpe2fs.c:653 misc/mke2fs.c:1892
 #, c-format
 msgid "\tUsing %s\n"
 msgstr "\tSe emplea %s\n"
 
-#: misc/dumpe2fs.c:694 misc/e2image.c:1629 misc/tune2fs.c:2913
-#: resize/main.c:416
+#: misc/dumpe2fs.c:698 misc/e2image.c:1629 misc/tune2fs.c:2998
+#: resize/main.c:418
 msgid "Couldn't find valid filesystem superblock.\n"
 msgstr "No se pudo encontrar un superbloque válido para el sistema de ficheros.\n"
 
-#: misc/dumpe2fs.c:716
+#: misc/dumpe2fs.c:720
 #, c-format
 msgid "%s: MMP feature not enabled.\n"
 msgstr "%s: característica MMP no habilitada.\n"
 
-#: misc/dumpe2fs.c:747
+#: misc/dumpe2fs.c:751
 #, c-format
 msgid "while trying to read '%s' bitmaps\n"
 msgstr "mientras se intentaban leer los mapas de bits '%s'\n"
 
-#: misc/dumpe2fs.c:756
+#: misc/dumpe2fs.c:760
 msgid ""
 "*** Run e2fsck now!\n"
 "\n"
@@ -4561,18 +4612,18 @@
 
 #: misc/e2image.c:107
 #, c-format
-msgid "Usage: %s [ -r|Q ] [ -f ] [ -b superblock ] [ -B blocksize][ -fr ] device image-file\n"
-msgstr "Modo de empleo: %s [ -r|Q ] [ -f ] [ -b superbloque ] [ -B tamaño_de_bloque][ -fr ] dispositivo fichero_de_imagen\n"
+msgid "Usage: %s [ -r|-Q ] [ -f ] [ -b superblock ] [ -B blocksize ] device image-file\n"
+msgstr "Modo de empleo: %s [ -r|-Q ] [ -f ] [ -b superbloque ] [ -B tamaño_de_bloque ] dispositivo fichero_de_imagen\n"
 
 #: misc/e2image.c:110
 #, c-format
 msgid "       %s -I device image-file\n"
-msgstr "                %s -I dispositivo fichero_de_imagen\n"
+msgstr "       %s -I dispositivo fichero_de_imagen\n"
 
 #: misc/e2image.c:111
 #, c-format
-msgid "       %s -ra  [  -cfnp  ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
-msgstr "             %s -ra  [  -cfnp  ] [ -o desplz_orig ] [ -O desplz_dest ] fs_orig [ fs_dest ]\n"
+msgid "       %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
+msgstr "       %s -ra [ -cfnp ] [ -o desplz_orig ] [ -O desplz_dest ] fs_orig [ fs_dest ]\n"
 
 #: misc/e2image.c:176 misc/e2image.c:589 misc/e2image.c:595
 #: misc/e2image.c:1194
@@ -4831,7 +4882,7 @@
 msgid "e2label: not an ext2 filesystem\n"
 msgstr "e2label: no es un sistema de ficheros ext2\n"
 
-#: misc/e2label.c:97 misc/tune2fs.c:3117
+#: misc/e2label.c:97 misc/tune2fs.c:3203
 #, c-format
 msgid "Warning: label too long, truncating.\n"
 msgstr "Atención: la etiqueta es muy larga, se trunca.\n"
@@ -4846,7 +4897,7 @@
 msgid "e2label: error writing superblock\n"
 msgstr "e2label: error al escribir el superbloque\n"
 
-#: misc/e2label.c:117 misc/tune2fs.c:1687
+#: misc/e2label.c:117 misc/tune2fs.c:1713
 #, c-format
 msgid "Usage: e2label device [newlabel]\n"
 msgstr "Modo de empleo: e2label dispositivo [nuevabandera]\n"
@@ -5049,7 +5100,7 @@
 msgid "byte_offset  byte_start     byte_end  fs_blocks blksz  grp  mkfs/mount_time           sb_uuid label\n"
 msgstr "depsplaz_oct comienzo_oct   fin_oct   bloqs_sf  blqtam grp  mkfs/hora_mount           sb_uuid etiq\n"
 
-#: misc/findsuper.c:264
+#: misc/findsuper.c:265
 #, c-format
 msgid ""
 "\n"
@@ -5157,51 +5208,51 @@
 msgid "%s: too many arguments\n"
 msgstr "%s: demasiados argumentos\n"
 
-#: misc/fuse2fs.c:3745
+#: misc/fuse2fs.c:3740
 msgid "Mounting read-only.\n"
 msgstr "Montando solo para lectura.\n"
 
-#: misc/fuse2fs.c:3769
+#: misc/fuse2fs.c:3764
 #, c-format
 msgid "%s: Allowing users to allocate all blocks. This is dangerous!\n"
 msgstr "%s: Se permite a los usuarios reservar todos los bloques. ¡Es peligroso!\n"
 
-#: misc/fuse2fs.c:3781 misc/fuse2fs.c:3795
+#: misc/fuse2fs.c:3776 misc/fuse2fs.c:3790
 #, c-format
 msgid "%s: %s.\n"
 msgstr "%s: %s.\n"
 
-#: misc/fuse2fs.c:3782 misc/fuse2fs.c:3797 misc/tune2fs.c:3013
+#: misc/fuse2fs.c:3777 misc/fuse2fs.c:3792 misc/tune2fs.c:3098
 #, c-format
 msgid "Please run e2fsck -fy %s.\n"
 msgstr "Por favor, ejecute 'e2fsck -fy %s'.\n"
 
-#: misc/fuse2fs.c:3804
+#: misc/fuse2fs.c:3799
 msgid "Journal needs recovery; running `e2fsck -E journal_only' is required.\n"
 msgstr "Hay que recuperar el fichero de transacciones; hace falta ejecutar `e2fsck -E journal_only'.\n"
 
-#: misc/fuse2fs.c:3812
+#: misc/fuse2fs.c:3807
 #, c-format
 msgid "%s: Writing to the journal is not supported.\n"
 msgstr "%s: No está contemplado escribir en el fichero de transacciones.\n"
 
-#: misc/fuse2fs.c:3827
+#: misc/fuse2fs.c:3822
 msgid "Warning: Mounting unchecked fs, running e2fsck is recommended.\n"
 msgstr "Atención: se está montando un sistema de ficheros sin comprobar; se recomienda ejecutar e2fsck.\n"
 
-#: misc/fuse2fs.c:3831
+#: misc/fuse2fs.c:3826
 msgid "Warning: Maximal mount count reached, running e2fsck is recommended.\n"
 msgstr "Atención: se ha llegado al número máximo de montajes; se recomienda ejecutar e2fsck.\n"
 
-#: misc/fuse2fs.c:3836
+#: misc/fuse2fs.c:3831
 msgid "Warning: Check time reached; running e2fsck is recommended.\n"
 msgstr "Atención: se ha llegado al tiempo límite de una comprobación; se recomienda ejecutar e2fsck.\n"
 
-#: misc/fuse2fs.c:3840
+#: misc/fuse2fs.c:3835
 msgid "Orphans detected; running e2fsck is recommended.\n"
 msgstr "Se han detectado huérfanos; se recomienda ejecutar e2fsck.\n"
 
-#: misc/fuse2fs.c:3844
+#: misc/fuse2fs.c:3839
 msgid "Errors detected; running e2fsck is required.\n"
 msgstr "Se han detectado errores; es preciso ejecutar e2fsck.\n"
 
@@ -5306,7 +5357,7 @@
 "\n"
 "No se pueden escribir %d bloques en la tabla de nodos-i comenzando en %llu: %s\n"
 
-#: misc/mke2fs.c:456 misc/mke2fs.c:2809 misc/mke2fs.c:3214
+#: misc/mke2fs.c:456 misc/mke2fs.c:2821 misc/mke2fs.c:3226
 msgid "done                            \n"
 msgstr "hecho                           \n"
 
@@ -5370,12 +5421,12 @@
 msgid "while writing journal superblock"
 msgstr "mientras se escribía el superbloque del fichero de transacciones"
 
-#: misc/mke2fs.c:665
+#: misc/mke2fs.c:664
 #, c-format
 msgid "Creating filesystem with %llu %dk blocks and %u inodes\n"
 msgstr "Se está creando un sistema de ficheros con %llu bloques de %dk y %u nodos-i\n"
 
-#: misc/mke2fs.c:673
+#: misc/mke2fs.c:672
 #, c-format
 msgid ""
 "warning: %llu blocks unused.\n"
@@ -5384,164 +5435,164 @@
 "Atención: hay %llu bloques sin usar.\n"
 "\n"
 
-#: misc/mke2fs.c:678
+#: misc/mke2fs.c:675
 #, c-format
-msgid "Filesystem label=%s\n"
-msgstr "Etiqueta del sistema de ficheros=%s\n"
+msgid "Filesystem label=%.*s\n"
+msgstr "Etiqueta del sistema de ficheros=%.*s\n"
 
-#: misc/mke2fs.c:681
+#: misc/mke2fs.c:679
 #, c-format
 msgid "OS type: %s\n"
 msgstr "Tipo de SO: %s\n"
 
-#: misc/mke2fs.c:683
+#: misc/mke2fs.c:681
 #, c-format
 msgid "Block size=%u (log=%u)\n"
 msgstr "Tamaño del bloque=%u (log=%u)\n"
 
-#: misc/mke2fs.c:686
+#: misc/mke2fs.c:684
 #, c-format
 msgid "Cluster size=%u (log=%u)\n"
 msgstr "Tamaño del «cluster»=%u (log=%u)\n"
 
-#: misc/mke2fs.c:690
+#: misc/mke2fs.c:688
 #, c-format
 msgid "Fragment size=%u (log=%u)\n"
 msgstr "Tamaño del fragmento=%u (log=%u)\n"
 
-#: misc/mke2fs.c:692
+#: misc/mke2fs.c:690
 #, c-format
 msgid "Stride=%u blocks, Stripe width=%u blocks\n"
 msgstr "Stride=%u bloques, anchura de stripe=%u bloques\n"
 
-#: misc/mke2fs.c:694
+#: misc/mke2fs.c:692
 #, c-format
 msgid "%u inodes, %llu blocks\n"
 msgstr "%u nodos-i, %llu bloques\n"
 
-#: misc/mke2fs.c:696
+#: misc/mke2fs.c:694
 #, c-format
 msgid "%llu blocks (%2.2f%%) reserved for the super user\n"
 msgstr "%llu bloques (%2.2f%%) reservados para el superusuario\n"
 
-#: misc/mke2fs.c:699
+#: misc/mke2fs.c:697
 #, c-format
 msgid "First data block=%u\n"
 msgstr "Primer bloque de datos=%u\n"
 
-#: misc/mke2fs.c:701
+#: misc/mke2fs.c:699
 #, c-format
 msgid "Root directory owner=%u:%u\n"
 msgstr "Propietario del directorio raíz=%u:%u\n"
 
-#: misc/mke2fs.c:703
+#: misc/mke2fs.c:701
 #, c-format
 msgid "Maximum filesystem blocks=%lu\n"
 msgstr "Número máximo de bloques del sistema de ficheros=%lu\n"
 
-#: misc/mke2fs.c:707
+#: misc/mke2fs.c:705
 #, c-format
 msgid "%u block groups\n"
 msgstr "%u grupos de bloques\n"
 
-#: misc/mke2fs.c:709
+#: misc/mke2fs.c:707
 #, c-format
 msgid "%u block group\n"
 msgstr "%u grupo de bloques\n"
 
-#: misc/mke2fs.c:711
+#: misc/mke2fs.c:709
 #, c-format
 msgid "%u blocks per group, %u clusters per group\n"
 msgstr "%u bloques por grupo, %u «clusters» por grupo\n"
 
-#: misc/mke2fs.c:714
+#: misc/mke2fs.c:712
 #, c-format
 msgid "%u blocks per group, %u fragments per group\n"
 msgstr "%u bloques por grupo, %u fragmentos por grupo\n"
 
-#: misc/mke2fs.c:716
+#: misc/mke2fs.c:714
 #, c-format
 msgid "%u inodes per group\n"
 msgstr "%u nodos-i por grupo\n"
 
-#: misc/mke2fs.c:725
+#: misc/mke2fs.c:723
 #, c-format
 msgid "Filesystem UUID: %s\n"
 msgstr "UUID del sistema de ficheros: %s\n"
 
-#: misc/mke2fs.c:726
+#: misc/mke2fs.c:724
 msgid "Superblock backups stored on blocks: "
 msgstr "Respaldos del superbloque guardados en los bloques: "
 
-#: misc/mke2fs.c:822
+#: misc/mke2fs.c:820
 #, c-format
 msgid "%s requires '-O 64bit'\n"
 msgstr "%s requiere '-O 64bit'\n"
 
-#: misc/mke2fs.c:828
+#: misc/mke2fs.c:826
 #, c-format
 msgid "'%s' must be before 'resize=%u'\n"
 msgstr "'%s' debe estar antes de 'resize=%u'\n"
 
-#: misc/mke2fs.c:841
+#: misc/mke2fs.c:839
 #, c-format
 msgid "Invalid desc_size: '%s'\n"
 msgstr "desc_size no válido: '%s'\n"
 
-#: misc/mke2fs.c:855
+#: misc/mke2fs.c:853
 #, c-format
 msgid "Invalid hash seed: %s\n"
 msgstr "La semilla «hash» no es válida: %s\n"
 
-#: misc/mke2fs.c:867
+#: misc/mke2fs.c:865
 #, c-format
 msgid "Invalid offset: %s\n"
 msgstr "Desplazamiento no válido: %s\n"
 
-#: misc/mke2fs.c:881 misc/tune2fs.c:2055
+#: misc/mke2fs.c:879 misc/tune2fs.c:2084
 #, c-format
 msgid "Invalid mmp_update_interval: %s\n"
 msgstr "mmp_update_interval no válido: %s\n"
 
-#: misc/mke2fs.c:898
+#: misc/mke2fs.c:896
 #, c-format
 msgid "Invalid # of backup superblocks: %s\n"
 msgstr "Número de superbloques de respaldo no válido: %s\n"
 
-#: misc/mke2fs.c:920
+#: misc/mke2fs.c:918
 #, c-format
 msgid "Invalid stride parameter: %s\n"
 msgstr "Parámetro de «stride» no válido: %s\n"
 
-#: misc/mke2fs.c:935
+#: misc/mke2fs.c:933
 #, c-format
 msgid "Invalid stripe-width parameter: %s\n"
 msgstr "Parámetro stripe-width no válido: %s\n"
 
-#: misc/mke2fs.c:958
+#: misc/mke2fs.c:956
 #, c-format
 msgid "Invalid resize parameter: %s\n"
 msgstr "Parámetro de variación de tamaño no válido: %s\n"
 
-#: misc/mke2fs.c:965
+#: misc/mke2fs.c:963
 msgid "The resize maximum must be greater than the filesystem size.\n"
 msgstr "El máximo de la variación de tamaño debe ser mayor que el tamaño del sistema de ficheros.\n"
 
-#: misc/mke2fs.c:989
+#: misc/mke2fs.c:987
 msgid "On-line resizing not supported with revision 0 filesystems\n"
 msgstr "El cambio de tamaño en línea no es posible en sistemas de archivos de revisión 0\n"
 
-#: misc/mke2fs.c:1015 misc/mke2fs.c:1024
+#: misc/mke2fs.c:1013 misc/mke2fs.c:1022
 #, c-format
 msgid "Invalid root_owner: '%s'\n"
 msgstr "root_owner no válido: '%s'\n"
 
-#: misc/mke2fs.c:1069
+#: misc/mke2fs.c:1067
 #, c-format
 msgid "Invalid encoding: %s"
 msgstr "La codificación no es válida: %s"
 
-#: misc/mke2fs.c:1087
+#: misc/mke2fs.c:1085
 #, c-format
 msgid ""
 "\n"
@@ -5594,7 +5645,7 @@
 "\tquotatype=<tipo(s) de cuota para activar>\n"
 "\n"
 
-#: misc/mke2fs.c:1114
+#: misc/mke2fs.c:1112
 #, c-format
 msgid ""
 "\n"
@@ -5605,17 +5656,17 @@
 "Atención: El parámetro «stripe-width» de RAID %u no es un múltiplo par del parámetro «stride» %u.\n"
 "\n"
 
-#: misc/mke2fs.c:1125
+#: misc/mke2fs.c:1123 misc/tune2fs.c:2220
 #, c-format
 msgid "error: Invalid encoding flag: %s\n"
 msgstr "error: Indicador de codificación no válido: %s\n"
 
-#: misc/mke2fs.c:1131
+#: misc/mke2fs.c:1129 misc/tune2fs.c:2229
 #, c-format
 msgid "error: An encoding must be explicitly specified when passing encoding-flags\n"
 msgstr "error: Debe especificarse explícitamente una codifiación cuando se pasan las banderas de codificación\n"
 
-#: misc/mke2fs.c:1179
+#: misc/mke2fs.c:1177
 #, c-format
 msgid ""
 "Syntax error in mke2fs config file (%s, line #%d)\n"
@@ -5624,17 +5675,17 @@
 "Error de sintaxis en el fichero de configuración de mke2fs (%s, línea #%d)\n"
 "\t%s\n"
 
-#: misc/mke2fs.c:1192 misc/tune2fs.c:1068
+#: misc/mke2fs.c:1190 misc/tune2fs.c:1072
 #, c-format
 msgid "Invalid filesystem option set: %s\n"
 msgstr "Se puso una opción no válida para el sistema de ficheros: %s\n"
 
-#: misc/mke2fs.c:1204 misc/tune2fs.c:417
+#: misc/mke2fs.c:1202 misc/tune2fs.c:419
 #, c-format
 msgid "Invalid mount option set: %s\n"
 msgstr "Se puso una opción de montaje no válida: %s\n"
 
-#: misc/mke2fs.c:1340
+#: misc/mke2fs.c:1338
 #, c-format
 msgid ""
 "\n"
@@ -5643,7 +5694,7 @@
 "\n"
 "El fichero mke2fs.conf no define el tipo de sistema de ficheros %s.\n"
 
-#: misc/mke2fs.c:1344
+#: misc/mke2fs.c:1342
 msgid ""
 "You probably need to install an updated mke2fs.conf file.\n"
 "\n"
@@ -5651,11 +5702,11 @@
 "Probablemente sea necesario instalar un fichero mke2fs.conf actualizado.\n"
 "\n"
 
-#: misc/mke2fs.c:1348
+#: misc/mke2fs.c:1346
 msgid "Aborting...\n"
 msgstr "Interrumpiendo...\n"
 
-#: misc/mke2fs.c:1389
+#: misc/mke2fs.c:1387
 #, c-format
 msgid ""
 "\n"
@@ -5666,149 +5717,149 @@
 "Atención: el fs_type %s no está definido en mke2fs.conf\n"
 "\n"
 
-#: misc/mke2fs.c:1571
+#: misc/mke2fs.c:1574
 msgid "Couldn't allocate memory for new PATH.\n"
 msgstr "No se puede reservar memoria para la nueva RUTA.\n"
 
-#: misc/mke2fs.c:1608
+#: misc/mke2fs.c:1611
 #, c-format
 msgid "Couldn't init profile successfully (error: %ld).\n"
 msgstr "No se puede inicializar correctamente el perfil (error: %ld).\n"
 
-#: misc/mke2fs.c:1641
+#: misc/mke2fs.c:1644
 #, c-format
 msgid "invalid block size - %s"
 msgstr "tamaño del bloque inválido - %s"
 
-#: misc/mke2fs.c:1645
+#: misc/mke2fs.c:1648
 #, c-format
 msgid "Warning: blocksize %d not usable on most systems.\n"
 msgstr "Atención: el tamaño del bloque %d no se puede utilizar en muchos sistemas.\n"
 
-#: misc/mke2fs.c:1661
+#: misc/mke2fs.c:1664
 #, c-format
 msgid "invalid cluster size - %s"
 msgstr "tamaño del «cluster» no válido - %s"
 
-#: misc/mke2fs.c:1674
+#: misc/mke2fs.c:1677
 msgid "'-R' is deprecated, use '-E' instead"
 msgstr "'-R' está en desuso; utilice '-E' en su lugar"
 
-#: misc/mke2fs.c:1688 misc/tune2fs.c:1784
+#: misc/mke2fs.c:1691 misc/tune2fs.c:1810
 #, c-format
 msgid "bad error behavior - %s"
 msgstr "comportamiento de errores incorrecto - %s"
 
-#: misc/mke2fs.c:1700
+#: misc/mke2fs.c:1703
 msgid "Illegal number for blocks per group"
 msgstr "Número no válido de bloques por grupo"
 
-#: misc/mke2fs.c:1705
+#: misc/mke2fs.c:1708
 msgid "blocks per group must be multiple of 8"
 msgstr "los bloques por grupo deben ser un múltiplo de 8"
 
-#: misc/mke2fs.c:1713
+#: misc/mke2fs.c:1716
 msgid "Illegal number for flex_bg size"
 msgstr "Número no válido para el tamaño de flex_bg"
 
-#: misc/mke2fs.c:1719
+#: misc/mke2fs.c:1722
 msgid "flex_bg size must be a power of 2"
 msgstr "el tamaño de flex_bg debe ser una potencia de 2"
 
-#: misc/mke2fs.c:1724
+#: misc/mke2fs.c:1727
 #, c-format
 msgid "flex_bg size (%lu) must be less than or equal to 2^31"
 msgstr "el tamaño de flex_bg (%lu) debe ser menor o igual que 2^31"
 
-#: misc/mke2fs.c:1734
+#: misc/mke2fs.c:1737
 #, c-format
 msgid "invalid inode ratio %s (min %d/max %d)"
 msgstr "proporción de nodos-i inválida %s (min %d/max %d)"
 
-#: misc/mke2fs.c:1744
+#: misc/mke2fs.c:1747
 #, c-format
 msgid "invalid inode size - %s"
 msgstr "tamaño de los nodos-i inválido - %s"
 
-#: misc/mke2fs.c:1757
+#: misc/mke2fs.c:1760
 msgid "Warning: -K option is deprecated and should not be used anymore. Use '-E nodiscard' extended option instead!\n"
 msgstr "¡Atención: la opción -K está en desuso y no debería utilizarse nunca más. Utilice la opción extendida '-E nodiscard' en su lugar!\n"
 
-#: misc/mke2fs.c:1768
+#: misc/mke2fs.c:1771
 msgid "in malloc for bad_blocks_filename"
 msgstr "en malloc para fichero_de_bloques_dañados"
 
-#: misc/mke2fs.c:1777
+#: misc/mke2fs.c:1780
 #, c-format
 msgid ""
 "Warning: label too long; will be truncated to '%s'\n"
 "\n"
 msgstr "Atención: la etiqueta es demasiado larga; se trunca a '%s'\n"
 
-#: misc/mke2fs.c:1786
+#: misc/mke2fs.c:1789
 #, c-format
 msgid "invalid reserved blocks percent - %s"
 msgstr "el porcentaje de bloques reservados es inválido - %s"
 
-#: misc/mke2fs.c:1801
+#: misc/mke2fs.c:1804
 #, c-format
 msgid "bad num inodes - %s"
 msgstr "número de los nodos-i inválido - %s"
 
-#: misc/mke2fs.c:1814
+#: misc/mke2fs.c:1817
 msgid "while allocating fs_feature string"
 msgstr "mientras se reservaba la cadena de fs_feature"
 
-#: misc/mke2fs.c:1831
+#: misc/mke2fs.c:1834
 #, c-format
 msgid "bad revision level - %s"
 msgstr "nivel de revisión incorrecto - %s"
 
-#: misc/mke2fs.c:1836
+#: misc/mke2fs.c:1839
 #, c-format
 msgid "while trying to create revision %d"
 msgstr "mientras se intentaba crear la revisión %d"
 
-#: misc/mke2fs.c:1850
+#: misc/mke2fs.c:1853
 msgid "The -t option may only be used once"
 msgstr "La opción -t solo puede utilizarse una vez"
 
-#: misc/mke2fs.c:1858
+#: misc/mke2fs.c:1861
 msgid "The -T option may only be used once"
 msgstr "La opción -T solo puede utilizarse una vez"
 
-#: misc/mke2fs.c:1914 misc/mke2fs.c:3298
+#: misc/mke2fs.c:1917 misc/mke2fs.c:3310
 #, c-format
 msgid "while trying to open journal device %s\n"
 msgstr "mientras se intentaba abrir el dispositivo del fichero de transacciones %s\n"
 
-#: misc/mke2fs.c:1920
+#: misc/mke2fs.c:1923
 #, c-format
 msgid "Journal dev blocksize (%d) smaller than minimum blocksize %d\n"
 msgstr ""
 "El tamaño del bloque del dispositivo del fichero de transacciones (%d) es\n"
 "menor que el tamaño del bloque mínimo %d\n"
 
-#: misc/mke2fs.c:1926
+#: misc/mke2fs.c:1929
 #, c-format
 msgid "Using journal device's blocksize: %d\n"
 msgstr "Utilizando el tamaño de bloque del dispositivo del fichero de transacciones: %d\n"
 
 # The specified number of blocks is invalid.
-#: misc/mke2fs.c:1937
+#: misc/mke2fs.c:1940
 #, c-format
 msgid "invalid blocks '%s' on device '%s'"
 msgstr "bloques no válidos '%s' en el dispositivo '%s'"
 
-#: misc/mke2fs.c:1967
+#: misc/mke2fs.c:1970
 msgid "filesystem"
 msgstr "sistema de ficheros"
 
-#: misc/mke2fs.c:1985 resize/main.c:497
+#: misc/mke2fs.c:1988 resize/main.c:499
 msgid "while trying to determine filesystem size"
 msgstr "mientras se intentaba determinar el tamaño del sistema de ficheros"
 
-#: misc/mke2fs.c:1991
+#: misc/mke2fs.c:1994
 msgid ""
 "Couldn't determine device size; you must specify\n"
 "the size of the filesystem\n"
@@ -5817,7 +5868,7 @@
 "explícitamente el tamaño del sistema de ficheros\n"
 
 # Se informó que -> Se informó de que
-#: misc/mke2fs.c:1998
+#: misc/mke2fs.c:2001
 msgid ""
 "Device size reported to be zero.  Invalid partition specified, or\n"
 "\tpartition table wasn't reread after running fdisk, due to\n"
@@ -5830,48 +5881,48 @@
 "\tpartición modificada está ocupada o en uso.  Es necesario reiniciar\n"
 "\tpara poder releer la tabla de particiones.\n"
 
-#: misc/mke2fs.c:2015
+#: misc/mke2fs.c:2018
 msgid "Filesystem larger than apparent device size."
 msgstr "El sistema de ficheros es más grande que el tamaño aparente del dispositivo."
 
-#: misc/mke2fs.c:2035
+#: misc/mke2fs.c:2038
 msgid "Failed to parse fs types list\n"
 msgstr "Fallo al analizar sintácticamente la lista de tipos de sf\n"
 
-#: misc/mke2fs.c:2085
+#: misc/mke2fs.c:2088
 msgid "The HURD does not support the filetype feature.\n"
 msgstr "El HURD no tiene implementada la opción de tipos de fichero.\n"
 
-#: misc/mke2fs.c:2090
+#: misc/mke2fs.c:2093
 msgid "The HURD does not support the huge_file feature.\n"
 msgstr "El HURD no tiene implementada la opción huge_file.\n"
 
-#: misc/mke2fs.c:2095
+#: misc/mke2fs.c:2098
 msgid "The HURD does not support the metadata_csum feature.\n"
 msgstr "El HURD no tiene implementada la opción metadata_csum.\n"
 
-#: misc/mke2fs.c:2100
+#: misc/mke2fs.c:2103
 msgid "The HURD does not support the ea_inode feature.\n"
 msgstr "El HURD no tiene implementada la opción ea_inode.\n"
 
-#: misc/mke2fs.c:2110
+#: misc/mke2fs.c:2113
 msgid "while trying to determine hardware sector size"
 msgstr "mientras se intentaba determinar el tamaño del sector del hardware"
 
-#: misc/mke2fs.c:2116
+#: misc/mke2fs.c:2119
 msgid "while trying to determine physical sector size"
 msgstr "mientras se intentaba determinar el tamaño del sector físico"
 
-#: misc/mke2fs.c:2148
+#: misc/mke2fs.c:2151
 msgid "while setting blocksize; too small for device\n"
 msgstr "mientras se establecía el tamaño de bloque; demasiado pequeño para el dispositivo\n"
 
-#: misc/mke2fs.c:2153
+#: misc/mke2fs.c:2156
 #, c-format
 msgid "Warning: specified blocksize %d is less than device physical sectorsize %d\n"
 msgstr "Atención: el tamaño de bloque especificado %d es menor que el tamaño de sector físico del dispositivo %d\n"
 
-#: misc/mke2fs.c:2177
+#: misc/mke2fs.c:2180
 #, c-format
 msgid ""
 "%s: Size of device (0x%llx blocks) %s too big to be expressed\n"
@@ -5880,7 +5931,7 @@
 "%s: Tamaño del dispositivo (0x%llx bloques) %s demasiado grande para expresarse\n"
 "\ten 32 bits utilizando un tamaño de bloque de %d.\n"
 
-#: misc/mke2fs.c:2191
+#: misc/mke2fs.c:2194
 #, c-format
 msgid ""
 "%s: Size of device (0x%llx blocks) %s too big to create\n"
@@ -5889,82 +5940,87 @@
 "%s: Tamaño del dispositivo (0x%llx bloques) %s demasiado grande para crear\n"
 "\tun sistema de ficheros utilizando un tamaño de bloque de %d.\n"
 
-#: misc/mke2fs.c:2213
+#: misc/mke2fs.c:2216
 msgid "fs_types for mke2fs.conf resolution: "
 msgstr "resolución de fs_types para mke2fs.conf: "
 
-#: misc/mke2fs.c:2220
+#: misc/mke2fs.c:2223
 msgid "Filesystem features not supported with revision 0 filesystems\n"
 msgstr "Características del sistema de ficheros no disponibles con la revisión 0 de los sistemas de ficheros\n"
 
-#: misc/mke2fs.c:2228
+#: misc/mke2fs.c:2231
 msgid "Sparse superblocks not supported with revision 0 filesystems\n"
 msgstr "Superbloques dispersos no disponibles con la revisión 0 de los sistemas de ficheros\n"
 
-#: misc/mke2fs.c:2238
+#: misc/mke2fs.c:2241
 msgid "Journals not supported with revision 0 filesystems\n"
 msgstr "Fichero de transacciones no implementado para la revisión 0 de los sistemas de ficheros\n"
 
-#: misc/mke2fs.c:2251
+#: misc/mke2fs.c:2254
 #, c-format
 msgid "invalid reserved blocks percent - %lf"
 msgstr "el porcentaje de bloques reservados es inválido - %lf"
 
-#: misc/mke2fs.c:2268
+#: misc/mke2fs.c:2271
 msgid "Extents MUST be enabled for a 64-bit filesystem.  Pass -O extents to rectify.\n"
 msgstr "Los «extents» DEBEN estar activados para un sistema de ficheros de 64 bits.  Pase -O extents para rectificar.\n"
 
-#: misc/mke2fs.c:2288
+#: misc/mke2fs.c:2291
 msgid "The cluster size may not be smaller than the block size.\n"
 msgstr "El tamaño de «cluster» no puede ser menor que el tamaño de bloque.\n"
 
-#: misc/mke2fs.c:2294
+#: misc/mke2fs.c:2297
 msgid "specifying a cluster size requires the bigalloc feature"
 msgstr "para especificar un tamaño de «cluster» hace falta la característica «bigalloc»"
 
-#: misc/mke2fs.c:2314
+#: misc/mke2fs.c:2317
 #, c-format
 msgid "warning: Unable to get device geometry for %s\n"
 msgstr "atención: no se puede obtener la geometría del dispositivo para %s\n"
 
-#: misc/mke2fs.c:2317
+#: misc/mke2fs.c:2329
 #, c-format
 msgid "%s alignment is offset by %lu bytes.\n"
 msgstr "el alineamiento de %s está desplazado en %lu bytes.\n"
 
-#: misc/mke2fs.c:2319
+#: misc/mke2fs.c:2331
 #, c-format
 msgid "This may result in very poor performance, (re)-partitioning suggested.\n"
 msgstr "Esto puede provocar un rendimiento muy bajo; se sugiere (re)particionar.\n"
 
-#: misc/mke2fs.c:2340
+#: misc/mke2fs.c:2337
+#, c-format
+msgid "%s is capable of DAX but current block size %u is different from system page size %u so filesystem will not support DAX.\n"
+msgstr "%s tiene capacidad DAX pero el tamaño actual %u de bloque difiere del tamaño %u de página del sistema, por lo que el sistema de ficheros no admitirá DAX.\n"
+
+#: misc/mke2fs.c:2361
 #, c-format
 msgid "%d-byte blocks too big for system (max %d)"
 msgstr "los bloques de %d bytes son muy grandes para el sistema (máx %d)"
 
-#: misc/mke2fs.c:2344
+#: misc/mke2fs.c:2365
 #, c-format
 msgid "Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
 msgstr ""
 "Atención: los bloques de %d bytes son muy grandes para el sistema\n"
 "(máx %d): continuación forzada\n"
 
-#: misc/mke2fs.c:2352
+#: misc/mke2fs.c:2373
 #, c-format
 msgid "Suggestion: Use Linux kernel >= 3.18 for improved stability of the metadata and journal checksum features.\n"
 msgstr "Sugerencia: utilice un núcleo de Linux >= 3.18 para disponer de una mejor estabilidad de los metadatos y de suma de comprobación del fichero de transacciones.\n"
 
-#: misc/mke2fs.c:2398
+#: misc/mke2fs.c:2419
 #, c-format
 msgid "Unknown filename encoding from profile: %s"
 msgstr "Codificación de nombre de fichero desconocida en el perfil: %s"
 
-#: misc/mke2fs.c:2409
+#: misc/mke2fs.c:2430
 #, c-format
 msgid "Unknown encoding flags from profile: %s"
 msgstr "Banderas de codificación desconocidas en el perfil: %s"
 
-#: misc/mke2fs.c:2434
+#: misc/mke2fs.c:2455
 #, c-format
 msgid ""
 "\n"
@@ -5979,24 +6035,16 @@
 "pero esto podría no ser lo que usted desea.\n"
 "\n"
 
-#: misc/mke2fs.c:2449
+#: misc/mke2fs.c:2470
 #, c-format
 msgid "%d byte inodes are too small for project quota"
 msgstr "los nodos-i de %d octetos son demasiado pequeños para cuota de proyecto"
 
-#: misc/mke2fs.c:2465
-msgid ""
-"The encrypt and casefold features are not compatible.\n"
-"They can not be both enabled simultaneously.\n"
-msgstr ""
-"Las características de cifrado y «casefold» no son compatibles.\n"
-"No pueden estar activadas las dos a la vez.\n"
-
-#: misc/mke2fs.c:2480
+#: misc/mke2fs.c:2492
 msgid "Can't support bigalloc feature without extents feature"
 msgstr "No se puede disponer de la característica «bigalloc» sin la característica «extents»"
 
-#: misc/mke2fs.c:2487
+#: misc/mke2fs.c:2499
 msgid ""
 "The resize_inode and meta_bg features are not compatible.\n"
 "They can not be both enabled simultaneously.\n"
@@ -6004,7 +6052,7 @@
 "Las características resize_inode y meta_bg no son compatibles.\n"
 "No pueden estar activadas las dos a la vez.\n"
 
-#: misc/mke2fs.c:2495
+#: misc/mke2fs.c:2507
 msgid ""
 "\n"
 "Warning: the bigalloc feature is still under development\n"
@@ -6016,39 +6064,39 @@
 "Véase https://ext4.wiki.kernel.org/index.php/Bigalloc para más información\n"
 "\n"
 
-#: misc/mke2fs.c:2507
+#: misc/mke2fs.c:2519
 msgid "reserved online resize blocks not supported on non-sparse filesystem"
 msgstr "el cambio de tamaño en línea de los bloques reservados no está implementado para los sistemas de ficheros que no están esparcidos"
 
-#: misc/mke2fs.c:2516
+#: misc/mke2fs.c:2528
 msgid "blocks per group count out of range"
 msgstr "la cuenta de bloques por grupo está fuera del intervalo"
 
-#: misc/mke2fs.c:2538
+#: misc/mke2fs.c:2550
 msgid "Flex_bg feature not enabled, so flex_bg size may not be specified"
 msgstr "La característica flex_bg no está activada, por lo que no puede especificarse el tamaño de flex_bg"
 
-#: misc/mke2fs.c:2550
+#: misc/mke2fs.c:2562
 #, c-format
 msgid "invalid inode size %d (min %d/max %d)"
 msgstr "tamaño incorrecto del nodo-i %d (mín %d/máx %d)"
 
-#: misc/mke2fs.c:2565
+#: misc/mke2fs.c:2577
 #, c-format
 msgid "%d byte inodes are too small for inline data; specify larger size"
 msgstr "los nodos-i de %d octetos son demasiado pequeños para datos en línea; especifique un tamaño mayor"
 
-#: misc/mke2fs.c:2580
+#: misc/mke2fs.c:2592
 #, c-format
 msgid "too many inodes (%llu), raise inode ratio?"
 msgstr "demasiados nodos-i (%llu), ¿aumentar el ratio de los nodos-i?"
 
-#: misc/mke2fs.c:2587
+#: misc/mke2fs.c:2599
 #, c-format
 msgid "too many inodes (%llu), specify < 2^32 inodes"
 msgstr "demasiados nodos-i (%llu), especifique menos que 2^32 nodos-i"
 
-#: misc/mke2fs.c:2601
+#: misc/mke2fs.c:2613
 #, c-format
 msgid ""
 "inode_size (%u) * inodes_count (%u) too big for a\n"
@@ -6059,65 +6107,65 @@
 "\tgrande para un sistema de ficheros con %llu bloques; especifique\n"
 "\tun ratio mayor de nodos-i (-i) o un menor número de nodos-i (-N).\n"
 
-#: misc/mke2fs.c:2788
+#: misc/mke2fs.c:2800
 msgid "Discarding device blocks: "
 msgstr "Descartando los bloques del dispositivo: "
 
-#: misc/mke2fs.c:2804
+#: misc/mke2fs.c:2816
 msgid "failed - "
 msgstr "fallo - "
 
-#: misc/mke2fs.c:2863
+#: misc/mke2fs.c:2875
 msgid "while initializing quota context"
 msgstr "mientras se inicializaba el contexto de cuota"
 
-#: misc/mke2fs.c:2870
+#: misc/mke2fs.c:2882
 msgid "while writing quota inodes"
 msgstr "mientras se escribían los nodos-i de la cuota"
 
-#: misc/mke2fs.c:2895
+#: misc/mke2fs.c:2907
 #, c-format
 msgid "bad error behavior in profile - %s"
 msgstr "comportamiento de errores incorrecto en el perfil - %s"
 
-#: misc/mke2fs.c:2971
+#: misc/mke2fs.c:2983
 msgid "in malloc for android_sparse_params"
 msgstr "en malloc para parámetros_dispersos_de_android"
 
-#: misc/mke2fs.c:2985
+#: misc/mke2fs.c:2997
 msgid "while setting up superblock"
 msgstr "mientras se ajustaba el superbloque"
 
-#: misc/mke2fs.c:3001
+#: misc/mke2fs.c:3013
 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 "Los «extents» no están activados.  Es posible calcular la suma de comprobación de los árboles «extent» de ficheros, no de los mapas de bloques.  No activar los «extents» reduce la cobertura de las sumas de comprobación de metadatos.  Pase -O «extents» para rectificar.\n"
 
-#: misc/mke2fs.c:3008
+#: misc/mke2fs.c:3020
 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 "No está activado que se admitan sistemas de ficheros de 64 bits.  Los campos más grandes ofrecidos por esta característica permiten la suma de comprobación más potente.  Pase -O 64bit para rectificar.\n"
 
-#: misc/mke2fs.c:3016
+#: misc/mke2fs.c:3028
 msgid "The metadata_csum_seed feature requires the metadata_csum feature.\n"
 msgstr "La característica metadata_csum_seed requiere la característica metadata_csum.\n"
 
-#: misc/mke2fs.c:3040
+#: misc/mke2fs.c:3052
 msgid "Discard succeeded and will return 0s - skipping inode table wipe\n"
 msgstr "El descarte ha sido correcto y devolverá 0s - se salta el borrado de la tabla de nodos-i\n"
 
-#: misc/mke2fs.c:3139
+#: misc/mke2fs.c:3151
 #, c-format
 msgid "unknown os - %s"
 msgstr "sistema operativo desconocido - %s"
 
-#: misc/mke2fs.c:3202
+#: misc/mke2fs.c:3214
 msgid "Allocating group tables: "
 msgstr "Reservando las tablas de grupo: "
 
-#: misc/mke2fs.c:3210
+#: misc/mke2fs.c:3222
 msgid "while trying to allocate filesystem tables"
 msgstr "mientras se intentaba reservar las tablas del sistema de ficheros"
 
-#: misc/mke2fs.c:3219
+#: misc/mke2fs.c:3231
 msgid ""
 "\n"
 "\twhile converting subcluster bitmap"
@@ -6125,30 +6173,30 @@
 "\n"
 "\tmientras se convertía el mapa de bits de «subcluster»"
 
-#: misc/mke2fs.c:3225
+#: misc/mke2fs.c:3237
 #, c-format
 msgid "%s may be further corrupted by superblock rewrite\n"
 msgstr "%s puede corromperse aún más por reescritura de superbloque\n"
 
-#: misc/mke2fs.c:3266
+#: misc/mke2fs.c:3278
 #, c-format
 msgid "while zeroing block %llu at end of filesystem"
 msgstr "mientras se inicializaba a cero el bloque %llu al final del sistema de ficheros"
 
-#: misc/mke2fs.c:3279
+#: misc/mke2fs.c:3291
 msgid "while reserving blocks for online resize"
 msgstr "mientras se reservaban los bloques para el cambio de tamaño en línea"
 
-#: misc/mke2fs.c:3291 misc/tune2fs.c:1492
+#: misc/mke2fs.c:3303 misc/tune2fs.c:1516
 msgid "journal"
 msgstr "fichero de transacciones"
 
-#: misc/mke2fs.c:3303
+#: misc/mke2fs.c:3315
 #, c-format
 msgid "Adding journal to device %s: "
 msgstr "Añadiendo el fichero de transacciones al dispositivo %s: "
 
-#: misc/mke2fs.c:3310
+#: misc/mke2fs.c:3322
 #, c-format
 msgid ""
 "\n"
@@ -6157,21 +6205,21 @@
 "\n"
 "\tmientras se intentaba añadir el fichero de transacciones al dispositivo %s"
 
-#: misc/mke2fs.c:3315 misc/mke2fs.c:3344 misc/mke2fs.c:3382
-#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1521 misc/tune2fs.c:1540
+#: misc/mke2fs.c:3327 misc/mke2fs.c:3356 misc/mke2fs.c:3394
+#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1545 misc/tune2fs.c:1564
 msgid "done\n"
 msgstr "hecho\n"
 
-#: misc/mke2fs.c:3321
+#: misc/mke2fs.c:3333
 msgid "Skipping journal creation in super-only mode\n"
 msgstr "Se omite la creación del fichero de transacciones en modo solo-super\n"
 
-#: misc/mke2fs.c:3331
+#: misc/mke2fs.c:3343
 #, c-format
 msgid "Creating journal (%u blocks): "
 msgstr "Creando el fichero de transacciones (%u bloques): "
 
-#: misc/mke2fs.c:3340
+#: misc/mke2fs.c:3352
 msgid ""
 "\n"
 "\twhile trying to create journal"
@@ -6179,7 +6227,7 @@
 "\n"
 "\tmientras se intentaba crear el fichero de transacciones"
 
-#: misc/mke2fs.c:3352 misc/tune2fs.c:1133
+#: misc/mke2fs.c:3364 misc/tune2fs.c:1137
 msgid ""
 "\n"
 "Error while enabling multiple mount protection feature."
@@ -6187,28 +6235,28 @@
 "\n"
 "Error mientras se activaba la característica de protección de montaje múltiple."
 
-#: misc/mke2fs.c:3357
+#: misc/mke2fs.c:3369
 #, c-format
 msgid "Multiple mount protection is enabled with update interval %d seconds.\n"
 msgstr "La protección de montaje múltiple está activada con un intervalo de actualización de %d segundos.\n"
 
-#: misc/mke2fs.c:3373
+#: misc/mke2fs.c:3385
 msgid "Copying files into the device: "
 msgstr "Copiando ficheros al dispositivo: "
 
-#: misc/mke2fs.c:3379
+#: misc/mke2fs.c:3391
 msgid "while populating file system"
 msgstr "mientras se poblaba el sistema de ficheros"
 
-#: misc/mke2fs.c:3386
+#: misc/mke2fs.c:3398
 msgid "Writing superblocks and filesystem accounting information: "
 msgstr "Escribiendo superbloques y la información contable del sistema de ficheros: "
 
-#: misc/mke2fs.c:3393
+#: misc/mke2fs.c:3405
 msgid "while writing out and closing file system"
 msgstr "mientras se escribía y se cerraba el sistema de ficheros"
 
-#: misc/mke2fs.c:3396
+#: misc/mke2fs.c:3408
 msgid ""
 "done\n"
 "\n"
@@ -6284,7 +6332,7 @@
 msgid "%s: h=%3d s=%3d c=%4d   start=%8d size=%8lu end=%8d\n"
 msgstr "%s: h=%3d s=%3d c=%4d   inicio=%8d tamaño=%8lu fin=%8d\n"
 
-#: misc/tune2fs.c:119
+#: misc/tune2fs.c:120
 msgid ""
 "\n"
 "This operation requires a freshly checked filesystem.\n"
@@ -6292,15 +6340,15 @@
 "\n"
 "Esta operación requiere un systema de ficheros recién comprobado.\n"
 
-#: misc/tune2fs.c:121
+#: misc/tune2fs.c:122
 msgid "Please run e2fsck -f on the filesystem.\n"
 msgstr "Por favor, ejecute e2fsck -f sobre el sistema de ficheros.\n"
 
-#: misc/tune2fs.c:123
+#: misc/tune2fs.c:124
 msgid "Please run e2fsck -fD on the filesystem.\n"
 msgstr "Por favor, ejecute e2fsck -fD sobre el sistema de ficheros.\n"
 
-#: misc/tune2fs.c:136
+#: misc/tune2fs.c:137
 #, c-format
 msgid ""
 "Usage: %s [-c max_mounts_count] [-e errors_behavior] [-f] [-g group]\n"
@@ -6321,20 +6369,20 @@
 "\t[-E opción-extendida[,...]] [-T última-fecha-de-revisón] [-U UUID]\n"
 "\t[-I nuevo-tamaño-de-nodo-i] [-z fichero-deshacer] dispositivo\n"
 
-#: misc/tune2fs.c:223
+#: misc/tune2fs.c:225
 msgid "Journal superblock not found!\n"
 msgstr "¡No se encontró el superbloque del fichero de transacciones!\n"
 
-#: misc/tune2fs.c:281
+#: misc/tune2fs.c:283
 msgid "while trying to open external journal"
 msgstr "mientras se intentaba abrir el fichero de transacciones externo"
 
-#: misc/tune2fs.c:287 misc/tune2fs.c:2804
+#: misc/tune2fs.c:289 misc/tune2fs.c:2889
 #, c-format
 msgid "%s is not a journal device.\n"
 msgstr "%s no es un dispositivo con fichero de transacciones.\n"
 
-#: misc/tune2fs.c:296 misc/tune2fs.c:2813
+#: misc/tune2fs.c:298 misc/tune2fs.c:2898
 #, c-format
 msgid ""
 "Journal superblock is corrupted, nr_users\n"
@@ -6343,13 +6391,13 @@
 "El superbloque del fichero de transacciones está corrupto;\n"
 "nr_users es demasiado grande (%d).\n"
 
-#: misc/tune2fs.c:303 misc/tune2fs.c:2820
+#: misc/tune2fs.c:305 misc/tune2fs.c:2905
 msgid "Filesystem's UUID not found on journal device.\n"
 msgstr ""
 "No se encontró el UUID del sistema de ficheros en el fichero de\n"
 "transacciones del dispositivo.\n"
 
-#: misc/tune2fs.c:327
+#: misc/tune2fs.c:329
 msgid ""
 "Cannot locate journal device. It was NOT removed\n"
 "Use -f option to remove missing journal device.\n"
@@ -6357,52 +6405,52 @@
 "No se puede localizar el dispositivo del fichero de transacciones. NO se eliminó\n"
 "Utilice la opción -f para eliminar el dispositivo del fichero de transacciones perdido.\n"
 
-#: misc/tune2fs.c:336
+#: misc/tune2fs.c:338
 msgid "Journal removed\n"
 msgstr "Fichero de transacciones eliminado\n"
 
-#: misc/tune2fs.c:380
+#: misc/tune2fs.c:382
 msgid "while reading bitmaps"
 msgstr "mientras se leían los mapas de bits"
 
-#: misc/tune2fs.c:388
+#: misc/tune2fs.c:390
 msgid "while clearing journal inode"
 msgstr "mientras se borraba el nodo-i del fichero de transacciones"
 
-#: misc/tune2fs.c:399
+#: misc/tune2fs.c:401
 msgid "while writing journal inode"
 msgstr "mientras se escribía el nodo-i del fichero de transacciones"
 
-#: misc/tune2fs.c:435 misc/tune2fs.c:458 misc/tune2fs.c:471
+#: misc/tune2fs.c:437 misc/tune2fs.c:462 misc/tune2fs.c:475
 msgid "(and reboot afterwards!)\n"
 msgstr "(¡y reinicie después!)\n"
 
-#: misc/tune2fs.c:486
+#: misc/tune2fs.c:490
 #, c-format
 msgid "After running e2fsck, please run `resize2fs %s %s"
 msgstr "Después de ejecutar e2fsck, por favor, ejecute `resize2fs %s %s"
 
-#: misc/tune2fs.c:489
+#: misc/tune2fs.c:493
 #, c-format
 msgid "Please run `resize2fs %s %s"
 msgstr "Por favor, ejecute `resize2fs %s %s"
 
-#: misc/tune2fs.c:493
+#: misc/tune2fs.c:497
 #, c-format
 msgid " -z \"%s\""
 msgstr " -z \"%s\""
 
-#: misc/tune2fs.c:495
+#: misc/tune2fs.c:499
 #, c-format
 msgid "' to enable 64-bit mode.\n"
 msgstr "' para activar el modo de 64 bits.\n"
 
-#: misc/tune2fs.c:497
+#: misc/tune2fs.c:501
 #, c-format
 msgid "' to disable 64-bit mode.\n"
 msgstr "' para desactivar el modo de 64 bits.\n"
 
-#: misc/tune2fs.c:1035
+#: misc/tune2fs.c:1039
 msgid ""
 "WARNING: Could not confirm kernel support for metadata_csum_seed.\n"
 "  This requires Linux >= v4.4.\n"
@@ -6410,17 +6458,17 @@
 "ATENCIÓN: no se ha podido confirmar la capacidad del núcleo para metadata_csum_seed.\n"
 "  Se requiere Linux >= v4.4.\n"
 
-#: misc/tune2fs.c:1071
+#: misc/tune2fs.c:1075
 #, c-format
 msgid "Clearing filesystem feature '%s' not supported.\n"
 msgstr "No se puede desactivar la característica '%s' del sistema de ficheros.\n"
 
-#: misc/tune2fs.c:1077
+#: misc/tune2fs.c:1081
 #, c-format
 msgid "Setting filesystem feature '%s' not supported.\n"
 msgstr "El ajuste de la característica '%s' del sistema de ficheros no está implementado.\n"
 
-#: misc/tune2fs.c:1086
+#: misc/tune2fs.c:1090
 msgid ""
 "The has_journal feature may only be cleared when the filesystem is\n"
 "unmounted or mounted read-only.\n"
@@ -6428,7 +6476,7 @@
 "La bandera 'has_journal' sólo puede ser borrada cuando el sistema de\n"
 "ficheros no está montado o está montado en modo de sólo lectura.\n"
 
-#: misc/tune2fs.c:1094
+#: misc/tune2fs.c:1098
 msgid ""
 "The needs_recovery flag is set.  Please run e2fsck before clearing\n"
 "the has_journal flag.\n"
@@ -6436,7 +6484,7 @@
 "La bandera 'needs_recovery' está puesta.  Por favor ejecute e2fsck antes\n"
 "de deactivar la bandera 'has_journal'.\n"
 
-#: misc/tune2fs.c:1112
+#: misc/tune2fs.c:1116
 msgid ""
 "Setting filesystem feature 'sparse_super' not supported\n"
 "for filesystems with the meta_bg feature enabled.\n"
@@ -6444,7 +6492,7 @@
 "La característica 'sparse_super' no se puede activar\n"
 "en sistemas de ficheros que tengan la característica meta_bg activada.\n"
 
-#: misc/tune2fs.c:1125
+#: misc/tune2fs.c:1129
 msgid ""
 "The multiple mount protection feature can't\n"
 "be set if the filesystem is mounted or\n"
@@ -6454,12 +6502,12 @@
 "ponerse si el sistema de ficheros está montado o es\n"
 "de solo lectura.\n"
 
-#: misc/tune2fs.c:1143
+#: misc/tune2fs.c:1147
 #, c-format
 msgid "Multiple mount protection has been enabled with update interval %ds.\n"
 msgstr "Se ha activado la protección de montaje múltiple con un intervalo de actualización de %ds.\n"
 
-#: misc/tune2fs.c:1152
+#: misc/tune2fs.c:1156
 msgid ""
 "The multiple mount protection feature cannot\n"
 "be disabled if the filesystem is readonly.\n"
@@ -6467,20 +6515,20 @@
 "La característica de montaje múltiple no se puede\n"
 "desactivar si el sistema de ficheros es de solo lectura.\n"
 
-#: misc/tune2fs.c:1160
+#: misc/tune2fs.c:1164
 msgid "Error while reading bitmaps\n"
 msgstr "Error mientras se leían los mapas de bits\n"
 
-#: misc/tune2fs.c:1169
+#: misc/tune2fs.c:1173
 #, c-format
 msgid "Magic number in MMP block does not match. expected: %x, actual: %x\n"
 msgstr "El número mágico en el bloque MMP no cuadra. esperado: %x, real: %x\n"
 
-#: misc/tune2fs.c:1174
+#: misc/tune2fs.c:1178
 msgid "while reading MMP block."
 msgstr "mientras se leía el bloque MMP."
 
-#: misc/tune2fs.c:1206
+#: misc/tune2fs.c:1210
 msgid ""
 "Clearing the flex_bg flag would cause the the filesystem to be\n"
 "inconsistent.\n"
@@ -6488,7 +6536,7 @@
 "Borrar la bandera flex_bg provocaría que el sistema de ficheros se\n"
 "volviera inconsistente.\n"
 
-#: misc/tune2fs.c:1217
+#: misc/tune2fs.c:1221
 msgid ""
 "The huge_file feature may only be cleared when the filesystem is\n"
 "unmounted or mounted read-only.\n"
@@ -6496,46 +6544,54 @@
 "La característica 'huge_file' sólo puede ser borrada cuando el sistema de\n"
 "ficheros no está montado o está en modo de sólo lectura.\n"
 
-#: misc/tune2fs.c:1228
+#: misc/tune2fs.c:1232
 msgid "Enabling checksums could take some time."
 msgstr "Podría tardarse un poco en activar la suma de comprobación."
 
-#: misc/tune2fs.c:1230
+#: misc/tune2fs.c:1235
 msgid "Cannot enable metadata_csum on a mounted filesystem!\n"
 msgstr "¡No puede activarse metadata_csum en un sistema de ficheros montado!\n"
 
-#: misc/tune2fs.c:1236
+#: misc/tune2fs.c:1241
 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 "Los «extents» no están activados.  Puede calcularse la suma de comprobación del árbol «extent» de ficheros, no de mapas de bloques.  No activar los «extents» reduce la cobertura de la suma de comprobación de metadatos.  Ejecute otra vez con -O «extent» para rectificar.\n"
 
-#: misc/tune2fs.c:1243
+#: misc/tune2fs.c:1248
 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 "No está activado que se admitan sistemas de ficheros de 64 bits.  Los campos más grandes ofrecidos por esta característica permiten la suma de comprobación más potente.  Ejecute resize2fs -b para rectificar.\n"
 
-#: misc/tune2fs.c:1269
+#: misc/tune2fs.c:1274
 msgid "Disabling checksums could take some time."
 msgstr "Podría tardarse un rato en desactivar la suma de comprobación."
 
-#: misc/tune2fs.c:1271
+#: misc/tune2fs.c:1277
 msgid "Cannot disable metadata_csum on a mounted filesystem!\n"
 msgstr "¡No se puede desactivar metadata_csum en un sistema de ficheros montado!\n"
 
-#: misc/tune2fs.c:1334
+#: misc/tune2fs.c:1318
+msgid "Cannot enable uninit_bg on a mounted filesystem!\n"
+msgstr "¡No se puede activar uninit_bg en un sistema de ficheros montado!\n"
+
+#: misc/tune2fs.c:1333
+msgid "Cannot disable uninit_bg on a mounted filesystem!\n"
+msgstr "¡No se puede desactivar uninit_bg en un sistema de ficheros montado!\n"
+
+#: misc/tune2fs.c:1352
 #, c-format
 msgid "Cannot enable 64-bit mode while mounted!\n"
 msgstr "¡No se puede activar el modo de 64 bits cuando está montado!\n"
 
-#: misc/tune2fs.c:1344
+#: misc/tune2fs.c:1362
 #, c-format
 msgid "Cannot disable 64-bit mode while mounted!\n"
 msgstr "¡No se puede desactivar el modo de 64 bits cuando está montado!\n"
 
-#: misc/tune2fs.c:1374
+#: misc/tune2fs.c:1392
 #, c-format
 msgid "Cannot enable project feature; inode size too small.\n"
 msgstr "No se puede activar la característica del proyecto; el tamaño del nodo-i es demasiado pequeño.\n"
 
-#: misc/tune2fs.c:1395
+#: misc/tune2fs.c:1413
 msgid ""
 "\n"
 "Warning: '^quota' option overrides '-Q'arguments.\n"
@@ -6543,13 +6599,11 @@
 "\n"
 "Atención: la opción '^quota' deja sin efecto los argumentos '-Q'.\n"
 
-#: misc/tune2fs.c:1405
-msgid "Cannot enable encrypt feature on filesystems with the encoding feature enabled.\n"
-msgstr ""
-"No es posible activar la característica de cifrado en sistemas de ficheros que tengan\n"
-"la característica de codificación activada.\n"
+#: misc/tune2fs.c:1430 misc/tune2fs.c:2182
+msgid "The casefold feature may only be enabled when the filesystem is unmounted.\n"
+msgstr "La característica casefold sólo puede activarse cuando el sistema de ficheros no está montado.\n"
 
-#: misc/tune2fs.c:1419
+#: misc/tune2fs.c:1442
 msgid ""
 "Setting feature 'metadata_csum_seed' is only supported\n"
 "on filesystems with the metadata_csum feature enabled.\n"
@@ -6557,7 +6611,7 @@
 "La característica 'metadata_csum_seed' solo se puede activar\n"
 "en sistemas de ficheros que tengan activada la característica meta_csum.\n"
 
-#: misc/tune2fs.c:1437
+#: misc/tune2fs.c:1460
 msgid ""
 "UUID has changed since enabling metadata_csum.  Filesystem must be unmounted \n"
 "to safely rewrite all metadata to match the new UUID.\n"
@@ -6566,15 +6620,15 @@
 "sistema de ficheros para que puedan reescribirse sin peligro todos los metadatos \n"
 "y casen con el nuevo UUID.\n"
 
-#: misc/tune2fs.c:1443
+#: misc/tune2fs.c:1466
 msgid "Recalculating checksums could take some time."
 msgstr "Podría tardarse un poco en recalcular las sumas de comprobación."
 
-#: misc/tune2fs.c:1485
+#: misc/tune2fs.c:1509
 msgid "The filesystem already has a journal.\n"
 msgstr "El sistema de ficheros ya tiene un fichero de transacciones.\n"
 
-#: misc/tune2fs.c:1505
+#: misc/tune2fs.c:1529
 #, c-format
 msgid ""
 "\n"
@@ -6583,21 +6637,21 @@
 "\n"
 "\tmientras se intentaba abrir el fichero de transacciones en %s\n"
 
-#: misc/tune2fs.c:1509
+#: misc/tune2fs.c:1533
 #, c-format
 msgid "Creating journal on device %s: "
 msgstr "Creando un fichero de transacciones en el dispositivo %s: "
 
-#: misc/tune2fs.c:1517
+#: misc/tune2fs.c:1541
 #, c-format
 msgid "while adding filesystem to journal on %s"
 msgstr "mientras se agregaba un sistema de ficheros al fichero de transacciones en %s"
 
-#: misc/tune2fs.c:1523
+#: misc/tune2fs.c:1547
 msgid "Creating journal inode: "
 msgstr "Creando el nodo-i del fichero de transacciones: "
 
-#: misc/tune2fs.c:1537
+#: misc/tune2fs.c:1561
 msgid ""
 "\n"
 "\twhile trying to create journal file"
@@ -6605,31 +6659,31 @@
 "\n"
 "\tmientras intentaba crear el fichero de transacciones"
 
-#: misc/tune2fs.c:1575
+#: misc/tune2fs.c:1599
 #, c-format
 msgid "Cannot enable project quota; inode size too small.\n"
 msgstr "No se puede activar la cuota del proyecto; el tamaño del nodo-i es demasiado pequeño.\n"
 
-#: misc/tune2fs.c:1588
+#: misc/tune2fs.c:1612
 msgid "while initializing quota context in support library"
 msgstr "mientras se inicializaba el contexto de cuota en la biblioteca de soporte"
 
-#: misc/tune2fs.c:1603
+#: misc/tune2fs.c:1627
 #, c-format
 msgid "while updating quota limits (%d)"
 msgstr "mientras se actualizaban los límites de cuota (%d)"
 
-#: misc/tune2fs.c:1611
+#: misc/tune2fs.c:1637
 #, c-format
 msgid "while writing quota file (%d)"
 msgstr "mientras se escribía el fichero de cuota (%d)"
 
-#: misc/tune2fs.c:1629
+#: misc/tune2fs.c:1655
 #, c-format
 msgid "while removing quota file (%d)"
 msgstr "mientras se borraba el fichero de cuota (%d)"
 
-#: misc/tune2fs.c:1672
+#: misc/tune2fs.c:1698
 msgid ""
 "\n"
 "Bad quota options specified.\n"
@@ -6651,97 +6705,117 @@
 "\n"
 "\n"
 
-#: misc/tune2fs.c:1730
+#: misc/tune2fs.c:1756
 #, c-format
 msgid "Couldn't parse date/time specifier: %s"
 msgstr "No se puede analizar sintácticamente el especificador de fecha/hora: %s"
 
-#: misc/tune2fs.c:1755 misc/tune2fs.c:1768
+#: misc/tune2fs.c:1781 misc/tune2fs.c:1794
 #, c-format
 msgid "bad mounts count - %s"
 msgstr "cuenta de montajes incorrectos - %s"
 
-#: misc/tune2fs.c:1811
+#: misc/tune2fs.c:1837
 #, c-format
 msgid "bad gid/group name - %s"
 msgstr "nombre del gid/grupo incorrecto - %s"
 
-#: misc/tune2fs.c:1844
+#: misc/tune2fs.c:1870
 #, c-format
 msgid "bad interval - %s"
 msgstr "intervalo incorrecto - %s"
 
-#: misc/tune2fs.c:1873
+#: misc/tune2fs.c:1899
 #, c-format
 msgid "bad reserved block ratio - %s"
 msgstr "proporción de bloques reservados incorrecta - %s"
 
-#: misc/tune2fs.c:1888
+#: misc/tune2fs.c:1914
 msgid "-o may only be specified once"
 msgstr "-o solo puede especificarse una vez"
 
-#: misc/tune2fs.c:1897
+#: misc/tune2fs.c:1923
 msgid "-O may only be specified once"
 msgstr "-O sólo se puede especificar una vez"
 
-#: misc/tune2fs.c:1914
+#: misc/tune2fs.c:1940
 #, c-format
 msgid "bad reserved blocks count - %s"
 msgstr "cuenta de bloques reservados incorrecta - %s"
 
-#: misc/tune2fs.c:1943
+#: misc/tune2fs.c:1969
 #, c-format
 msgid "bad uid/user name - %s"
 msgstr "nombre de uid/usuario incorrecto - %s"
 
-#: misc/tune2fs.c:1960
+#: misc/tune2fs.c:1986
 #, c-format
 msgid "bad inode size - %s"
 msgstr "tamaño de nodo-i no válido - %s"
 
-#: misc/tune2fs.c:1967
+#: misc/tune2fs.c:1993
 #, c-format
 msgid "Inode size must be a power of two- %s"
 msgstr "El tamaño de nodo-i debe ser potencia de dos - %s"
 
-#: misc/tune2fs.c:2064
+#: misc/tune2fs.c:2093
 #, c-format
 msgid "mmp_update_interval too big: %lu\n"
 msgstr "mmp_update_interval demasiado grande: %lu\n"
 
-#: misc/tune2fs.c:2069
+#: misc/tune2fs.c:2098
 #, c-format
 msgid "Setting multiple mount protection update interval to %lu second\n"
 msgid_plural "Setting multiple mount protection update interval to %lu seconds\n"
 msgstr[0] "Se pone el intervalo de actualización de protección de montaje múltiple a %lu segundo\n"
 msgstr[1] "Se pone el intervalo de actualización de protección de montaje múltiple a %lu segundos\n"
 
-#: misc/tune2fs.c:2078
+#: misc/tune2fs.c:2107
 #, c-format
 msgid "Setting filesystem error flag to force fsck.\n"
 msgstr "Se pone el indicador de error del sistema de ficheros para forzar fsck.\n"
 
-#: misc/tune2fs.c:2096
+#: misc/tune2fs.c:2125
 #, c-format
 msgid "Invalid RAID stride: %s\n"
 msgstr "«Stride» de RAID no válido: %s\n"
 
-#: misc/tune2fs.c:2111
+#: misc/tune2fs.c:2140
 #, c-format
 msgid "Invalid RAID stripe-width: %s\n"
 msgstr "«stripe-width» de RAID no válido: %s\n"
 
-#: misc/tune2fs.c:2126
+#: misc/tune2fs.c:2155
 #, c-format
 msgid "Invalid hash algorithm: %s\n"
 msgstr "Algoritmo «hash» no válido: %s\n"
 
-#: misc/tune2fs.c:2132
+#: misc/tune2fs.c:2161
 #, c-format
 msgid "Setting default hash algorithm to %s (%d)\n"
 msgstr "Poniendo el algoritmo «hash» predeterminado a %s (%d)\n"
 
-#: misc/tune2fs.c:2151
+#: misc/tune2fs.c:2188
+#, c-format
+msgid "Cannot alter existing encoding\n"
+msgstr "No se puede alterar la condificación existente\n"
+
+#: misc/tune2fs.c:2194
+#, c-format
+msgid "Invalid encoding: %s\n"
+msgstr "La codificación no es válida: %s\n"
+
+#: misc/tune2fs.c:2200
+#, c-format
+msgid "Setting encoding to '%s'\n"
+msgstr "Se pone la condificación '%s'\n"
+
+#: misc/tune2fs.c:2224
+#, c-format
+msgid "Setting encoding_flags to '%s'\n"
+msgstr "Se ponen encoding_flags a '%s' \n"
+
+#: misc/tune2fs.c:2234
 msgid ""
 "\n"
 "Bad options specified.\n"
@@ -6759,6 +6833,8 @@
 "\tforce_fsck\n"
 "\ttest_fs\n"
 "\t^test_fs\n"
+"\tencoding=<encoding>\n"
+"\tencoding_flags=<flags>\n"
 msgstr ""
 "\n"
 "Las opciones especificadas son incorrectas.\n"
@@ -6776,32 +6852,34 @@
 "\tforce_fsck\n"
 "\ttest_fs\n"
 "\t^test_fs\n"
+"\tencoding=<condificación>\n"
+"\tencoding_flags=<banderas>\n"
 
-#: misc/tune2fs.c:2622
+#: misc/tune2fs.c:2707
 msgid "Failed to read inode bitmap\n"
 msgstr "Fallo mientras se leía el mapa de bits del nodo-i\n"
 
-#: misc/tune2fs.c:2627
+#: misc/tune2fs.c:2712
 msgid "Failed to read block bitmap\n"
 msgstr "Fallo leyendo el mapa de bits del bloque\n"
 
-#: misc/tune2fs.c:2644 resize/resize2fs.c:1277
+#: misc/tune2fs.c:2729 resize/resize2fs.c:1277
 msgid "blocks to be moved"
 msgstr "bloques por ser movidos"
 
-#: misc/tune2fs.c:2647
+#: misc/tune2fs.c:2732
 msgid "Failed to allocate block bitmap when increasing inode size\n"
 msgstr "Fallo reservando el mapa de bits del bloque al incrementar el tamaño de nodo-i\n"
 
-#: misc/tune2fs.c:2653
+#: misc/tune2fs.c:2738
 msgid "Not enough space to increase inode size \n"
 msgstr "No hay espacio suficiente para aumentar el tamaño de nodo-i \n"
 
-#: misc/tune2fs.c:2658
+#: misc/tune2fs.c:2743
 msgid "Failed to relocate blocks during inode resize \n"
 msgstr "Fallo mientras se reservaban los bloques para el cambio de tamaño de nodo-i \n"
 
-#: misc/tune2fs.c:2690
+#: misc/tune2fs.c:2775
 msgid ""
 "Error in resizing the inode size.\n"
 "Run e2undo to undo the file system changes. \n"
@@ -6809,7 +6887,7 @@
 "Error al cambiar el tamaño del nodo-i.\n"
 "Ejecute e2undo para deshacer los cambios del sistema de ficheros. \n"
 
-#: misc/tune2fs.c:2900
+#: misc/tune2fs.c:2985
 msgid ""
 "If you are sure the filesystem is not in use on any node, run:\n"
 "'tune2fs -f -E clear_mmp {device}'\n"
@@ -6817,7 +6895,7 @@
 "Si se sabe con certeza que el sistema de ficheros no está en uso en ningún\n"
 "modo, ejecute 'tune2fs -f -E clear_mmp {device}'\n"
 
-#: misc/tune2fs.c:2907
+#: misc/tune2fs.c:2992
 #, c-format
 msgid ""
 "MMP block magic is bad. Try to fix it by running:\n"
@@ -6826,29 +6904,29 @@
 "El número mágico del bloque MMP es incorrecto. Trate de arreglarlo ejecutando:\n"
 "'e2fsck -f %s'\n"
 
-#: misc/tune2fs.c:2919
+#: misc/tune2fs.c:3004
 msgid "Cannot modify a journal device.\n"
 msgstr "No se puede modificar el dispositivo de un fichero de transacciones.\n"
 
-#: misc/tune2fs.c:2932
+#: misc/tune2fs.c:3017
 #, c-format
 msgid "The inode size is already %lu\n"
 msgstr "El tamaño del nodo-i ya es %lu\n"
 
-#: misc/tune2fs.c:2939
+#: misc/tune2fs.c:3024
 msgid "Shrinking inode size is not supported\n"
 msgstr "No es posible reducir el tamaño del nodo-i\n"
 
-#: misc/tune2fs.c:2944
+#: misc/tune2fs.c:3029
 #, c-format
 msgid "Invalid inode size %lu (max %d)\n"
 msgstr "Tamaño incorrecto del nodo-i %lu (máx %d)\n"
 
-#: misc/tune2fs.c:2950
+#: misc/tune2fs.c:3035
 msgid "Resizing inodes could take some time."
 msgstr "Podría tardarse un rato en cambiar el tamaño de los nodos-i."
 
-#: misc/tune2fs.c:2998
+#: misc/tune2fs.c:3084
 #, c-format
 msgid ""
 "Warning: The journal is dirty. You may wish to replay the journal like:\n"
@@ -6865,57 +6943,57 @@
 "después ejecute otra vez esta orden.  De lo contrario, podrían perderse los cambios\n"
 "al recuperar el fichero de transacciones.\n"
 
-#: misc/tune2fs.c:3009
+#: misc/tune2fs.c:3093
 #, c-format
 msgid "Recovering journal.\n"
 msgstr "Recuperando el fichero de transacciones.\n"
 
-#: misc/tune2fs.c:3028
+#: misc/tune2fs.c:3114
 #, c-format
 msgid "Setting maximal mount count to %d\n"
 msgstr "Se pone la cuenta de montajes máxima a %d\n"
 
-#: misc/tune2fs.c:3034
+#: misc/tune2fs.c:3120
 #, c-format
 msgid "Setting current mount count to %d\n"
 msgstr "Se pone la cuenta de montajes actual a %d\n"
 
-#: misc/tune2fs.c:3039
+#: misc/tune2fs.c:3125
 #, c-format
 msgid "Setting error behavior to %d\n"
 msgstr "Se pone el comportamiento de errores a %d\n"
 
-#: misc/tune2fs.c:3044
+#: misc/tune2fs.c:3130
 #, c-format
 msgid "Setting reserved blocks gid to %lu\n"
 msgstr "Se pone el gid de los bloques reservados a %lu\n"
 
-#: misc/tune2fs.c:3049
+#: misc/tune2fs.c:3135
 #, c-format
 msgid "interval between checks is too big (%lu)"
 msgstr "el intervalo entre revisiones es demasiado grande (%lu)"
 
-#: misc/tune2fs.c:3056
+#: misc/tune2fs.c:3142
 #, c-format
 msgid "Setting interval between checks to %lu seconds\n"
 msgstr "Se pone el intervalo entre revisiones en %lu segundos\n"
 
-#: misc/tune2fs.c:3063
+#: misc/tune2fs.c:3149
 #, c-format
 msgid "Setting reserved blocks percentage to %g%% (%llu blocks)\n"
 msgstr "Se pone el porcentaje de bloques reservados a %g%% (%llu bloques)\n"
 
-#: misc/tune2fs.c:3069
+#: misc/tune2fs.c:3155
 #, c-format
 msgid "reserved blocks count is too big (%llu)"
 msgstr "la cantidad de bloques reservados es demasiado grande (%llu)"
 
-#: misc/tune2fs.c:3076
+#: misc/tune2fs.c:3162
 #, c-format
 msgid "Setting reserved blocks count to %llu\n"
 msgstr "Se pone la cantidad de bloques reservados a %llu\n"
 
-#: misc/tune2fs.c:3081
+#: misc/tune2fs.c:3167
 msgid ""
 "\n"
 "The filesystem already has sparse superblocks.\n"
@@ -6923,7 +7001,7 @@
 "\n"
 "El sistema de ficheros ya tiene superbloques dispersos.\n"
 
-#: misc/tune2fs.c:3084
+#: misc/tune2fs.c:3170
 msgid ""
 "\n"
 "Setting the sparse superblock flag not supported\n"
@@ -6933,7 +7011,7 @@
 "La característica de superbloques dispersos no se puede activar\n"
 "en sistemas de ficheros que tengan la característica meta_bg activada.\n"
 
-#: misc/tune2fs.c:3094
+#: misc/tune2fs.c:3180
 #, c-format
 msgid ""
 "\n"
@@ -6942,7 +7020,7 @@
 "\n"
 "La bandera de superbloques dispersos está puesta.  %s"
 
-#: misc/tune2fs.c:3099
+#: misc/tune2fs.c:3185
 msgid ""
 "\n"
 "Clearing the sparse superblock flag not supported.\n"
@@ -6950,49 +7028,49 @@
 "\n"
 "No es posible quitar la bandera de superbloques dispersos.\n"
 
-#: misc/tune2fs.c:3107
+#: misc/tune2fs.c:3193
 #, c-format
 msgid "Setting time filesystem last checked to %s\n"
 msgstr "Se pone la hora de la última revisión al sistema de ficheros a %s\n"
 
-#: misc/tune2fs.c:3113
+#: misc/tune2fs.c:3199
 #, c-format
 msgid "Setting reserved blocks uid to %lu\n"
 msgstr "Se pone el uid de los bloques reservados a %lu\n"
 
-#: misc/tune2fs.c:3145
+#: misc/tune2fs.c:3231
 msgid "Error in using clear_mmp. It must be used with -f\n"
 msgstr "Error al utilizar clear_mmp. Debe utilizarse con -f\n"
 
-#: misc/tune2fs.c:3163
+#: misc/tune2fs.c:3249
 msgid "The quota feature may only be changed when the filesystem is unmounted.\n"
 msgstr "La característica de cuota sólo puede cambiarse cuando el sistema de ficheros no está montado.\n"
 
-#: misc/tune2fs.c:3181
+#: misc/tune2fs.c:3269
 msgid "Setting the UUID on this filesystem could take some time."
 msgstr "Podría tardarse un rato en establecer el UUID en este sistema de ficheros."
 
-#: misc/tune2fs.c:3196
+#: misc/tune2fs.c:3286
 msgid "The UUID may only be changed when the filesystem is unmounted.\n"
 msgstr "El UUID solo puede cambiarse cuando el sistema de ficheros no está montado.\n"
 
-#: misc/tune2fs.c:3199
+#: misc/tune2fs.c:3289
 msgid "If you only use kernels newer than v4.4, run 'tune2fs -O metadata_csum_seed' and re-run this command.\n"
 msgstr "Si solo utiliza núcleos más recientes que v4.4, ejecute 'tune2fs -O metadata_csum_seed' y ejecute otra vez esta orden.\n"
 
-#: misc/tune2fs.c:3229
+#: misc/tune2fs.c:3320
 msgid "Invalid UUID format\n"
 msgstr "Formato del UUID no válido\n"
 
-#: misc/tune2fs.c:3245
+#: misc/tune2fs.c:3336
 msgid "Need to update journal superblock.\n"
 msgstr "Hace falta actualizar el superbloque del fichero de transacciones.\n"
 
-#: misc/tune2fs.c:3267
+#: misc/tune2fs.c:3358
 msgid "The inode size may only be changed when the filesystem is unmounted.\n"
 msgstr "El tamaño de nodo-i solo puede cambiarse cuando el sistema de ficheros no está montado.\n"
 
-#: misc/tune2fs.c:3274
+#: misc/tune2fs.c:3365
 msgid ""
 "Changing the inode size not supported for filesystems with the flex_bg\n"
 "feature enabled.\n"
@@ -7000,26 +7078,26 @@
 "No es posible cambiar el tamaño de nodo-i en sistemas de ficheros que tengan\n"
 "la característica flex_bg activada.\n"
 
-#: misc/tune2fs.c:3292
+#: misc/tune2fs.c:3383
 #, c-format
 msgid "Setting inode size %lu\n"
 msgstr "Se pone el tamaño de nodo-i %lu\n"
 
-#: misc/tune2fs.c:3296
+#: misc/tune2fs.c:3387
 msgid "Failed to change inode size\n"
 msgstr "Fallo mientras se cambiaba el tamaño de nodo-i\n"
 
-#: misc/tune2fs.c:3310
+#: misc/tune2fs.c:3401
 #, c-format
 msgid "Setting stride size to %d\n"
 msgstr "Configurando el tamaño de «stride» a %d\n"
 
-#: misc/tune2fs.c:3315
+#: misc/tune2fs.c:3406
 #, c-format
 msgid "Setting stripe width to %d\n"
 msgstr "Configurando la anchura de «stripe» a %d\n"
 
-#: misc/tune2fs.c:3322
+#: misc/tune2fs.c:3413
 #, c-format
 msgid "Setting extended default mount options to '%s'\n"
 msgstr "Se ponen las opciones de montaje extendidas predeterminadas a '%s'\n"
@@ -7321,17 +7399,17 @@
 "bajo su cuenta y riesgo!  Utilice la opción «force» si desea seguir adelante de todos modos.\n"
 "\n"
 
-#: resize/main.c:366
+#: resize/main.c:368
 #, c-format
 msgid "while opening %s"
 msgstr "mientras se abría %s"
 
-#: resize/main.c:374
+#: resize/main.c:376
 #, c-format
 msgid "while getting stat information for %s"
 msgstr "mientras se estaba obteniendo información del estado de %s"
 
-#: resize/main.c:451
+#: resize/main.c:453
 #, c-format
 msgid ""
 "Please run 'e2fsck -f %s' first.\n"
@@ -7340,30 +7418,34 @@
 "Por favor ejecute antes 'e2fsck -f %s'.\n"
 "\n"
 
-#: resize/main.c:470
+#: resize/main.c:472
 #, c-format
 msgid "Estimated minimum size of the filesystem: %llu\n"
 msgstr "Tamaño mínimo estimado del sistema de ficheros: %llu\n"
 
-#: resize/main.c:507
+#: resize/main.c:509
 #, c-format
 msgid "Invalid new size: %s\n"
 msgstr "El nuevo tamaño no es válido: %s\n"
 
-#: resize/main.c:526
+#: resize/main.c:528
 msgid "New size too large to be expressed in 32 bits\n"
 msgstr "El nuevo tamaño es demasiado grande para poder expresarse en 32 bits\n"
 
-#: resize/main.c:534
+#: resize/main.c:541
+msgid "New size results in too many block group descriptors.\n"
+msgstr "El nuevo tamaño da lugar a demasiados descriptores del grupo de bloques.\n"
+
+#: resize/main.c:548
 #, c-format
 msgid "New size smaller than minimum (%llu)\n"
 msgstr "El nuevo tamaño es menor que el mínimo (%llu)\n"
 
-#: resize/main.c:540
+#: resize/main.c:554
 msgid "Invalid stride length"
 msgstr "Longitud de «stride» no válida"
 
-#: resize/main.c:564
+#: resize/main.c:578
 #, c-format
 msgid ""
 "The containing partition (or device) is only %llu (%dk) blocks.\n"
@@ -7374,27 +7456,27 @@
 "Y se ha solicitado un nuevo tamaño de %llu bloques.\n"
 "\n"
 
-#: resize/main.c:571
+#: resize/main.c:585
 #, c-format
 msgid "Cannot set and unset 64bit feature.\n"
 msgstr "No se puede poner y quitar la característica 64bit.\n"
 
-#: resize/main.c:575
+#: resize/main.c:589
 #, c-format
 msgid "Cannot change the 64bit feature on a filesystem that is larger than 2^32 blocks.\n"
 msgstr "No se puede cambiar la característica 64bit en un sistema de ficheros mayor de 2^32 bloques.\n"
 
-#: resize/main.c:581
+#: resize/main.c:595
 #, c-format
 msgid "Cannot change the 64bit feature while the filesystem is mounted.\n"
 msgstr "No se puede cambiar la característica 64bit cuando el sistema de ficheros está montado.\n"
 
-#: resize/main.c:587
+#: resize/main.c:601
 #, c-format
 msgid "Please enable the extents feature with tune2fs before enabling the 64bit feature.\n"
 msgstr "Por favor, active la característica «extents» con tune2fs antes de activar la característica 64bit.\n"
 
-#: resize/main.c:593
+#: resize/main.c:607
 #, c-format
 msgid ""
 "The filesystem is already %llu (%dk) blocks long.  Nothing to do!\n"
@@ -7403,37 +7485,37 @@
 "El sistema de ficheros ya tiene %llu bloques (%dk) de longitud. ¡No hay que hacer nada!\n"
 "\n"
 
-#: resize/main.c:600
+#: resize/main.c:614
 #, c-format
 msgid "The filesystem is already 64-bit.\n"
 msgstr "El sistema de ficheros ya es de 64 bits.\n"
 
-#: resize/main.c:605
+#: resize/main.c:619
 #, c-format
 msgid "The filesystem is already 32-bit.\n"
 msgstr "El sistema de ficheros ya es de 32 bits.\n"
 
-#: resize/main.c:613
+#: resize/main.c:627
 #, c-format
 msgid "Converting the filesystem to 64-bit.\n"
 msgstr "Se convierte el sistema de ficheros a 64 bits.\n"
 
-#: resize/main.c:615
+#: resize/main.c:629
 #, c-format
 msgid "Converting the filesystem to 32-bit.\n"
 msgstr "Se convierte el sistema de ficheros a 32 bits.\n"
 
-#: resize/main.c:617
+#: resize/main.c:631
 #, c-format
 msgid "Resizing the filesystem on %s to %llu (%dk) blocks.\n"
 msgstr "Cambiando el tamaño del sistema de ficheros en %s a %llu (%dk) bloques.\n"
 
-#: resize/main.c:626
+#: resize/main.c:640
 #, c-format
 msgid "while trying to resize %s"
 msgstr "mientras se intentaba modificar el tamaño %s"
 
-#: resize/main.c:629
+#: resize/main.c:643
 #, c-format
 msgid ""
 "Please run 'e2fsck -fy %s' to fix the filesystem\n"
@@ -7442,7 +7524,7 @@
 "Por favor, ejecute 'e2fsck -fy %s' para arreglar el sistema de ficheros\n"
 "después de la operación de cambio de tamaño interrumpida.\n"
 
-#: resize/main.c:635
+#: resize/main.c:649
 #, c-format
 msgid ""
 "The filesystem on %s is now %llu (%dk) blocks long.\n"
@@ -7451,7 +7533,7 @@
 "El sistema de ficheros en %s tiene ahora %llu bloques (de %dk).\n"
 "\n"
 
-#: resize/main.c:650
+#: resize/main.c:664
 #, c-format
 msgid "while trying to truncate %s"
 msgstr "mientras se intentaba truncar %s"
@@ -7553,8 +7635,8 @@
 msgstr "Esto nunca debería suceder: ¡El nodo-i de cambio de tamaño está corrupto!\n"
 
 #: lib/ext2fs/ext2_err.c:11
-msgid "EXT2FS Library version 1.45.3"
-msgstr "Biblioteca EXT2FS versión 1.45.3"
+msgid "EXT2FS Library version 1.45.6"
+msgstr "Biblioteca EXT2FS versión 1.45.6"
 
 #: lib/ext2fs/ext2_err.c:12
 msgid "Wrong magic number for ext2_filsys structure"
@@ -8268,6 +8350,10 @@
 msgid "Inode containing extended attribute value is corrupted"
 msgstr "El nodo-i que contiene el valor de un atributo extendido está corrupto"
 
+#: lib/ext2fs/ext2_err.c:190
+msgid "Group descriptors not loaded"
+msgstr "Descriptores de grupo no cargados"
+
 #: lib/support/prof_err.c:11
 msgid "Profile version 0.0"
 msgstr "Versión de «profile» 0.0"
@@ -8392,47 +8478,47 @@
 msgid "Bad magic value in profile_file_data_t"
 msgstr "Valor mágico incorrecto en profile_file_data_t"
 
-#: lib/support/plausible.c:118
+#: lib/support/plausible.c:114
 #, c-format
-msgid "\tlast mounted on %s on %s"
-msgstr "\túltima fecha de montaje de %s %s"
+msgid "\tlast mounted on %.*s on %s"
+msgstr "\túltima fecha de montaje en %.*s %s"
 
-#: lib/support/plausible.c:121
+#: lib/support/plausible.c:117
 #, c-format
 msgid "\tlast mounted on %s"
 msgstr "\túltima fecha de montaje %s"
 
-#: lib/support/plausible.c:124
+#: lib/support/plausible.c:120
 #, c-format
 msgid "\tcreated on %s"
 msgstr "\tfecha de creación %s"
 
-#: lib/support/plausible.c:127
+#: lib/support/plausible.c:123
 #, c-format
 msgid "\tlast modified on %s"
 msgstr "\tfecha de última modificación %s"
 
-#: lib/support/plausible.c:161
+#: lib/support/plausible.c:157
 #, c-format
 msgid "Found a %s partition table in %s\n"
 msgstr "Se ha encontrado una tabla de particiones %s en %s\n"
 
-#: lib/support/plausible.c:191
+#: lib/support/plausible.c:187
 #, c-format
 msgid "The file %s does not exist and no size was specified.\n"
 msgstr "El fichero %s no existe y no se ha especificado ningún tamaño.\n"
 
-#: lib/support/plausible.c:199
+#: lib/support/plausible.c:195
 #, c-format
 msgid "Creating regular file %s\n"
 msgstr "Creando el fichero ordinario %s\n"
 
-#: lib/support/plausible.c:202
+#: lib/support/plausible.c:198
 #, c-format
 msgid "Could not open %s: %s\n"
 msgstr "No se puede abrir %s: %s\n"
 
-#: lib/support/plausible.c:205
+#: lib/support/plausible.c:201
 msgid ""
 "\n"
 "The device apparently does not exist; did you specify it correctly?\n"
@@ -8440,26 +8526,38 @@
 "\n"
 "En apariencia, el dispositivo no existe; ¿Se especificó correctamente?\n"
 
-#: lib/support/plausible.c:227
+#: lib/support/plausible.c:223
 #, c-format
 msgid "%s is not a block special device.\n"
 msgstr "%s no es un dispositivo especial de bloques.\n"
 
-#: lib/support/plausible.c:249
+#: lib/support/plausible.c:245
 #, c-format
 msgid "%s contains a %s file system labelled '%s'\n"
 msgstr "%s contiene un sistema de ficheros %s etiquetado '%s'\n"
 
-#: lib/support/plausible.c:252
+#: lib/support/plausible.c:248
 #, c-format
 msgid "%s contains a %s file system\n"
 msgstr "%s contiene un sistema de ficheros %s\n"
 
-#: lib/support/plausible.c:276
+#: lib/support/plausible.c:272
 #, c-format
 msgid "%s contains `%s' data\n"
 msgstr "%s contiene datos `%s'\n"
 
+#~ msgid ""
+#~ "The encrypt and casefold features are not compatible.\n"
+#~ "They can not be both enabled simultaneously.\n"
+#~ msgstr ""
+#~ "Las características de cifrado y «casefold» no son compatibles.\n"
+#~ "No pueden estar activadas las dos a la vez.\n"
+
+#~ msgid "Cannot enable encrypt feature on filesystems with the encoding feature enabled.\n"
+#~ msgstr ""
+#~ "No es posible activar la característica de cifrado en sistemas de ficheros que tengan\n"
+#~ "la característica de codificación activada.\n"
+
 #~ msgid "while opening directory \"%s\""
 #~ msgstr "mientras se abría el directorio \"%s\""
 
diff --git a/resize/extent.c b/resize/extent.c
index e5ca16c..4177c6f 100644
--- a/resize/extent.c
+++ b/resize/extent.c
@@ -201,10 +201,15 @@
 
 	fputs(_("# Extent dump:\n"), out);
 	fprintf(out, _("#\tNum=%llu, Size=%llu, Cursor=%llu, Sorted=%llu\n"),
-	       extent->num, extent->size, extent->cursor, extent->sorted);
+	       (unsigned long long) extent->num,
+		(unsigned long long) extent->size,
+		(unsigned long long) extent->cursor,
+		(unsigned long long) extent->sorted);
 	for (i=0, ent=extent->list; i < extent->num; i++, ent++) {
-		fprintf(out, "#\t\t %llu -> %llu (%llu)\n", ent->old_loc,
-			ent->new_loc, ent->size);
+		fprintf(out, "#\t\t %llu -> %llu (%llu)\n",
+			(unsigned long long) ent->old_loc,
+			(unsigned long long) ent->new_loc,
+			(unsigned long long) ent->size);
 	}
 }
 
diff --git a/resize/main.c b/resize/main.c
index dce03f9..ccfd289 100644
--- a/resize/main.c
+++ b/resize/main.c
@@ -470,7 +470,7 @@
 
 	if (print_min_size) {
 		printf(_("Estimated minimum size of the filesystem: %llu\n"),
-		       min_size);
+		       (unsigned long long) min_size);
 		exit(0);
 	}
 
@@ -545,7 +545,8 @@
 
 	if (!force && new_size < min_size) {
 		com_err(program_name, 0,
-			_("New size smaller than minimum (%llu)\n"), min_size);
+			_("New size smaller than minimum (%llu)\n"),
+			(unsigned long long) min_size);
 		exit(1);
 	}
 	if (use_stride >= 0) {
@@ -577,8 +578,8 @@
 	if (!force && (new_size > max_size)) {
 		fprintf(stderr, _("The containing partition (or device)"
 			" is only %llu (%dk) blocks.\nYou requested a new size"
-			" of %llu blocks.\n\n"), max_size,
-			blocksize / 1024, new_size);
+			" of %llu blocks.\n\n"), (unsigned long long) max_size,
+			blocksize / 1024, (unsigned long long) new_size);
 		exit(1);
 	}
 	if ((flags & RESIZE_DISABLE_64BIT) && (flags & RESIZE_ENABLE_64BIT)) {
@@ -605,7 +606,8 @@
 		}
 	} else if (new_size == ext2fs_blocks_count(fs->super)) {
 		fprintf(stderr, _("The filesystem is already %llu (%dk) "
-			"blocks long.  Nothing to do!\n\n"), new_size,
+			"blocks long.  Nothing to do!\n\n"),
+			(unsigned long long) new_size,
 			blocksize / 1024);
 		exit(0);
 	}
@@ -636,7 +638,8 @@
 		else
 			printf(_("Resizing the filesystem on "
 				 "%s to %llu (%dk) blocks.\n"),
-			       device_name, new_size, blocksize / 1024);
+			       device_name, (unsigned long long) new_size,
+			       blocksize / 1024);
 		retval = resize_fs(fs, &new_size, flags,
 				   ((flags & RESIZE_PERCENT_COMPLETE) ?
 				    resize_progress_func : 0));
@@ -653,7 +656,7 @@
 		exit(1);
 	}
 	printf(_("The filesystem on %s is now %llu (%dk) blocks long.\n\n"),
-	       device_name, new_size, blocksize / 1024);
+	       device_name, (unsigned long long) new_size, blocksize / 1024);
 
 	if ((st_buf.st_size > new_file_size) &&
 	    (fd > 0)) {
diff --git a/resize/online.c b/resize/online.c
index 2caf946..eef7c0b 100644
--- a/resize/online.c
+++ b/resize/online.c
@@ -218,7 +218,8 @@
 	}
 
 	printf(_("Performing an on-line resize of %s to %llu (%dk) blocks.\n"),
-	       fs->device_name, *new_size, fs->blocksize / 1024);
+	       fs->device_name, (unsigned long long) *new_size,
+	       fs->blocksize / 1024);
 
 	size = fs->group_desc_count * sb->s_blocks_per_group +
 		sb->s_first_data_block;
diff --git a/resize/resize2fs.c b/resize/resize2fs.c
index 270e4de..a0d08e5 100644
--- a/resize/resize2fs.c
+++ b/resize/resize2fs.c
@@ -177,9 +177,9 @@
 #ifdef RESIZE2FS_DEBUG
 	if (rfs->flags & RESIZE_DEBUG_BMOVE)
 		printf("Number of free blocks: %llu/%llu, Needed: %llu\n",
-		       ext2fs_free_blocks_count(rfs->old_fs->super),
-		       ext2fs_free_blocks_count(rfs->new_fs->super),
-		       rfs->needed_blocks);
+		       (unsigned long long) ext2fs_free_blocks_count(rfs->old_fs->super),
+		       (unsigned long long) ext2fs_free_blocks_count(rfs->new_fs->super),
+		       (unsigned long long) rfs->needed_blocks);
 #endif
 
 	init_resource_track(&rtrack, "block_mover", fs->io);
@@ -758,7 +758,7 @@
 	new_inodes =(unsigned long long) fs->super->s_inodes_per_group * fs->group_desc_count;
 	if (new_inodes > ~0U) {
 		fprintf(stderr, _("inodes (%llu) must be less than %u\n"),
-				   new_inodes, ~0U);
+			(unsigned long long) new_inodes, ~0U);
 		return EXT2_ET_TOO_MANY_INODES;
 	}
 	fs->super->s_inodes_count = fs->super->s_inodes_per_group *
@@ -1243,7 +1243,8 @@
 		 * nothing other than standard metadata in use.
 		 */
 		return;
-	} else if (ext2fs_test_block_bitmap2(rfs->old_fs->block_map, blk) &&
+	} else if (blk < ext2fs_blocks_count(rfs->old_fs->super) &&
+		   ext2fs_test_block_bitmap2(rfs->old_fs->block_map, blk) &&
 		   !ext2fs_test_block_bitmap2(meta_bmap, blk)) {
 		ext2fs_mark_block_bitmap2(rfs->move_blocks, blk);
 		rfs->needed_blocks++;
@@ -1510,7 +1511,8 @@
 		if (ext2fs_block_bitmap_loc(old_fs, i) !=
 		    (blk = ext2fs_block_bitmap_loc(fs, i))) {
 			ext2fs_block_alloc_stats2(fs, blk, +1);
-			if (ext2fs_test_block_bitmap2(old_fs->block_map, blk) &&
+			if (blk < ext2fs_blocks_count(old_fs->super) &&
+			    ext2fs_test_block_bitmap2(old_fs->block_map, blk) &&
 			    !ext2fs_test_block_bitmap2(meta_bmap, blk))
 				ext2fs_mark_block_bitmap2(rfs->move_blocks,
 							 blk);
@@ -1518,7 +1520,8 @@
 		if (ext2fs_inode_bitmap_loc(old_fs, i) !=
 		    (blk = ext2fs_inode_bitmap_loc(fs, i))) {
 			ext2fs_block_alloc_stats2(fs, blk, +1);
-			if (ext2fs_test_block_bitmap2(old_fs->block_map, blk) &&
+			if (blk < ext2fs_blocks_count(old_fs->super) &&
+			    ext2fs_test_block_bitmap2(old_fs->block_map, blk) &&
 			    !ext2fs_test_block_bitmap2(meta_bmap, blk))
 				ext2fs_mark_block_bitmap2(rfs->move_blocks,
 							 blk);
@@ -1544,7 +1547,8 @@
 		for (blk = ext2fs_inode_table_loc(fs, i), j=0;
 		     j < fs->inode_blocks_per_group ; j++, blk++) {
 			ext2fs_block_alloc_stats2(fs, blk, +1);
-			if (ext2fs_test_block_bitmap2(old_fs->block_map, blk) &&
+			if (blk < ext2fs_blocks_count(old_fs->super) &&
+			    ext2fs_test_block_bitmap2(old_fs->block_map, blk) &&
 			    !ext2fs_test_block_bitmap2(meta_bmap, blk))
 				ext2fs_mark_block_bitmap2(rfs->move_blocks,
 							 blk);
@@ -1644,7 +1648,8 @@
 
 #ifdef RESIZE2FS_DEBUG
 	if (rfs->flags & 0xF)
-		printf("get_alloc_block allocating %llu\n", blk);
+		printf("get_alloc_block allocating %llu\n",
+		       (unsigned long long) blk);
 #endif
 
 	ext2fs_mark_block_bitmap2(rfs->old_fs->block_map, blk);
@@ -1750,7 +1755,9 @@
 #ifdef RESIZE2FS_DEBUG
 		if (rfs->flags & RESIZE_DEBUG_BMOVE)
 			printf("Moving %llu blocks %llu->%llu\n",
-			       size, old_blk, new_blk);
+			       (unsigned long long) size,
+			       (unsigned long long) old_blk,
+			       (unsigned long long) new_blk);
 #endif
 		do {
 			c = size;
@@ -1843,8 +1850,9 @@
 #ifdef RESIZE2FS_DEBUG
 			if (pb->rfs->flags & RESIZE_DEBUG_BMOVE)
 				printf("ino=%u, blockcnt=%lld, %llu->%llu\n",
-				       pb->old_ino, blockcnt, block,
-				       new_block);
+				       pb->old_ino, (long long) blockcnt,
+				       (unsigned long long) block,
+				       (unsigned long long) new_block);
 #endif
 			block = new_block;
 		}
@@ -2460,7 +2468,8 @@
 #ifdef RESIZE2FS_DEBUG
 		if (rfs->flags & RESIZE_DEBUG_ITABLEMOVE)
 			printf("Itable move group %d block %llu->%llu (diff %lld)\n",
-			       i, old_blk, new_blk, diff);
+			       i, (unsigned long long) old_blk,
+			       (unsigned long long) new_blk, diff);
 #endif
 
 		if (!diff)
@@ -2934,7 +2943,8 @@
 	}
 #ifdef RESIZE2FS_DEBUG
 	if (flags & RESIZE_DEBUG_MIN_CALC)
-		printf("fs requires %llu data blocks.\n", data_needed);
+		printf("fs requires %llu data blocks.\n",
+		       (unsigned long long) data_needed);
 #endif
 
 	/*
@@ -2977,7 +2987,7 @@
 #ifdef RESIZE2FS_DEBUG
 	if (flags & RESIZE_DEBUG_MIN_CALC)
 		printf("With %d group(s), we have %llu blocks available.\n",
-		       groups, data_blocks);
+		       groups, (unsigned long long) data_blocks);
 #endif
 
 	/*
@@ -3030,8 +3040,10 @@
 		if (flags & RESIZE_DEBUG_MIN_CALC)
 			printf("Added %d extra group(s), "
 			       "blks_needed %llu, data_blocks %llu, "
-			       "last_start %llu\n", extra_grps, blks_needed,
-			       data_blocks, last_start);
+			       "last_start %llu\n", extra_grps,
+			       (unsigned long long) blks_needed,
+			       (unsigned long long) data_blocks,
+			       (unsigned long long) last_start);
 #endif
 	}
 
@@ -3046,7 +3058,8 @@
 
 #ifdef RESIZE2FS_DEBUG
 	if (flags & RESIZE_DEBUG_MIN_CALC)
-		printf("Last group's overhead is %llu\n", overhead);
+		printf("Last group's overhead is %llu\n",
+		       (unsigned long long) overhead);
 #endif
 
 	/*
@@ -3059,7 +3072,7 @@
 #ifdef RESIZE2FS_DEBUG
 		if (flags & RESIZE_DEBUG_MIN_CALC)
 			printf("Need %llu data blocks in last group\n",
-			       remainder);
+			       (unsigned long long) remainder);
 #endif
 		/*
 		 * 50 is a magic number that mkfs/resize uses to see if its
@@ -3077,7 +3090,8 @@
 	overhead += fs->super->s_first_data_block;
 #ifdef RESIZE2FS_DEBUG
 	if (flags & RESIZE_DEBUG_MIN_CALC)
-		printf("Final size of last group is %lld\n", overhead);
+		printf("Final size of last group is %llu\n",
+		       (unsigned long long) overhead);
 #endif
 
 	/* Add extra slack for bigalloc file systems */
@@ -3104,7 +3118,8 @@
 
 #ifdef RESIZE2FS_DEBUG
 	if (flags & RESIZE_DEBUG_MIN_CALC)
-		printf("Estimated blocks needed: %llu\n", blks_needed);
+		printf("Estimated blocks needed: %llu\n",
+		       (unsigned long long) blks_needed);
 #endif
 
 	/*
@@ -3139,7 +3154,8 @@
 
 #ifdef RESIZE2FS_DEBUG
 		if (flags & RESIZE_DEBUG_MIN_CALC)
-			printf("Extents safety margin: %llu\n", safe_margin);
+			printf("Extents safety margin: %llu\n",
+			       (unsigned long long) safe_margin);
 #endif
 		blks_needed += safe_margin;
 	}
diff --git a/resize/test_extent.c b/resize/test_extent.c
index 5e9aed7..11ad132 100644
--- a/resize/test_extent.c
+++ b/resize/test_extent.c
@@ -88,7 +88,8 @@
 				goto handle_error;
 		} else if (!strcmp(cmd, "lookup")) {
 			num2 = ext2fs_extent_translate(extent, num1);
-			fprintf(out, "# Answer: %llu%s\n", num2,
+			fprintf(out, "# Answer: %llu%s\n",
+				(unsigned long long) num2,
 				num2 ? "" : " (not found)");
 		} else if (!strcmp(cmd, "dump")) {
 			ext2fs_extent_dump(extent, out);
@@ -104,7 +105,9 @@
 				if (!size)
 					break;
 				fprintf(out, "# %llu -> %llu (%llu)\n",
-					num1, num2, size);
+					(unsigned long long) num1,
+					(unsigned long long) num2,
+					(unsigned long long) size);
 			}
 		} else
 			fputs("# Syntax error\n", out);
diff --git a/tests/m_rootdir_acl/script b/tests/m_rootdir_acl/script
index 3e8860c..2a2a4c6 100644
--- a/tests/m_rootdir_acl/script
+++ b/tests/m_rootdir_acl/script
@@ -40,7 +40,7 @@
 other::r-x
 default:user::rwx
 default:group::r-x
-default:group:adm:r-x
+default:group:4:r-x
 default:mask::r-x
 default:other::r-x
 EOF
diff --git a/tests/t_write_subdirectory/name b/tests/t_write_subdirectory/name
new file mode 100644
index 0000000..740c409
--- /dev/null
+++ b/tests/t_write_subdirectory/name
@@ -0,0 +1 @@
+debugfs write creates file in subdirectory
diff --git a/tests/t_write_subdirectory/script b/tests/t_write_subdirectory/script
new file mode 100644
index 0000000..bb354f8
--- /dev/null
+++ b/tests/t_write_subdirectory/script
@@ -0,0 +1,29 @@
+FSCK_OPT=-nf
+
+$MKE2FS -q -F -o Linux -I 256 -b 4096 $TMPFILE 10000 > $test_name.log 2>&1
+status=$?
+if [ "$status" != 0 ] ; then
+	echo "mke2fs failed" > $test_name.failed
+	echo "$test_name: $test_description: failed"
+	return $status
+fi
+
+touch $TMPFILE.1
+cat <<- EOF | $DEBUGFS -w $TMPFILE >> $test_name.log 2>&1
+	mkdir aaa
+	mkdir aaa/bbb
+	write $TMPFILE.1 aaa/bbb/ccc
+EOF
+rm -f $TMPFILE.1
+
+$FSCK $FSCK_OPT $TMPFILE >> $test_name.log 2>&1
+status=$?
+if [ "$status" = 0 ] ; then
+	echo "$test_name: $test_description: ok"
+	touch $test_name.ok
+else
+	echo "e2fsck with failed with $status" > $test_name.failed
+	echo "$test_name: $test_description: failed"
+	return $status
+fi
+rm -f $TMPFILE
diff --git a/tests/u_bounce_io/expect.1 b/tests/u_bounce_io/expect.1
new file mode 100644
index 0000000..a11cb9b
--- /dev/null
+++ b/tests/u_bounce_io/expect.1
@@ -0,0 +1,106 @@
+Creating filesystem with 65536 1k blocks and 16384 inodes
+Superblock backups stored on blocks: 
+	8193, 24577, 40961, 57345
+
+Allocating group tables:    done                            
+Writing inode tables:    done                            
+Writing superblocks and filesystem accounting information:    done
+
+Filesystem features: ext_attr resize_inode dir_index filetype sparse_super
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+test_filesys: 11/16384 files (0.0% non-contiguous), 3364/65536 blocks
+Exit status is 0
+Filesystem volume name:   <none>
+Last mounted on:          <not available>
+Filesystem magic number:  0xEF53
+Filesystem revision #:    1 (dynamic)
+Filesystem features:      ext_attr resize_inode dir_index filetype sparse_super
+Default mount options:    (none)
+Filesystem state:         clean
+Errors behavior:          Continue
+Filesystem OS type:       Linux
+Inode count:              16384
+Block count:              65536
+Reserved block count:     3276
+Overhead clusters:        3350
+Free blocks:              62172
+Free inodes:              16373
+First block:              1
+Block size:               1024
+Fragment size:            1024
+Reserved GDT blocks:      255
+Blocks per group:         8192
+Fragments per group:      8192
+Inodes per group:         2048
+Inode blocks per group:   256
+Mount count:              0
+Check interval:           15552000 (6 months)
+Reserved blocks uid:      0
+Reserved blocks gid:      0
+First inode:              11
+Inode size:	          128
+Default directory hash:   half_md4
+
+
+Group 0: (Blocks 1-8192)
+  Primary superblock at 1, Group descriptors at 2-2
+  Reserved GDT blocks at 3-257
+  Block bitmap at 258 (+257), Inode bitmap at 259 (+258)
+  Inode table at 260-515 (+259)
+  7663 free blocks, 2037 free inodes, 2 directories
+  Free blocks: 530-8192
+  Free inodes: 12-2048
+Group 1: (Blocks 8193-16384)
+  Backup superblock at 8193, Group descriptors at 8194-8194
+  Reserved GDT blocks at 8195-8449
+  Block bitmap at 8450 (+257), Inode bitmap at 8451 (+258)
+  Inode table at 8452-8707 (+259)
+  7677 free blocks, 2048 free inodes, 0 directories
+  Free blocks: 8708-16384
+  Free inodes: 2049-4096
+Group 2: (Blocks 16385-24576)
+  Block bitmap at 16385 (+0), Inode bitmap at 16386 (+1)
+  Inode table at 16387-16642 (+2)
+  7934 free blocks, 2048 free inodes, 0 directories
+  Free blocks: 16643-24576
+  Free inodes: 4097-6144
+Group 3: (Blocks 24577-32768)
+  Backup superblock at 24577, Group descriptors at 24578-24578
+  Reserved GDT blocks at 24579-24833
+  Block bitmap at 24834 (+257), Inode bitmap at 24835 (+258)
+  Inode table at 24836-25091 (+259)
+  7677 free blocks, 2048 free inodes, 0 directories
+  Free blocks: 25092-32768
+  Free inodes: 6145-8192
+Group 4: (Blocks 32769-40960)
+  Block bitmap at 32769 (+0), Inode bitmap at 32770 (+1)
+  Inode table at 32771-33026 (+2)
+  7934 free blocks, 2048 free inodes, 0 directories
+  Free blocks: 33027-40960
+  Free inodes: 8193-10240
+Group 5: (Blocks 40961-49152)
+  Backup superblock at 40961, Group descriptors at 40962-40962
+  Reserved GDT blocks at 40963-41217
+  Block bitmap at 41218 (+257), Inode bitmap at 41219 (+258)
+  Inode table at 41220-41475 (+259)
+  7677 free blocks, 2048 free inodes, 0 directories
+  Free blocks: 41476-49152
+  Free inodes: 10241-12288
+Group 6: (Blocks 49153-57344)
+  Block bitmap at 49153 (+0), Inode bitmap at 49154 (+1)
+  Inode table at 49155-49410 (+2)
+  7934 free blocks, 2048 free inodes, 0 directories
+  Free blocks: 49411-57344
+  Free inodes: 12289-14336
+Group 7: (Blocks 57345-65535)
+  Backup superblock at 57345, Group descriptors at 57346-57346
+  Reserved GDT blocks at 57347-57601
+  Block bitmap at 57602 (+257), Inode bitmap at 57603 (+258)
+  Inode table at 57604-57859 (+259)
+  7676 free blocks, 2048 free inodes, 0 directories
+  Free blocks: 57860-65535
+  Free inodes: 14337-16384
diff --git a/tests/u_bounce_io/script b/tests/u_bounce_io/script
new file mode 100644
index 0000000..5dd6329
--- /dev/null
+++ b/tests/u_bounce_io/script
@@ -0,0 +1,9 @@
+DESCRIPTION="bounce I/O in unix_io"
+DUMPE2FS_IGNORE_80COL=1
+export DUMPE2FS_IGNORE_80COL
+UNIX_IO_FORCE_BOUNCE=yes
+export UNIX_IO_FORCE_BOUNCE
+FS_SIZE=65536
+. $cmd_dir/run_mke2fs
+unset DUMPE2FS_IGNORE_80COL
+unset UNIX_IO_FORCE_BOUNCE
diff --git a/version.h b/version.h
index a45d995..e27de3c 100644
--- a/version.h
+++ b/version.h
@@ -7,5 +7,5 @@
  * file may be redistributed under the GNU Public License v2.
  */
 
-#define E2FSPROGS_VERSION "1.46.1"
-#define E2FSPROGS_DATE "9-Feb-2021"
+#define E2FSPROGS_VERSION "1.46.2"
+#define E2FSPROGS_DATE "28-Feb-2021"