| From 088f9d799b9a01e2630189a046c326205a4a8cde Mon Sep 17 00:00:00 2001 |
| From: Theodore Ts'o <tytso@mit.edu> |
| Date: Fri, 14 Feb 2020 18:11:19 -0500 |
| Subject: [PATCH] ext4: improve explanation of a mount failure caused by a |
| misconfigured kernel |
| |
| commit d65d87a07476aa17df2dcb3ad18c22c154315bec upstream. |
| |
| If CONFIG_QFMT_V2 is not enabled, but CONFIG_QUOTA is enabled, when a |
| user tries to mount a file system with the quota or project quota |
| enabled, the kernel will emit a very confusing messsage: |
| |
| EXT4-fs warning (device vdc): ext4_enable_quotas:5914: Failed to enable quota tracking (type=0, err=-3). Please run e2fsck to fix. |
| EXT4-fs (vdc): mount failed |
| |
| We will now report an explanatory message indicating which kernel |
| configuration options have to be enabled, to avoid customer/sysadmin |
| confusion. |
| |
| Link: https://lore.kernel.org/r/20200215012738.565735-1-tytso@mit.edu |
| Google-Bug-Id: 149093531 |
| Fixes: 7c319d328505b778 ("ext4: make quota as first class supported feature") |
| Signed-off-by: Theodore Ts'o <tytso@mit.edu> |
| Cc: stable@kernel.org |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/fs/ext4/super.c b/fs/ext4/super.c |
| index 5cbd566444bc..6852f963bcd6 100644 |
| --- a/fs/ext4/super.c |
| +++ b/fs/ext4/super.c |
| @@ -2950,17 +2950,11 @@ static int ext4_feature_set_ok(struct super_block *sb, int readonly) |
| return 0; |
| } |
| |
| -#ifndef CONFIG_QUOTA |
| - if (ext4_has_feature_quota(sb) && !readonly) { |
| +#if !defined(CONFIG_QUOTA) || !defined(CONFIG_QFMT_V2) |
| + if (!readonly && (ext4_has_feature_quota(sb) || |
| + ext4_has_feature_project(sb))) { |
| ext4_msg(sb, KERN_ERR, |
| - "Filesystem with quota feature cannot be mounted RDWR " |
| - "without CONFIG_QUOTA"); |
| - return 0; |
| - } |
| - if (ext4_has_feature_project(sb) && !readonly) { |
| - ext4_msg(sb, KERN_ERR, |
| - "Filesystem with project quota feature cannot be mounted RDWR " |
| - "without CONFIG_QUOTA"); |
| + "The kernel was not built with CONFIG_QUOTA and CONFIG_QFMT_V2"); |
| return 0; |
| } |
| #endif /* CONFIG_QUOTA */ |
| -- |
| 2.7.4 |
| |