diff mbox

ext4: clarify error messages for mounting fs w/o journal /w journal options

Message ID 1455283909-23354-1-git-send-email-george@george-net.de
State New, archived
Headers show

Commit Message

Georg Altmann Feb. 12, 2016, 1:31 p.m. UTC
Previous message was hard to understand: When mounting a ext4 fs without a
journal, but a mount option that controls journaling is used, clearly state
that the fs cannot be mounted with this option because it has no journal.

See also comments at
https://bugs.archlinux.org/task/48135

Signed-off-by: Georg Altmann <george@george-net.de>
---
 fs/ext4/super.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

Comments

Theodore Ts'o Feb. 12, 2016, 5:03 p.m. UTC | #1
On Fri, Feb 12, 2016 at 02:31:49PM +0100, Georg Altmann wrote:
> Previous message was hard to understand: When mounting a ext4 fs without a
> journal, but a mount option that controls journaling is used, clearly state
> that the fs cannot be mounted with this option because it has no journal.

Well, technically it's possible for the file system to have a journal,
but for journalling not to be enabled.  For example:

root@kvm-xfstests:~# dmesg -n 7
root@kvm-xfstests:~# mke2fs -t ext4 -Fq /dev/vdc
/dev/vdc contains a ext4 file system
	created on Fri Feb 12 11:59:10 2016
root@kvm-xfstests:~# dumpe2fs /dev/vdc | grep features
dumpe2fs 1.43-WIP (18-May-2015)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Journal features:         (none)
root@kvm-xfstests:~# mount -o noload,commit=1 /dev/vdc /vdc 2> /dev/null
[  313.867505] EXT4-fs (vdc): can't mount with commit=1, fs mounted w/o journal

So saying "fs has no journal" isn't necessarily going to be correct.
Maybe "Can't mount with data=xxx, journalling not enabled" would be
less confusing to users?

Cheers,

						- Ted
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Georg Altmann Feb. 12, 2016, 5:32 p.m. UTC | #2
Am 12.02.2016 um 18:03 schrieb Theodore Ts'o:
> On Fri, Feb 12, 2016 at 02:31:49PM +0100, Georg Altmann wrote:
>> Previous message was hard to understand: When mounting a ext4 fs without a
>> journal, but a mount option that controls journaling is used, clearly state
>> that the fs cannot be mounted with this option because it has no journal.
> 
> Well, technically it's possible for the file system to have a journal,
> but for journalling not to be enabled.  For example:
> 
> root@kvm-xfstests:~# dmesg -n 7
> root@kvm-xfstests:~# mke2fs -t ext4 -Fq /dev/vdc
> /dev/vdc contains a ext4 file system
> 	created on Fri Feb 12 11:59:10 2016
> root@kvm-xfstests:~# dumpe2fs /dev/vdc | grep features
> dumpe2fs 1.43-WIP (18-May-2015)
> Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
> Journal features:         (none)
> root@kvm-xfstests:~# mount -o noload,commit=1 /dev/vdc /vdc 2> /dev/null
> [  313.867505] EXT4-fs (vdc): can't mount with commit=1, fs mounted w/o journal
> 
> So saying "fs has no journal" isn't necessarily going to be correct.
> Maybe "Can't mount with data=xxx, journalling not enabled" would be
> less confusing to users?

Yes.

I do not understand the error checking logic here enough:
it could be either fs without journal or journal not enabled, right?
So how about
"can't mount with data=xxx, journalling not enabled or no journal"
?

Or, if this can be justified in regard of code complexity, handle both
cases separately. Even nicer diagnostics for the user...

Should I send a new patch?

Regards,
Georg
diff mbox

Patch

diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 486e869..4c50f0d 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -3716,25 +3716,25 @@  static int ext4_fill_super(struct super_block *sb, void *data, int silent)
 	} else {
 		/* Nojournal mode, all journal mount options are illegal */
 		if (test_opt2(sb, EXPLICIT_JOURNAL_CHECKSUM)) {
-			ext4_msg(sb, KERN_ERR, "can't mount with "
-				 "journal_checksum, fs mounted w/o journal");
+			ext4_msg(sb, KERN_ERR, "can't mount with option "
+				 "journal_checksum, fs has no journal");
 			goto failed_mount_wq;
 		}
 		if (test_opt(sb, JOURNAL_ASYNC_COMMIT)) {
-			ext4_msg(sb, KERN_ERR, "can't mount with "
-				 "journal_async_commit, fs mounted w/o journal");
+			ext4_msg(sb, KERN_ERR, "can't mount with option "
+				 "journal_async_commit, fs has no journal");
 			goto failed_mount_wq;
 		}
 		if (sbi->s_commit_interval != JBD2_DEFAULT_MAX_COMMIT_AGE*HZ) {
-			ext4_msg(sb, KERN_ERR, "can't mount with "
-				 "commit=%lu, fs mounted w/o journal",
+			ext4_msg(sb, KERN_ERR, "can't mount with option "
+				 "commit=%lu, fs has no journal",
 				 sbi->s_commit_interval / HZ);
 			goto failed_mount_wq;
 		}
 		if (EXT4_MOUNT_DATA_FLAGS &
 		    (sbi->s_mount_opt ^ sbi->s_def_mount_opt)) {
-			ext4_msg(sb, KERN_ERR, "can't mount with "
-				 "data=, fs mounted w/o journal");
+			ext4_msg(sb, KERN_ERR, "can't mount with option "
+				 "data=, fs has no journal");
 			goto failed_mount_wq;
 		}
 		sbi->s_def_mount_opt &= EXT4_MOUNT_JOURNAL_CHECKSUM;