Re: [PATCH 09/20] ext4: Initialize timestamps limits

From: Theodore Y. Ts'o
Date: Sat Aug 03 2019 - 12:03:19 EST


On Sat, Aug 03, 2019 at 11:30:22AM +0200, Arnd Bergmann wrote:
>
> I see in the ext4 code that we always try to expand i_extra_size
> to s_want_extra_isize in ext4_mark_inode_dirty(), and that
> s_want_extra_isize is always at least s_min_extra_isize, so
> we constantly try to expand the inode to fit.

Yes, we *try*. But we may not succeed. There may actually be a
problem here if the cause is due to there simply is no space in the
external xattr block, so we might try and try every time we try to
modify that inode, and it would be a performance mess. If it's due to
there being no room in the current transaction, then it's highly
likely it will succeed the next time.

> Did older versions of ext4 or ext3 ignore s_min_extra_isize
> when creating inodes despite
> EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE,
> or is there another possibility I'm missing?

s_min_extra_isize could get changed in order to make room for some new
file system feature --- such as extended timestamps. That's how we
might take an old ext3 file system with an inode size > 128, and try
to evacuate space for extended timestamps, on a best efforts basis.
And since it's best efforts is why Red Hat refuses to support that
case. It'll work 99.9% of the time, but they don't want to deal with
the 0.01% cases showing up at their help desk.

If you want to pretend that file systems never get upgraded, then life
is much simpler. The general approach is that for less-sophisticated
customers (e.g., most people running enterprise distros) file system
upgrades are not a thing. But for sophisticated users, we do try to
make thing work for people who are aware of the risks / caveats /
rough edges. Google won't have been able to upgrade thousands and
thousands of servers in data centers all over the world if we limited
ourselves to Red Hat's support restrictions. Backup / reformat /
restore really isn't a practical rollout strategy for many exabytes of
file systems.

It sounds like your safety checks / warnings are mostly targeted at
low-information customers, no?

- Ted