On Fri, Jun 13, 2025 at 5:50 AM Theodore Ts'o <tytso@xxxxxxx> wrote: > > On Thu, Jun 12, 2025 at 08:54:59PM +0800, Julian Sun wrote: > > Hi, > > > > Recently, I observed a significant difference in the number of > > blk_mq_get_tag() calls when executing mkfs.ext4 -F -q /dev/$nvme > > versus mkfs.ext4 -F -q -E lazy_itable_init=1,lazy_journal_init=1 > > /dev/$nvme. The former has over 2,000 more calls than the latter, > > which is confusing because the mkfs.ext4 man page states both features > > should be enabled by default. This implies the commands should be > > equivalent, with no I/O difference. > > > > lazy_journal_init[= <0 to disable, 1 to enable>] > > If enabled, the journal inode will not be > > fully zeroed out by mke2fs. This speeds up file system initialization > > noticeably, but carries some small risk if the system crashes before > > the journal has been overwritten entirely one time. If the option > > value is omitted, it defaults to 1 to enable lazy journal inode > > ^^^^^^^^^^^ > > zeroing. > > I agree that this might be a bit misleading, but what was meant was > that: > > mke2fs -E lazy_journal_init > > and > > mke2fs -E lazy_journal_init=1 > > are identical. The key words here is "If the option value is > omitted". > That's a bit surprising... Because for readers searching for the default value in the man page, they actually want to know the value when the configuration is completely unspecified, including in /etc/mke2fs.conf and when not specified via mke2fs -E. It feels like the current man page description avoids the majority of scenarios and only describes a rare case. What do you think about changing the man page description to: "If the value is not specified in /etc/mke2fs.conf or via mke2fs, it defaults to disabled."? This also implicitly conveys that the default value can be overridden by configurations in /etc/mke2fs.conf or via the mkfs.ext4 -E option. > > Note that there is a distinct difference between the extended option > using -E command-line option and specifying the default in > mke2fs.conf. That is documented in the mke2fs.conf(5) man page. > > So the bottom line is that it is possible to change the default of > lazy_journal_init (and lazy_itable_init, etc.) in /etc/mke2fs.conf. > So specifying exactly what the default should be is tricky, because > the system administrator could have changed what is in > /etc/mke2fs.conf. > > So there is the default if there is no mention of the option in > /etc/mke2fs.conf; the default that is used if the extended option -E > lazy_itable_init=N is not specified (which is the value in > /etc/mke2fs.conf, or the default if it is not mentioned in > /etc/mke2fs.conf); and then there is the default value if "=N" is not > specified. > > 'm not sure what's the best way of making this more explicit, short > of doubling or tripling the paragraphs in man pages for mke2fs(8) and > mke2fs.conf(5). Which would not be ideal.... I'm happy to receive > any suggestions for how to make things a bit more clear but hopefully > in a succint way. > > Fortunately, it's super rare that users would ever need to change the > default, and most of the time, it's best not to mess with these knobs > at all.... > > Cheers, > > - Ted Thanks, -- Julian Sun <sunjunchao2870@xxxxxxxxx>