Re: Is it time to remove reiserfs?
From: Dave Chinner
Date: Tue Apr 05 2022 - 22:54:15 EST
On Sat, Apr 02, 2022 at 12:57:49PM +0200, Pavel Machek wrote:
> > > So from my distro experience installed userbase of reiserfs is pretty small
> > > and shrinking. We still do build reiserfs in openSUSE / SLES kernels but
> > > for enterprise offerings it is unsupported (for like 3-4 years) and the module
> > > is not in the default kernel rpm anymore.
> > >
> > > So clearly the filesystem is on the deprecation path, the question is
> > > whether it is far enough to remove it from the kernel completely. Maybe
> > > time to start deprecation by printing warnings when reiserfs gets mounted
> > > and then if nobody yells for year or two, we'll go ahead and remove it?
> > Yup, I'd say we should deprecate it and add it to the removal
> > schedule. The less poorly tested legacy filesystem code we have to
> > maintain the better.
> > Along those lines, I think we really need to be more aggressive
> > about deprecating and removing filesystems that cannot (or will not)
> > be made y2038k compliant in the new future. We're getting to close
> > to the point where long term distro and/or product development life
> > cycles will overlap with y2038k, so we should be thinking of
> > deprecating and removing such filesystems before they end up in
> > products that will still be in use in 15 years time.
> > And just so everyone in the discussion is aware: XFS already has a
> > deprecation and removal schedule for the non-y2038k-compliant v4
> > filesystem format. It's officially deprecated right now, we'll stop
> > building kernels with v4 support enabled by default in 2025, and
> > we're removing the code that supports the v4 format entirely in
> > 2030.
> It is not up to you. You can't remove feature people are
> using. Sorry. Talk to Linus about that.
I think you have the wrong end of the stick. We're not removing
stuff that people use, we're removing support for functionality that
will be *fundamentally broken* and *unfixable* come 2038. Hence we
need a process for ensuring that nobody is still requiring us to
support it by the scheduled removal date.
Every long term project needs to have a deprecation process so that
they can clean out unmaintained, broken, unfixable and/or unused
code without putting users at risk. If we can't/won't/don't clear
out unmaintained or unfixable code, the risk of data loss, security
breaches, etc in that code is a real and present danger to
any kernel that includes that code. We learnt this lesson the hard
way recently, and we simply removed the legacy code responsible in
response. Even Linus agreed that prompt removal of the functionality
was the right thing to do.
This occurred despite the fact we had a feature deprecation policy
for XFS long before that incident occurred - we just had not been
applying it to dusty corners of the user API we inherited from Irix.
It has been used for things like proc/sysfs knobs and mount options
that are no longer supported, and the lesson we learn is that is
should be applied to user APIs as well. We'd already extended that
process for deprecation and removal of support for on-disk formats
(i.e. the V4 format) but not legacy user APIS.
W.r.t to the V4 format deprecation, the kernel issues warnings
at mount time right now to say that the v4 format is deprecated and
will be going away.
XFS (dm-0): Deprecated V4 format (crc=0) will not be supported after September 2030.
XFS (dm-0): Mounting V4 Filesystem
XFS (dm-0): Ending clean mount
xfs filesystem being mounted at /mnt/scratch supports timestamps until 2038 (0x7fffffff)
mkfs.xfs warns if you explicitly make a v4 fielsystem:
# mkfs.xfs -N -m crc=0 /dev/mapper/fast
V4 filesystems are deprecated and will not be supported by future versions.
The timeframe for support is documented in both the mkfs.xfs man
page and the XFS section of the kernel admin guide published here:
Indeed, if you keep reading down that link, you'll see all the
deprecated mount options, sysctls, etc and their removal schedule,
as well as all the removed options and when they were removed.
Deprecation and removal of old features is something that all long
term projects need to be able to perform, and the Linux kernel is no
different. Just because the Linux kernel project as a whole
doesn't have full software lifecycle management processes, it
doesn't mean that every kernel subsystems have no full software
lifecycle management processes.
Rather than saying "you cannot do X", it is better to learn why "we
*need* to do X" and then come up with a sane process for allowing X
to occur. The recent a.out removal and the reverted /dev/urandom
changes are good examples of how having a well thought out feature
deprecation and removal process is a really good thing to have.