[3/3] ext4: don't show data=<mode> option if defaulted

Message ID 9266892b77a6e76b532abc2e3d16978a34ba84cc.1520480776.git.tgnottingham@gmail.com
State New
Headers show
Series
  • ext4: improve display of mount options
Related show

Commit Message

Tyson Nottingham March 8, 2018, 5:53 a.m.
Previously, mount -l would show data=<mode> even if the ext4 default
journaling mode was being used. Change this to be consistent with the
rest of the options.

Ext4 already did the right thing when the journaling mode being used
matched the one specified in the superblock's default mount options. The
reason it failed to do the right thing for the ext4 defaults is that,
when set, they were never included in sbi->s_def_mount_opt (unlike the
superblock's defaults, which were).

Signed-off-by: Tyson Nottingham <tgnottingham@gmail.com>
---

Before:

(Without any default journaling mode configured in superblock or mount
option, ext4 will use its own default, which is ordered in this case.)

$ sudo mount -o loop=$(losetup -f) image.ext4 mnt
$ grep data /proc/fs/ext4/loop0/options
data=ordered
$ mount -l | grep image
/home/tgnottingham/image.ext4 on /home/tgnottingham/mnt type ext4 (rw,relatime,data=ordered)

data=ordered is still displayed, even though the ext4 default was used.


After:

$ sudo mount -o loop=$(losetup -f) image.ext4 mnt
$ grep data /proc/fs/ext4/loop0/options
data=ordered
$ mount -l | grep image
/home/tgnottingham/image.ext4 on /home/tgnottingham/mnt type ext4 (rw,relatime)

data=ordered is not displayed, since it was the default.

tgnottingham@kernel-dev:~$ sudo mount -o loop=$(losetup -f),data=journal image.ext4 mnt
$ grep data /proc/fs/ext4/loop0/options
data=journal
$ mount -l | grep image
/home/tgnottingham/image.ext4 on /home/tgnottingham/mnt type ext4 (rw,relatime,nodelalloc,data=journal)

data=journal is displayed, since it was not the default.


Default mount options stored in superblock were tested but not shown.

---
 fs/ext4/super.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

Comments

Theodore Y. Ts'o March 30, 2018, 5:01 a.m. | #1
On Wed, Mar 07, 2018 at 09:53:38PM -0800, Tyson Nottingham wrote:
> Previously, mount -l would show data=<mode> even if the ext4 default
> journaling mode was being used. Change this to be consistent with the
> rest of the options.
> 
> Ext4 already did the right thing when the journaling mode being used
> matched the one specified in the superblock's default mount options. The
> reason it failed to do the right thing for the ext4 defaults is that,
> when set, they were never included in sbi->s_def_mount_opt (unlike the
> superblock's defaults, which were).
> 
> Signed-off-by: Tyson Nottingham <tgnottingham@gmail.com>

Applied, thanks.

					- Ted

Patch

diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 7437ed0..7fbe7f4 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -4091,10 +4091,13 @@  static int ext4_fill_super(struct super_block *sb, void *data, int silent)
 		 * cope, else JOURNAL_DATA
 		 */
 		if (jbd2_journal_check_available_features
-		    (sbi->s_journal, 0, 0, JBD2_FEATURE_INCOMPAT_REVOKE))
+		    (sbi->s_journal, 0, 0, JBD2_FEATURE_INCOMPAT_REVOKE)) {
 			set_opt(sb, ORDERED_DATA);
-		else
+			sbi->s_def_mount_opt |= EXT4_MOUNT_ORDERED_DATA;
+		} else {
 			set_opt(sb, JOURNAL_DATA);
+			sbi->s_def_mount_opt |= EXT4_MOUNT_JOURNAL_DATA;
+		}
 		break;
 
 	case EXT4_MOUNT_ORDERED_DATA: