How to enable data=journal ext4 fs mode?

Preface (my 1st attempt ended badly): Fstab adding data=journal crashed my Linux' ext4 upon boot, how to fix?

I can’t find some reliable step-by-step instructions on How to enable data=journal ext4 fs mode? (It is my root file system.)

Can anyone help? Thank you!

OS: Linux Mint 21.1 Cinnamon

Here is the tune2fs dump:

$ sudo tune2fs -l /dev/nvme0n1p2
[sudo] password for vlastimil:                
tune2fs 1.46.5 (30-Dec-2021)
Filesystem volume name:   <none>
Last mounted on:          /
Filesystem UUID:          f1fc7345-be7a-4c6b-9559-fc6e2d445bfa
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              122093568
Block count:              488354304
Reserved block count:     20068825
Free blocks:              387437462
Free inodes:              121112327
First block:              0
Block size:               4096
Fragment size:            4096
Group descriptor size:    64
Reserved GDT blocks:      817
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Sat Jun 16 11:26:24 2018
Last mount time:          Sun Jul  2 17:28:19 2023
Last write time:          Sun Jul  2 17:28:11 2023
Mount count:              1
Maximum mount count:      1
Last checked:             Sun Jul  2 17:28:11 2023
Check interval:           1 (0:00:01)
Next check after:         Sun Jul  2 17:28:12 2023
Lifetime writes:          39 TB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     32
Desired extra isize:      32
Journal inode:            8
First orphan inode:       132249
Default directory hash:   half_md4
Directory Hash Seed:      48360d76-0cfb-4aed-892e-a8f3a30dd794
Journal backup:           inode blocks
Checksum type:            crc32c
Checksum:                 0xe1a6cb12

Since this is your root filesystem, adding the mount option in /etc/fstab would pose a bit of a chicken-vs-egg problem: the system would need to know the mount option before starting to mount the root filesystem, but the /etc/fstab file cannot be read until the root filesystem is already mounted.

That’s why there is a separate way for specifying mount options for your root filesystem: the rootflags= kernel boot option.

Within GRUB boot menu, you can press E to edit the selected boot entry (non-persistently, for the current boot only!), find the line that starts with the linux or linuxefi keyword, and add rootflags=data=journal to the end of that line. Then follow the on-screen instructions to boot with the modified entry.

If this results in a successful boot, you can add the boot option to /etc/default/grub file (to the GRUB_CMDLINE_LINUX variable) and then run sudo update-grub to make it persistent.

If the initial boot attempt with the rootflags=data=journal fails, you can simply boot again to return to previous state, as the changes made in GRUB boot menu will not be stored on disk.

Answered By: telcoM