* [PATCHSET] xfs: kconfig and feature changes for 2025 LTS
@ 2025-09-03 14:59 Darrick J. Wong
2025-09-03 14:59 ` [PATCH 1/4] xfs: disable deprecated features by default in Kconfig Darrick J. Wong
` (3 more replies)
0 siblings, 4 replies; 13+ messages in thread
From: Darrick J. Wong @ 2025-09-03 14:59 UTC (permalink / raw)
To: djwong, cem; +Cc: preichl, linux-xfs
Hi all,
Ahead of the 2025 LTS kernel, disable by default the two features that
we promised to turn off in September 2025: V4 filesystems, and the
long-broken ASCII case insensitive directories.
Since online fsck has not had any major issues in the 16 months since it
was merged upstream, let's also turn that on by default.
If you're going to start using this code, I strongly recommend pulling
from my git trees, which are linked below.
This has been running on the djcloud for months with no problems. Enjoy!
Comments and questions are, as always, welcome.
--D
kernel git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-linux.git/log/?h=kconfig-2025-changes
---
Commits in this patchset:
* xfs: disable deprecated features by default in Kconfig
* xfs: remove deprecated mount options
* xfs: remove deprecated sysctl knobs
* xfs: enable online fsck by default in Kconfig
---
fs/xfs/xfs_linux.h | 2 -
fs/xfs/xfs_mount.h | 12 ++++---
fs/xfs/xfs_sysctl.h | 3 --
Documentation/admin-guide/xfs.rst | 57 +++++------------------------------
fs/xfs/Kconfig | 16 ++++------
fs/xfs/libxfs/xfs_attr_leaf.c | 23 +++-----------
fs/xfs/libxfs/xfs_bmap.c | 14 ++-------
fs/xfs/libxfs/xfs_ialloc.c | 4 +-
fs/xfs/libxfs/xfs_inode_util.c | 11 -------
fs/xfs/libxfs/xfs_sb.c | 9 ++----
fs/xfs/xfs_globals.c | 2 -
fs/xfs/xfs_icache.c | 6 +---
fs/xfs/xfs_iops.c | 12 +++----
fs/xfs/xfs_mount.c | 13 --------
fs/xfs/xfs_super.c | 60 +------------------------------------
fs/xfs/xfs_sysctl.c | 29 +-----------------
16 files changed, 43 insertions(+), 230 deletions(-)
^ permalink raw reply [flat|nested] 13+ messages in thread* [PATCH 1/4] xfs: disable deprecated features by default in Kconfig 2025-09-03 14:59 [PATCHSET] xfs: kconfig and feature changes for 2025 LTS Darrick J. Wong @ 2025-09-03 14:59 ` Darrick J. Wong 2025-09-05 8:30 ` Carlos Maiolino 2025-09-03 15:00 ` [PATCH 2/4] xfs: remove deprecated mount options Darrick J. Wong ` (2 subsequent siblings) 3 siblings, 1 reply; 13+ messages in thread From: Darrick J. Wong @ 2025-09-03 14:59 UTC (permalink / raw) To: djwong, cem; +Cc: linux-xfs From: Darrick J. Wong <djwong@kernel.org> We promised to turn off these old features by default in September 2025. Do so now. Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> --- Documentation/admin-guide/xfs.rst | 5 ++--- fs/xfs/Kconfig | 8 ++++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Documentation/admin-guide/xfs.rst b/Documentation/admin-guide/xfs.rst index a18328a5fb93be..693b09ca62922f 100644 --- a/Documentation/admin-guide/xfs.rst +++ b/Documentation/admin-guide/xfs.rst @@ -253,9 +253,8 @@ latest version and try again. The deprecation will take place in two parts. Support for mounting V4 filesystems can now be disabled at kernel build time via Kconfig option. -The option will default to yes until September 2025, at which time it -will be changed to default to no. In September 2030, support will be -removed from the codebase entirely. +These options were changed to default to no in September 2025. In +September 2030, support will be removed from the codebase entirely. Note: Distributors may choose to withdraw V4 format support earlier than the dates listed above. diff --git a/fs/xfs/Kconfig b/fs/xfs/Kconfig index 065953475cf5eb..ecebd3ebab1342 100644 --- a/fs/xfs/Kconfig +++ b/fs/xfs/Kconfig @@ -25,7 +25,7 @@ config XFS_FS config XFS_SUPPORT_V4 bool "Support deprecated V4 (crc=0) format" depends on XFS_FS - default y + default n help The V4 filesystem format lacks certain features that are supported by the V5 format, such as metadata checksumming, strengthened @@ -40,7 +40,7 @@ config XFS_SUPPORT_V4 filesystem is a V4 filesystem. If no such string is found, please upgrade xfsprogs to the latest version and try again. - This option will become default N in September 2025. Support for the + This option became default N in September 2025. Support for the V4 format will be removed entirely in September 2030. Distributors can say N here to withdraw support earlier. @@ -50,7 +50,7 @@ config XFS_SUPPORT_V4 config XFS_SUPPORT_ASCII_CI bool "Support deprecated case-insensitive ascii (ascii-ci=1) format" depends on XFS_FS - default y + default n help The ASCII case insensitivity filesystem feature only works correctly on systems that have been coerced into using ISO 8859-1, and it does @@ -67,7 +67,7 @@ config XFS_SUPPORT_ASCII_CI filesystem is a case-insensitive filesystem. If no such string is found, please upgrade xfsprogs to the latest version and try again. - This option will become default N in September 2025. Support for the + This option became default N in September 2025. Support for the feature will be removed entirely in September 2030. Distributors can say N here to withdraw support earlier. ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 1/4] xfs: disable deprecated features by default in Kconfig 2025-09-03 14:59 ` [PATCH 1/4] xfs: disable deprecated features by default in Kconfig Darrick J. Wong @ 2025-09-05 8:30 ` Carlos Maiolino 0 siblings, 0 replies; 13+ messages in thread From: Carlos Maiolino @ 2025-09-05 8:30 UTC (permalink / raw) To: Darrick J. Wong; +Cc: linux-xfs On Wed, Sep 03, 2025 at 07:59:52AM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@kernel.org> > > We promised to turn off these old features by default in September 2025. > Do so now. > > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> > --- > Documentation/admin-guide/xfs.rst | 5 ++--- > fs/xfs/Kconfig | 8 ++++---- > 2 files changed, 6 insertions(+), 7 deletions(-) > > > diff --git a/Documentation/admin-guide/xfs.rst b/Documentation/admin-guide/xfs.rst > index a18328a5fb93be..693b09ca62922f 100644 > --- a/Documentation/admin-guide/xfs.rst > +++ b/Documentation/admin-guide/xfs.rst > @@ -253,9 +253,8 @@ latest version and try again. Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com> > > The deprecation will take place in two parts. Support for mounting V4 > filesystems can now be disabled at kernel build time via Kconfig option. > -The option will default to yes until September 2025, at which time it > -will be changed to default to no. In September 2030, support will be > -removed from the codebase entirely. > +These options were changed to default to no in September 2025. In > +September 2030, support will be removed from the codebase entirely. > > Note: Distributors may choose to withdraw V4 format support earlier than > the dates listed above. > diff --git a/fs/xfs/Kconfig b/fs/xfs/Kconfig > index 065953475cf5eb..ecebd3ebab1342 100644 > --- a/fs/xfs/Kconfig > +++ b/fs/xfs/Kconfig > @@ -25,7 +25,7 @@ config XFS_FS > config XFS_SUPPORT_V4 > bool "Support deprecated V4 (crc=0) format" > depends on XFS_FS > - default y > + default n > help > The V4 filesystem format lacks certain features that are supported > by the V5 format, such as metadata checksumming, strengthened > @@ -40,7 +40,7 @@ config XFS_SUPPORT_V4 > filesystem is a V4 filesystem. If no such string is found, please > upgrade xfsprogs to the latest version and try again. > > - This option will become default N in September 2025. Support for the > + This option became default N in September 2025. Support for the > V4 format will be removed entirely in September 2030. Distributors > can say N here to withdraw support earlier. > > @@ -50,7 +50,7 @@ config XFS_SUPPORT_V4 > config XFS_SUPPORT_ASCII_CI > bool "Support deprecated case-insensitive ascii (ascii-ci=1) format" > depends on XFS_FS > - default y > + default n > help > The ASCII case insensitivity filesystem feature only works correctly > on systems that have been coerced into using ISO 8859-1, and it does > @@ -67,7 +67,7 @@ config XFS_SUPPORT_ASCII_CI > filesystem is a case-insensitive filesystem. If no such string is > found, please upgrade xfsprogs to the latest version and try again. > > - This option will become default N in September 2025. Support for the > + This option became default N in September 2025. Support for the > feature will be removed entirely in September 2030. Distributors > can say N here to withdraw support earlier. > > ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 2/4] xfs: remove deprecated mount options 2025-09-03 14:59 [PATCHSET] xfs: kconfig and feature changes for 2025 LTS Darrick J. Wong 2025-09-03 14:59 ` [PATCH 1/4] xfs: disable deprecated features by default in Kconfig Darrick J. Wong @ 2025-09-03 15:00 ` Darrick J. Wong 2025-09-05 8:35 ` Carlos Maiolino 2025-09-03 15:00 ` [PATCH 3/4] xfs: remove deprecated sysctl knobs Darrick J. Wong 2025-09-03 15:00 ` [PATCH 4/4] xfs: enable online fsck by default in Kconfig Darrick J. Wong 3 siblings, 1 reply; 13+ messages in thread From: Darrick J. Wong @ 2025-09-03 15:00 UTC (permalink / raw) To: djwong, cem; +Cc: preichl, linux-xfs From: Darrick J. Wong <djwong@kernel.org> These four mount options were scheduled for removal in September 2025, so remove them now. Cc: preichl@redhat.com Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> --- fs/xfs/xfs_mount.h | 12 ++++--- Documentation/admin-guide/xfs.rst | 26 +--------------- fs/xfs/libxfs/xfs_attr_leaf.c | 23 +++----------- fs/xfs/libxfs/xfs_bmap.c | 14 ++------- fs/xfs/libxfs/xfs_ialloc.c | 4 +- fs/xfs/libxfs/xfs_sb.c | 9 ++---- fs/xfs/xfs_icache.c | 6 +--- fs/xfs/xfs_mount.c | 13 -------- fs/xfs/xfs_super.c | 60 +------------------------------------ 9 files changed, 25 insertions(+), 142 deletions(-) diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index 97de44c32272f2..f046d1215b043c 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h @@ -363,7 +363,6 @@ typedef struct xfs_mount { #define XFS_FEAT_EXTFLG (1ULL << 7) /* unwritten extents */ #define XFS_FEAT_ASCIICI (1ULL << 8) /* ASCII only case-insens. */ #define XFS_FEAT_LAZYSBCOUNT (1ULL << 9) /* Superblk counters */ -#define XFS_FEAT_ATTR2 (1ULL << 10) /* dynamic attr fork */ #define XFS_FEAT_PARENT (1ULL << 11) /* parent pointers */ #define XFS_FEAT_PROJID32 (1ULL << 12) /* 32 bit project id */ #define XFS_FEAT_CRC (1ULL << 13) /* metadata CRCs */ @@ -386,7 +385,6 @@ typedef struct xfs_mount { /* Mount features */ #define XFS_FEAT_NOLIFETIME (1ULL << 47) /* disable lifetime hints */ -#define XFS_FEAT_NOATTR2 (1ULL << 48) /* disable attr2 creation */ #define XFS_FEAT_NOALIGN (1ULL << 49) /* ignore alignment */ #define XFS_FEAT_ALLOCSIZE (1ULL << 50) /* user specified allocation size */ #define XFS_FEAT_LARGE_IOSIZE (1ULL << 51) /* report large preferred @@ -396,7 +394,6 @@ typedef struct xfs_mount { #define XFS_FEAT_DISCARD (1ULL << 54) /* discard unused blocks */ #define XFS_FEAT_GRPID (1ULL << 55) /* group-ID assigned from directory */ #define XFS_FEAT_SMALL_INUMS (1ULL << 56) /* user wants 32bit inodes */ -#define XFS_FEAT_IKEEP (1ULL << 57) /* keep empty inode clusters*/ #define XFS_FEAT_SWALLOC (1ULL << 58) /* stripe width allocation */ #define XFS_FEAT_FILESTREAMS (1ULL << 59) /* use filestreams allocator */ #define XFS_FEAT_DAX_ALWAYS (1ULL << 60) /* DAX always enabled */ @@ -504,12 +501,17 @@ __XFS_HAS_V4_FEAT(align, ALIGN) __XFS_HAS_V4_FEAT(logv2, LOGV2) __XFS_HAS_V4_FEAT(extflg, EXTFLG) __XFS_HAS_V4_FEAT(lazysbcount, LAZYSBCOUNT) -__XFS_ADD_V4_FEAT(attr2, ATTR2) __XFS_ADD_V4_FEAT(projid32, PROJID32) __XFS_HAS_V4_FEAT(v3inodes, V3INODES) __XFS_HAS_V4_FEAT(crc, CRC) __XFS_HAS_V4_FEAT(pquotino, PQUOTINO) +static inline void xfs_add_attr2(struct xfs_mount *mp) +{ + if (IS_ENABLED(CONFIG_XFS_SUPPORT_V4)) + xfs_sb_version_addattr2(&mp->m_sb); +} + /* * Mount features * @@ -517,7 +519,6 @@ __XFS_HAS_V4_FEAT(pquotino, PQUOTINO) * bit inodes and read-only state, are kept as operational state rather than * features. */ -__XFS_HAS_FEAT(noattr2, NOATTR2) __XFS_HAS_FEAT(noalign, NOALIGN) __XFS_HAS_FEAT(allocsize, ALLOCSIZE) __XFS_HAS_FEAT(large_iosize, LARGE_IOSIZE) @@ -526,7 +527,6 @@ __XFS_HAS_FEAT(dirsync, DIRSYNC) __XFS_HAS_FEAT(discard, DISCARD) __XFS_HAS_FEAT(grpid, GRPID) __XFS_HAS_FEAT(small_inums, SMALL_INUMS) -__XFS_HAS_FEAT(ikeep, IKEEP) __XFS_HAS_FEAT(swalloc, SWALLOC) __XFS_HAS_FEAT(filestreams, FILESTREAMS) __XFS_HAS_FEAT(dax_always, DAX_ALWAYS) diff --git a/Documentation/admin-guide/xfs.rst b/Documentation/admin-guide/xfs.rst index 693b09ca62922f..7ad746a3e66c25 100644 --- a/Documentation/admin-guide/xfs.rst +++ b/Documentation/admin-guide/xfs.rst @@ -34,22 +34,6 @@ When mounting an XFS filesystem, the following options are accepted. to the file. Specifying a fixed ``allocsize`` value turns off the dynamic behaviour. - attr2 or noattr2 - The options enable/disable an "opportunistic" improvement to - be made in the way inline extended attributes are stored - on-disk. When the new form is used for the first time when - ``attr2`` is selected (either when setting or removing extended - attributes) the on-disk superblock feature bit field will be - updated to reflect this format being in use. - - The default behaviour is determined by the on-disk feature - bit indicating that ``attr2`` behaviour is active. If either - mount option is set, then that becomes the new default used - by the filesystem. - - CRC enabled filesystems always use the ``attr2`` format, and so - will reject the ``noattr2`` mount option if it is set. - discard or nodiscard (default) Enable/disable the issuing of commands to let the block device reclaim space freed by the filesystem. This is @@ -75,12 +59,6 @@ When mounting an XFS filesystem, the following options are accepted. across the entire filesystem rather than just on directories configured to use it. - ikeep or noikeep (default) - When ``ikeep`` is specified, XFS does not delete empty inode - clusters and keeps them around on disk. When ``noikeep`` is - specified, empty inode clusters are returned to the free - space pool. - inode32 or inode64 (default) When ``inode32`` is specified, it indicates that XFS limits inode creation to locations which will not result in inode @@ -267,8 +245,6 @@ Deprecated Mount Options ============================ ================ Mounting with V4 filesystem September 2030 Mounting ascii-ci filesystem September 2030 -ikeep/noikeep September 2025 -attr2/noattr2 September 2025 ============================ ================ @@ -284,6 +260,8 @@ Removed Mount Options osyncisdsync/osyncisosync v4.0 barrier v4.19 nobarrier v4.19 + ikeep/noikeep v6.18 + attr2/noattr2 v6.18 =========================== ======= sysctls diff --git a/fs/xfs/libxfs/xfs_attr_leaf.c b/fs/xfs/libxfs/xfs_attr_leaf.c index fddb55605e0cc6..47213e6023dd4b 100644 --- a/fs/xfs/libxfs/xfs_attr_leaf.c +++ b/fs/xfs/libxfs/xfs_attr_leaf.c @@ -667,12 +667,8 @@ xfs_attr_shortform_bytesfit( /* * For attr2 we can try to move the forkoff if there is space in the - * literal area, but for the old format we are done if there is no - * space in the fixed attribute fork. + * literal area */ - if (!xfs_has_attr2(mp)) - return 0; - dsize = dp->i_df.if_bytes; switch (dp->i_df.if_format) { @@ -723,22 +719,16 @@ xfs_attr_shortform_bytesfit( } /* - * Switch on the ATTR2 superblock bit (implies also FEATURES2) unless: - * - noattr2 mount option is set, - * - on-disk version bit says it is already set, or - * - the attr2 mount option is not set to enable automatic upgrade from attr1. + * Switch on the ATTR2 superblock bit (implies also FEATURES2) unless + * on-disk version bit says it is already set */ STATIC void xfs_sbversion_add_attr2( struct xfs_mount *mp, struct xfs_trans *tp) { - if (xfs_has_noattr2(mp)) - return; if (mp->m_sb.sb_features2 & XFS_SB_VERSION2_ATTR2BIT) return; - if (!xfs_has_attr2(mp)) - return; spin_lock(&mp->m_sb_lock); xfs_add_attr2(mp); @@ -889,7 +879,7 @@ xfs_attr_sf_removename( /* * Fix up the start offset of the attribute fork */ - if (totsize == sizeof(struct xfs_attr_sf_hdr) && xfs_has_attr2(mp) && + if (totsize == sizeof(struct xfs_attr_sf_hdr) && (dp->i_df.if_format != XFS_DINODE_FMT_BTREE) && !(args->op_flags & (XFS_DA_OP_ADDNAME | XFS_DA_OP_REPLACE)) && !xfs_has_parent(mp)) { @@ -900,7 +890,6 @@ xfs_attr_sf_removename( ASSERT(dp->i_forkoff); ASSERT(totsize > sizeof(struct xfs_attr_sf_hdr) || (args->op_flags & XFS_DA_OP_ADDNAME) || - !xfs_has_attr2(mp) || dp->i_df.if_format == XFS_DINODE_FMT_BTREE || xfs_has_parent(mp)); xfs_trans_log_inode(args->trans, dp, @@ -1040,8 +1029,7 @@ xfs_attr_shortform_allfit( bytes += xfs_attr_sf_entsize_byname(name_loc->namelen, be16_to_cpu(name_loc->valuelen)); } - if (xfs_has_attr2(dp->i_mount) && - (dp->i_df.if_format != XFS_DINODE_FMT_BTREE) && + if ((dp->i_df.if_format != XFS_DINODE_FMT_BTREE) && (bytes == sizeof(struct xfs_attr_sf_hdr))) return -1; return xfs_attr_shortform_bytesfit(dp, bytes); @@ -1161,7 +1149,6 @@ xfs_attr3_leaf_to_shortform( * this case. */ if (!(args->op_flags & XFS_DA_OP_REPLACE)) { - ASSERT(xfs_has_attr2(dp->i_mount)); ASSERT(dp->i_df.if_format != XFS_DINODE_FMT_BTREE); xfs_attr_fork_remove(dp, args->trans); } diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c index d954f9b8071f4b..80bdb537fcf783 100644 --- a/fs/xfs/libxfs/xfs_bmap.c +++ b/fs/xfs/libxfs/xfs_bmap.c @@ -997,8 +997,7 @@ xfs_bmap_add_attrfork_local( static int xfs_bmap_set_attrforkoff( struct xfs_inode *ip, - int size, - int *version) + int size) { int default_size = xfs_default_attroffset(ip) >> 3; @@ -1012,8 +1011,6 @@ xfs_bmap_set_attrforkoff( ip->i_forkoff = xfs_attr_shortform_bytesfit(ip, size); if (!ip->i_forkoff) ip->i_forkoff = default_size; - else if (xfs_has_attr2(ip->i_mount) && version) - *version = 2; break; default: ASSERT(0); @@ -1035,7 +1032,6 @@ xfs_bmap_add_attrfork( int rsvd) /* xact may use reserved blks */ { struct xfs_mount *mp = tp->t_mountp; - int version = 1; /* superblock attr version */ int logflags; /* logging flags */ int error; /* error return value */ @@ -1045,7 +1041,7 @@ xfs_bmap_add_attrfork( ASSERT(!xfs_inode_has_attr_fork(ip)); xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); - error = xfs_bmap_set_attrforkoff(ip, size, &version); + error = xfs_bmap_set_attrforkoff(ip, size); if (error) return error; @@ -1069,16 +1065,12 @@ xfs_bmap_add_attrfork( xfs_trans_log_inode(tp, ip, logflags); if (error) return error; - if (!xfs_has_attr(mp) || - (!xfs_has_attr2(mp) && version == 2)) { + if (!xfs_has_attr(mp)) { bool log_sb = false; spin_lock(&mp->m_sb_lock); if (!xfs_has_attr(mp)) { xfs_add_attr(mp); - log_sb = true; - } - if (!xfs_has_attr2(mp) && version == 2) { xfs_add_attr2(mp); log_sb = true; } diff --git a/fs/xfs/libxfs/xfs_ialloc.c b/fs/xfs/libxfs/xfs_ialloc.c index 750111634d9f7b..5fefdd4fe75dbd 100644 --- a/fs/xfs/libxfs/xfs_ialloc.c +++ b/fs/xfs/libxfs/xfs_ialloc.c @@ -2140,7 +2140,7 @@ xfs_difree_inobt( * remove the chunk if the block size is large enough for multiple inode * chunks (that might not be free). */ - if (!xfs_has_ikeep(mp) && rec.ir_free == XFS_INOBT_ALL_FREE && + if (rec.ir_free == XFS_INOBT_ALL_FREE && mp->m_sb.sb_inopblock <= XFS_INODES_PER_CHUNK) { xic->deleted = true; xic->first_ino = xfs_agino_to_ino(pag, rec.ir_startino); @@ -2286,7 +2286,7 @@ xfs_difree_finobt( * enough for multiple chunks. Leave the finobt record to remain in sync * with the inobt. */ - if (!xfs_has_ikeep(mp) && rec.ir_free == XFS_INOBT_ALL_FREE && + if (rec.ir_free == XFS_INOBT_ALL_FREE && mp->m_sb.sb_inopblock <= XFS_INODES_PER_CHUNK) { error = xfs_btree_delete(cur, &i); if (error) diff --git a/fs/xfs/libxfs/xfs_sb.c b/fs/xfs/libxfs/xfs_sb.c index 711e180f9ebb83..cdd16dd805d77c 100644 --- a/fs/xfs/libxfs/xfs_sb.c +++ b/fs/xfs/libxfs/xfs_sb.c @@ -142,8 +142,6 @@ xfs_sb_version_to_features( if (sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) { if (sbp->sb_features2 & XFS_SB_VERSION2_LAZYSBCOUNTBIT) features |= XFS_FEAT_LAZYSBCOUNT; - if (sbp->sb_features2 & XFS_SB_VERSION2_ATTR2BIT) - features |= XFS_FEAT_ATTR2; if (sbp->sb_features2 & XFS_SB_VERSION2_PROJID32BIT) features |= XFS_FEAT_PROJID32; if (sbp->sb_features2 & XFS_SB_VERSION2_FTYPE) @@ -155,7 +153,7 @@ xfs_sb_version_to_features( /* Always on V5 features */ features |= XFS_FEAT_ALIGN | XFS_FEAT_LOGV2 | XFS_FEAT_EXTFLG | - XFS_FEAT_LAZYSBCOUNT | XFS_FEAT_ATTR2 | XFS_FEAT_PROJID32 | + XFS_FEAT_LAZYSBCOUNT | XFS_FEAT_PROJID32 | XFS_FEAT_V3INODES | XFS_FEAT_CRC | XFS_FEAT_PQUOTINO; /* Optional V5 features */ @@ -1524,7 +1522,8 @@ xfs_fs_geometry( geo->version = XFS_FSOP_GEOM_VERSION; geo->flags = XFS_FSOP_GEOM_FLAGS_NLINK | XFS_FSOP_GEOM_FLAGS_DIRV2 | - XFS_FSOP_GEOM_FLAGS_EXTFLG; + XFS_FSOP_GEOM_FLAGS_EXTFLG | + XFS_FSOP_GEOM_FLAGS_ATTR2; if (xfs_has_attr(mp)) geo->flags |= XFS_FSOP_GEOM_FLAGS_ATTR; if (xfs_has_quota(mp)) @@ -1537,8 +1536,6 @@ xfs_fs_geometry( geo->flags |= XFS_FSOP_GEOM_FLAGS_DIRV2CI; if (xfs_has_lazysbcount(mp)) geo->flags |= XFS_FSOP_GEOM_FLAGS_LAZYSB; - if (xfs_has_attr2(mp)) - geo->flags |= XFS_FSOP_GEOM_FLAGS_ATTR2; if (xfs_has_projid32(mp)) geo->flags |= XFS_FSOP_GEOM_FLAGS_PROJID32; if (xfs_has_crc(mp)) diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c index 4cf7abe5014371..e44040206851fc 100644 --- a/fs/xfs/xfs_icache.c +++ b/fs/xfs/xfs_icache.c @@ -646,8 +646,7 @@ xfs_iget_cache_miss( goto out_destroy; /* - * For version 5 superblocks, if we are initialising a new inode and we - * are not utilising the XFS_FEAT_IKEEP inode cluster mode, we can + * For version 5 superblocks, if we are initialising a new inode, we * simply build the new inode core with a random generation number. * * For version 4 (and older) superblocks, log recovery is dependent on @@ -655,8 +654,7 @@ xfs_iget_cache_miss( * value and hence we must also read the inode off disk even when * initializing new inodes. */ - if (xfs_has_v3inodes(mp) && - (flags & XFS_IGET_CREATE) && !xfs_has_ikeep(mp)) { + if (xfs_has_v3inodes(mp) && (flags & XFS_IGET_CREATE)) { VFS_I(ip)->i_generation = get_random_u32(); } else { struct xfs_buf *bp; diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index dc32c5e34d8176..0953f6ae94abc8 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -1057,19 +1057,6 @@ xfs_mountfs( xfs_inodegc_start(mp); xfs_blockgc_start(mp); - /* - * Now that we've recovered any pending superblock feature bit - * additions, we can finish setting up the attr2 behaviour for the - * mount. The noattr2 option overrides the superblock flag, so only - * check the superblock feature flag if the mount option is not set. - */ - if (xfs_has_noattr2(mp)) { - mp->m_features &= ~XFS_FEAT_ATTR2; - } else if (!xfs_has_attr2(mp) && - (mp->m_sb.sb_features2 & XFS_SB_VERSION2_ATTR2BIT)) { - mp->m_features |= XFS_FEAT_ATTR2; - } - if (xfs_has_metadir(mp)) { error = xfs_mount_setup_metadir(mp); if (error) diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index bb0a82635a770d..77acb3e5a4eca1 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -105,8 +105,8 @@ enum { Opt_logbufs, Opt_logbsize, Opt_logdev, Opt_rtdev, Opt_wsync, Opt_noalign, Opt_swalloc, Opt_sunit, Opt_swidth, Opt_nouuid, Opt_grpid, Opt_nogrpid, Opt_bsdgroups, Opt_sysvgroups, - Opt_allocsize, Opt_norecovery, Opt_inode64, Opt_inode32, Opt_ikeep, - Opt_noikeep, Opt_largeio, Opt_nolargeio, Opt_attr2, Opt_noattr2, + Opt_allocsize, Opt_norecovery, Opt_inode64, Opt_inode32, + Opt_largeio, Opt_nolargeio, Opt_filestreams, Opt_quota, Opt_noquota, Opt_usrquota, Opt_grpquota, Opt_prjquota, Opt_uquota, Opt_gquota, Opt_pquota, Opt_uqnoenforce, Opt_gqnoenforce, Opt_pqnoenforce, Opt_qnoenforce, @@ -133,12 +133,8 @@ static const struct fs_parameter_spec xfs_fs_parameters[] = { fsparam_flag("norecovery", Opt_norecovery), fsparam_flag("inode64", Opt_inode64), fsparam_flag("inode32", Opt_inode32), - fsparam_flag("ikeep", Opt_ikeep), - fsparam_flag("noikeep", Opt_noikeep), fsparam_flag("largeio", Opt_largeio), fsparam_flag("nolargeio", Opt_nolargeio), - fsparam_flag("attr2", Opt_attr2), - fsparam_flag("noattr2", Opt_noattr2), fsparam_flag("filestreams", Opt_filestreams), fsparam_flag("quota", Opt_quota), fsparam_flag("noquota", Opt_noquota), @@ -175,13 +171,11 @@ xfs_fs_show_options( { static struct proc_xfs_info xfs_info_set[] = { /* the few simple ones we can get from the mount struct */ - { XFS_FEAT_IKEEP, ",ikeep" }, { XFS_FEAT_WSYNC, ",wsync" }, { XFS_FEAT_NOALIGN, ",noalign" }, { XFS_FEAT_SWALLOC, ",swalloc" }, { XFS_FEAT_NOUUID, ",nouuid" }, { XFS_FEAT_NORECOVERY, ",norecovery" }, - { XFS_FEAT_ATTR2, ",attr2" }, { XFS_FEAT_FILESTREAMS, ",filestreams" }, { XFS_FEAT_GRPID, ",grpid" }, { XFS_FEAT_DISCARD, ",discard" }, @@ -1087,15 +1081,6 @@ xfs_finish_flags( } } - /* - * V5 filesystems always use attr2 format for attributes. - */ - if (xfs_has_crc(mp) && xfs_has_noattr2(mp)) { - xfs_warn(mp, "Cannot mount a V5 filesystem as noattr2. " - "attr2 is always enabled for V5 filesystems."); - return -EINVAL; - } - /* * prohibit r/w mounts of read-only filesystems */ @@ -1542,22 +1527,6 @@ xfs_fs_parse_param( return 0; #endif /* Following mount options will be removed in September 2025 */ - case Opt_ikeep: - xfs_fs_warn_deprecated(fc, param, XFS_FEAT_IKEEP, true); - parsing_mp->m_features |= XFS_FEAT_IKEEP; - return 0; - case Opt_noikeep: - xfs_fs_warn_deprecated(fc, param, XFS_FEAT_IKEEP, false); - parsing_mp->m_features &= ~XFS_FEAT_IKEEP; - return 0; - case Opt_attr2: - xfs_fs_warn_deprecated(fc, param, XFS_FEAT_ATTR2, true); - parsing_mp->m_features |= XFS_FEAT_ATTR2; - return 0; - case Opt_noattr2: - xfs_fs_warn_deprecated(fc, param, XFS_FEAT_NOATTR2, true); - parsing_mp->m_features |= XFS_FEAT_NOATTR2; - return 0; case Opt_max_open_zones: parsing_mp->m_max_open_zones = result.uint_32; return 0; @@ -1593,16 +1562,6 @@ xfs_fs_validate_params( return -EINVAL; } - /* - * We have not read the superblock at this point, so only the attr2 - * mount option can set the attr2 feature by this stage. - */ - if (xfs_has_attr2(mp) && xfs_has_noattr2(mp)) { - xfs_warn(mp, "attr2 and noattr2 cannot both be specified."); - return -EINVAL; - } - - if (xfs_has_noalign(mp) && (mp->m_dalign || mp->m_swidth)) { xfs_warn(mp, "sunit and swidth options incompatible with the noalign option"); @@ -2177,21 +2136,6 @@ xfs_fs_reconfigure( if (error) return error; - /* attr2 -> noattr2 */ - if (xfs_has_noattr2(new_mp)) { - if (xfs_has_crc(mp)) { - xfs_warn(mp, - "attr2 is always enabled for a V5 filesystem - can't be changed."); - return -EINVAL; - } - mp->m_features &= ~XFS_FEAT_ATTR2; - mp->m_features |= XFS_FEAT_NOATTR2; - } else if (xfs_has_attr2(new_mp)) { - /* noattr2 -> attr2 */ - mp->m_features &= ~XFS_FEAT_NOATTR2; - mp->m_features |= XFS_FEAT_ATTR2; - } - /* Validate new max_atomic_write option before making other changes */ if (mp->m_awu_max_bytes != new_mp->m_awu_max_bytes) { error = xfs_set_max_atomic_write_opt(mp, ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 2/4] xfs: remove deprecated mount options 2025-09-03 15:00 ` [PATCH 2/4] xfs: remove deprecated mount options Darrick J. Wong @ 2025-09-05 8:35 ` Carlos Maiolino 2025-09-05 15:25 ` Darrick J. Wong 0 siblings, 1 reply; 13+ messages in thread From: Carlos Maiolino @ 2025-09-05 8:35 UTC (permalink / raw) To: Darrick J. Wong; +Cc: preichl, linux-xfs On Wed, Sep 03, 2025 at 08:00:08AM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@kernel.org> > > These four mount options were scheduled for removal in September 2025, > so remove them now. > > Cc: preichl@redhat.com > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> > --- > fs/xfs/xfs_mount.h | 12 ++++--- > Documentation/admin-guide/xfs.rst | 26 +--------------- > fs/xfs/libxfs/xfs_attr_leaf.c | 23 +++----------- > fs/xfs/libxfs/xfs_bmap.c | 14 ++------- > fs/xfs/libxfs/xfs_ialloc.c | 4 +- > fs/xfs/libxfs/xfs_sb.c | 9 ++---- > fs/xfs/xfs_icache.c | 6 +--- > fs/xfs/xfs_mount.c | 13 -------- > fs/xfs/xfs_super.c | 60 +------------------------------------ > 9 files changed, 25 insertions(+), 142 deletions(-) > > > diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h > index 97de44c32272f2..f046d1215b043c 100644 > --- a/fs/xfs/xfs_mount.h > +++ b/fs/xfs/xfs_mount.h > @@ -363,7 +363,6 @@ typedef struct xfs_mount { > #define XFS_FEAT_EXTFLG (1ULL << 7) /* unwritten extents */ > #define XFS_FEAT_ASCIICI (1ULL << 8) /* ASCII only case-insens. */ > #define XFS_FEAT_LAZYSBCOUNT (1ULL << 9) /* Superblk counters */ > -#define XFS_FEAT_ATTR2 (1ULL << 10) /* dynamic attr fork */ > #define XFS_FEAT_PARENT (1ULL << 11) /* parent pointers */ > #define XFS_FEAT_PROJID32 (1ULL << 12) /* 32 bit project id */ > #define XFS_FEAT_CRC (1ULL << 13) /* metadata CRCs */ > @@ -386,7 +385,6 @@ typedef struct xfs_mount { > > /* Mount features */ > #define XFS_FEAT_NOLIFETIME (1ULL << 47) /* disable lifetime hints */ > -#define XFS_FEAT_NOATTR2 (1ULL << 48) /* disable attr2 creation */ > #define XFS_FEAT_NOALIGN (1ULL << 49) /* ignore alignment */ > #define XFS_FEAT_ALLOCSIZE (1ULL << 50) /* user specified allocation size */ > #define XFS_FEAT_LARGE_IOSIZE (1ULL << 51) /* report large preferred > @@ -396,7 +394,6 @@ typedef struct xfs_mount { > #define XFS_FEAT_DISCARD (1ULL << 54) /* discard unused blocks */ > #define XFS_FEAT_GRPID (1ULL << 55) /* group-ID assigned from directory */ > #define XFS_FEAT_SMALL_INUMS (1ULL << 56) /* user wants 32bit inodes */ > -#define XFS_FEAT_IKEEP (1ULL << 57) /* keep empty inode clusters*/ > #define XFS_FEAT_SWALLOC (1ULL << 58) /* stripe width allocation */ > #define XFS_FEAT_FILESTREAMS (1ULL << 59) /* use filestreams allocator */ > #define XFS_FEAT_DAX_ALWAYS (1ULL << 60) /* DAX always enabled */ > @@ -504,12 +501,17 @@ __XFS_HAS_V4_FEAT(align, ALIGN) > __XFS_HAS_V4_FEAT(logv2, LOGV2) > __XFS_HAS_V4_FEAT(extflg, EXTFLG) > __XFS_HAS_V4_FEAT(lazysbcount, LAZYSBCOUNT) > -__XFS_ADD_V4_FEAT(attr2, ATTR2) > __XFS_ADD_V4_FEAT(projid32, PROJID32) > __XFS_HAS_V4_FEAT(v3inodes, V3INODES) > __XFS_HAS_V4_FEAT(crc, CRC) > __XFS_HAS_V4_FEAT(pquotino, PQUOTINO) > > +static inline void xfs_add_attr2(struct xfs_mount *mp) > +{ > + if (IS_ENABLED(CONFIG_XFS_SUPPORT_V4)) > + xfs_sb_version_addattr2(&mp->m_sb); > +} > + > /* > * Mount features > * > @@ -517,7 +519,6 @@ __XFS_HAS_V4_FEAT(pquotino, PQUOTINO) > * bit inodes and read-only state, are kept as operational state rather than > * features. > */ > -__XFS_HAS_FEAT(noattr2, NOATTR2) > __XFS_HAS_FEAT(noalign, NOALIGN) > __XFS_HAS_FEAT(allocsize, ALLOCSIZE) > __XFS_HAS_FEAT(large_iosize, LARGE_IOSIZE) > @@ -526,7 +527,6 @@ __XFS_HAS_FEAT(dirsync, DIRSYNC) > __XFS_HAS_FEAT(discard, DISCARD) > __XFS_HAS_FEAT(grpid, GRPID) > __XFS_HAS_FEAT(small_inums, SMALL_INUMS) > -__XFS_HAS_FEAT(ikeep, IKEEP) > __XFS_HAS_FEAT(swalloc, SWALLOC) > __XFS_HAS_FEAT(filestreams, FILESTREAMS) > __XFS_HAS_FEAT(dax_always, DAX_ALWAYS) > diff --git a/Documentation/admin-guide/xfs.rst b/Documentation/admin-guide/xfs.rst > index 693b09ca62922f..7ad746a3e66c25 100644 > --- a/Documentation/admin-guide/xfs.rst > +++ b/Documentation/admin-guide/xfs.rst > @@ -34,22 +34,6 @@ When mounting an XFS filesystem, the following options are accepted. > to the file. Specifying a fixed ``allocsize`` value turns off > the dynamic behaviour. > > - attr2 or noattr2 > - The options enable/disable an "opportunistic" improvement to > - be made in the way inline extended attributes are stored > - on-disk. When the new form is used for the first time when > - ``attr2`` is selected (either when setting or removing extended > - attributes) the on-disk superblock feature bit field will be > - updated to reflect this format being in use. > - > - The default behaviour is determined by the on-disk feature > - bit indicating that ``attr2`` behaviour is active. If either > - mount option is set, then that becomes the new default used > - by the filesystem. > - > - CRC enabled filesystems always use the ``attr2`` format, and so > - will reject the ``noattr2`` mount option if it is set. > - > discard or nodiscard (default) > Enable/disable the issuing of commands to let the block > device reclaim space freed by the filesystem. This is > @@ -75,12 +59,6 @@ When mounting an XFS filesystem, the following options are accepted. > across the entire filesystem rather than just on directories > configured to use it. > > - ikeep or noikeep (default) > - When ``ikeep`` is specified, XFS does not delete empty inode > - clusters and keeps them around on disk. When ``noikeep`` is > - specified, empty inode clusters are returned to the free > - space pool. > - > inode32 or inode64 (default) > When ``inode32`` is specified, it indicates that XFS limits > inode creation to locations which will not result in inode > @@ -267,8 +245,6 @@ Deprecated Mount Options > ============================ ================ > Mounting with V4 filesystem September 2030 > Mounting ascii-ci filesystem September 2030 > -ikeep/noikeep September 2025 > -attr2/noattr2 September 2025 > ============================ ================ > > > @@ -284,6 +260,8 @@ Removed Mount Options > osyncisdsync/osyncisosync v4.0 > barrier v4.19 > nobarrier v4.19 > + ikeep/noikeep v6.18 > + attr2/noattr2 v6.18 > =========================== ======= > > sysctls > diff --git a/fs/xfs/libxfs/xfs_attr_leaf.c b/fs/xfs/libxfs/xfs_attr_leaf.c > index fddb55605e0cc6..47213e6023dd4b 100644 > --- a/fs/xfs/libxfs/xfs_attr_leaf.c > +++ b/fs/xfs/libxfs/xfs_attr_leaf.c > @@ -667,12 +667,8 @@ xfs_attr_shortform_bytesfit( > > /* > * For attr2 we can try to move the forkoff if there is space in the > - * literal area, but for the old format we are done if there is no > - * space in the fixed attribute fork. > + * literal area > */ > - if (!xfs_has_attr2(mp)) > - return 0; > - > dsize = dp->i_df.if_bytes; > > switch (dp->i_df.if_format) { > @@ -723,22 +719,16 @@ xfs_attr_shortform_bytesfit( > } > > /* > - * Switch on the ATTR2 superblock bit (implies also FEATURES2) unless: > - * - noattr2 mount option is set, > - * - on-disk version bit says it is already set, or > - * - the attr2 mount option is not set to enable automatic upgrade from attr1. > + * Switch on the ATTR2 superblock bit (implies also FEATURES2) unless > + * on-disk version bit says it is already set > */ > STATIC void > xfs_sbversion_add_attr2( > struct xfs_mount *mp, > struct xfs_trans *tp) > { > - if (xfs_has_noattr2(mp)) > - return; > if (mp->m_sb.sb_features2 & XFS_SB_VERSION2_ATTR2BIT) > return; > - if (!xfs_has_attr2(mp)) > - return; > > spin_lock(&mp->m_sb_lock); > xfs_add_attr2(mp); > @@ -889,7 +879,7 @@ xfs_attr_sf_removename( > /* > * Fix up the start offset of the attribute fork > */ > - if (totsize == sizeof(struct xfs_attr_sf_hdr) && xfs_has_attr2(mp) && > + if (totsize == sizeof(struct xfs_attr_sf_hdr) && > (dp->i_df.if_format != XFS_DINODE_FMT_BTREE) && > !(args->op_flags & (XFS_DA_OP_ADDNAME | XFS_DA_OP_REPLACE)) && > !xfs_has_parent(mp)) { > @@ -900,7 +890,6 @@ xfs_attr_sf_removename( > ASSERT(dp->i_forkoff); > ASSERT(totsize > sizeof(struct xfs_attr_sf_hdr) || > (args->op_flags & XFS_DA_OP_ADDNAME) || > - !xfs_has_attr2(mp) || > dp->i_df.if_format == XFS_DINODE_FMT_BTREE || > xfs_has_parent(mp)); > xfs_trans_log_inode(args->trans, dp, > @@ -1040,8 +1029,7 @@ xfs_attr_shortform_allfit( > bytes += xfs_attr_sf_entsize_byname(name_loc->namelen, > be16_to_cpu(name_loc->valuelen)); > } > - if (xfs_has_attr2(dp->i_mount) && > - (dp->i_df.if_format != XFS_DINODE_FMT_BTREE) && > + if ((dp->i_df.if_format != XFS_DINODE_FMT_BTREE) && > (bytes == sizeof(struct xfs_attr_sf_hdr))) > return -1; > return xfs_attr_shortform_bytesfit(dp, bytes); > @@ -1161,7 +1149,6 @@ xfs_attr3_leaf_to_shortform( > * this case. > */ > if (!(args->op_flags & XFS_DA_OP_REPLACE)) { > - ASSERT(xfs_has_attr2(dp->i_mount)); > ASSERT(dp->i_df.if_format != XFS_DINODE_FMT_BTREE); > xfs_attr_fork_remove(dp, args->trans); > } > diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c > index d954f9b8071f4b..80bdb537fcf783 100644 > --- a/fs/xfs/libxfs/xfs_bmap.c > +++ b/fs/xfs/libxfs/xfs_bmap.c > @@ -997,8 +997,7 @@ xfs_bmap_add_attrfork_local( > static int > xfs_bmap_set_attrforkoff( > struct xfs_inode *ip, > - int size, > - int *version) > + int size) > { > int default_size = xfs_default_attroffset(ip) >> 3; > > @@ -1012,8 +1011,6 @@ xfs_bmap_set_attrforkoff( > ip->i_forkoff = xfs_attr_shortform_bytesfit(ip, size); > if (!ip->i_forkoff) > ip->i_forkoff = default_size; > - else if (xfs_has_attr2(ip->i_mount) && version) > - *version = 2; > break; > default: > ASSERT(0); > @@ -1035,7 +1032,6 @@ xfs_bmap_add_attrfork( > int rsvd) /* xact may use reserved blks */ > { > struct xfs_mount *mp = tp->t_mountp; > - int version = 1; /* superblock attr version */ > int logflags; /* logging flags */ > int error; /* error return value */ > > @@ -1045,7 +1041,7 @@ xfs_bmap_add_attrfork( > ASSERT(!xfs_inode_has_attr_fork(ip)); > > xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); > - error = xfs_bmap_set_attrforkoff(ip, size, &version); > + error = xfs_bmap_set_attrforkoff(ip, size); > if (error) > return error; > > @@ -1069,16 +1065,12 @@ xfs_bmap_add_attrfork( > xfs_trans_log_inode(tp, ip, logflags); > if (error) > return error; > - if (!xfs_has_attr(mp) || > - (!xfs_has_attr2(mp) && version == 2)) { > + if (!xfs_has_attr(mp)) { > bool log_sb = false; > > spin_lock(&mp->m_sb_lock); > if (!xfs_has_attr(mp)) { > xfs_add_attr(mp); > - log_sb = true; > - } > - if (!xfs_has_attr2(mp) && version == 2) { > xfs_add_attr2(mp); > log_sb = true; > } > diff --git a/fs/xfs/libxfs/xfs_ialloc.c b/fs/xfs/libxfs/xfs_ialloc.c > index 750111634d9f7b..5fefdd4fe75dbd 100644 > --- a/fs/xfs/libxfs/xfs_ialloc.c > +++ b/fs/xfs/libxfs/xfs_ialloc.c > @@ -2140,7 +2140,7 @@ xfs_difree_inobt( > * remove the chunk if the block size is large enough for multiple inode > * chunks (that might not be free). > */ > - if (!xfs_has_ikeep(mp) && rec.ir_free == XFS_INOBT_ALL_FREE && > + if (rec.ir_free == XFS_INOBT_ALL_FREE && > mp->m_sb.sb_inopblock <= XFS_INODES_PER_CHUNK) { > xic->deleted = true; > xic->first_ino = xfs_agino_to_ino(pag, rec.ir_startino); > @@ -2286,7 +2286,7 @@ xfs_difree_finobt( > * enough for multiple chunks. Leave the finobt record to remain in sync > * with the inobt. > */ > - if (!xfs_has_ikeep(mp) && rec.ir_free == XFS_INOBT_ALL_FREE && > + if (rec.ir_free == XFS_INOBT_ALL_FREE && > mp->m_sb.sb_inopblock <= XFS_INODES_PER_CHUNK) { > error = xfs_btree_delete(cur, &i); > if (error) > diff --git a/fs/xfs/libxfs/xfs_sb.c b/fs/xfs/libxfs/xfs_sb.c > index 711e180f9ebb83..cdd16dd805d77c 100644 > --- a/fs/xfs/libxfs/xfs_sb.c > +++ b/fs/xfs/libxfs/xfs_sb.c > @@ -142,8 +142,6 @@ xfs_sb_version_to_features( > if (sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) { > if (sbp->sb_features2 & XFS_SB_VERSION2_LAZYSBCOUNTBIT) > features |= XFS_FEAT_LAZYSBCOUNT; > - if (sbp->sb_features2 & XFS_SB_VERSION2_ATTR2BIT) > - features |= XFS_FEAT_ATTR2; > if (sbp->sb_features2 & XFS_SB_VERSION2_PROJID32BIT) > features |= XFS_FEAT_PROJID32; > if (sbp->sb_features2 & XFS_SB_VERSION2_FTYPE) > @@ -155,7 +153,7 @@ xfs_sb_version_to_features( > > /* Always on V5 features */ > features |= XFS_FEAT_ALIGN | XFS_FEAT_LOGV2 | XFS_FEAT_EXTFLG | > - XFS_FEAT_LAZYSBCOUNT | XFS_FEAT_ATTR2 | XFS_FEAT_PROJID32 | > + XFS_FEAT_LAZYSBCOUNT | XFS_FEAT_PROJID32 | > XFS_FEAT_V3INODES | XFS_FEAT_CRC | XFS_FEAT_PQUOTINO; > > /* Optional V5 features */ > @@ -1524,7 +1522,8 @@ xfs_fs_geometry( > geo->version = XFS_FSOP_GEOM_VERSION; > geo->flags = XFS_FSOP_GEOM_FLAGS_NLINK | > XFS_FSOP_GEOM_FLAGS_DIRV2 | > - XFS_FSOP_GEOM_FLAGS_EXTFLG; > + XFS_FSOP_GEOM_FLAGS_EXTFLG | > + XFS_FSOP_GEOM_FLAGS_ATTR2; > if (xfs_has_attr(mp)) > geo->flags |= XFS_FSOP_GEOM_FLAGS_ATTR; > if (xfs_has_quota(mp)) > @@ -1537,8 +1536,6 @@ xfs_fs_geometry( > geo->flags |= XFS_FSOP_GEOM_FLAGS_DIRV2CI; > if (xfs_has_lazysbcount(mp)) > geo->flags |= XFS_FSOP_GEOM_FLAGS_LAZYSB; > - if (xfs_has_attr2(mp)) > - geo->flags |= XFS_FSOP_GEOM_FLAGS_ATTR2; > if (xfs_has_projid32(mp)) > geo->flags |= XFS_FSOP_GEOM_FLAGS_PROJID32; > if (xfs_has_crc(mp)) > diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c > index 4cf7abe5014371..e44040206851fc 100644 > --- a/fs/xfs/xfs_icache.c > +++ b/fs/xfs/xfs_icache.c > @@ -646,8 +646,7 @@ xfs_iget_cache_miss( > goto out_destroy; > > /* > - * For version 5 superblocks, if we are initialising a new inode and we > - * are not utilising the XFS_FEAT_IKEEP inode cluster mode, we can > + * For version 5 superblocks, if we are initialising a new inode, we > * simply build the new inode core with a random generation number. > * > * For version 4 (and older) superblocks, log recovery is dependent on > @@ -655,8 +654,7 @@ xfs_iget_cache_miss( > * value and hence we must also read the inode off disk even when > * initializing new inodes. > */ > - if (xfs_has_v3inodes(mp) && > - (flags & XFS_IGET_CREATE) && !xfs_has_ikeep(mp)) { > + if (xfs_has_v3inodes(mp) && (flags & XFS_IGET_CREATE)) { > VFS_I(ip)->i_generation = get_random_u32(); > } else { > struct xfs_buf *bp; > diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c > index dc32c5e34d8176..0953f6ae94abc8 100644 > --- a/fs/xfs/xfs_mount.c > +++ b/fs/xfs/xfs_mount.c > @@ -1057,19 +1057,6 @@ xfs_mountfs( > xfs_inodegc_start(mp); > xfs_blockgc_start(mp); > > - /* > - * Now that we've recovered any pending superblock feature bit > - * additions, we can finish setting up the attr2 behaviour for the > - * mount. The noattr2 option overrides the superblock flag, so only > - * check the superblock feature flag if the mount option is not set. > - */ > - if (xfs_has_noattr2(mp)) { > - mp->m_features &= ~XFS_FEAT_ATTR2; > - } else if (!xfs_has_attr2(mp) && > - (mp->m_sb.sb_features2 & XFS_SB_VERSION2_ATTR2BIT)) { > - mp->m_features |= XFS_FEAT_ATTR2; > - } > - > if (xfs_has_metadir(mp)) { > error = xfs_mount_setup_metadir(mp); > if (error) > diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c > index bb0a82635a770d..77acb3e5a4eca1 100644 > --- a/fs/xfs/xfs_super.c > +++ b/fs/xfs/xfs_super.c > @@ -105,8 +105,8 @@ enum { > Opt_logbufs, Opt_logbsize, Opt_logdev, Opt_rtdev, > Opt_wsync, Opt_noalign, Opt_swalloc, Opt_sunit, Opt_swidth, Opt_nouuid, > Opt_grpid, Opt_nogrpid, Opt_bsdgroups, Opt_sysvgroups, > - Opt_allocsize, Opt_norecovery, Opt_inode64, Opt_inode32, Opt_ikeep, > - Opt_noikeep, Opt_largeio, Opt_nolargeio, Opt_attr2, Opt_noattr2, > + Opt_allocsize, Opt_norecovery, Opt_inode64, Opt_inode32, > + Opt_largeio, Opt_nolargeio, > Opt_filestreams, Opt_quota, Opt_noquota, Opt_usrquota, Opt_grpquota, > Opt_prjquota, Opt_uquota, Opt_gquota, Opt_pquota, > Opt_uqnoenforce, Opt_gqnoenforce, Opt_pqnoenforce, Opt_qnoenforce, > @@ -133,12 +133,8 @@ static const struct fs_parameter_spec xfs_fs_parameters[] = { > fsparam_flag("norecovery", Opt_norecovery), > fsparam_flag("inode64", Opt_inode64), > fsparam_flag("inode32", Opt_inode32), > - fsparam_flag("ikeep", Opt_ikeep), > - fsparam_flag("noikeep", Opt_noikeep), > fsparam_flag("largeio", Opt_largeio), > fsparam_flag("nolargeio", Opt_nolargeio), > - fsparam_flag("attr2", Opt_attr2), > - fsparam_flag("noattr2", Opt_noattr2), > fsparam_flag("filestreams", Opt_filestreams), > fsparam_flag("quota", Opt_quota), > fsparam_flag("noquota", Opt_noquota), > @@ -175,13 +171,11 @@ xfs_fs_show_options( > { > static struct proc_xfs_info xfs_info_set[] = { > /* the few simple ones we can get from the mount struct */ > - { XFS_FEAT_IKEEP, ",ikeep" }, > { XFS_FEAT_WSYNC, ",wsync" }, > { XFS_FEAT_NOALIGN, ",noalign" }, > { XFS_FEAT_SWALLOC, ",swalloc" }, > { XFS_FEAT_NOUUID, ",nouuid" }, > { XFS_FEAT_NORECOVERY, ",norecovery" }, > - { XFS_FEAT_ATTR2, ",attr2" }, > { XFS_FEAT_FILESTREAMS, ",filestreams" }, > { XFS_FEAT_GRPID, ",grpid" }, > { XFS_FEAT_DISCARD, ",discard" }, > @@ -1087,15 +1081,6 @@ xfs_finish_flags( > } > } > Looks good. I'm sure you already have it planned, but just being paranoid... Will you consider updating xfsprogs too? :) Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com> > - /* > - * V5 filesystems always use attr2 format for attributes. > - */ > - if (xfs_has_crc(mp) && xfs_has_noattr2(mp)) { > - xfs_warn(mp, "Cannot mount a V5 filesystem as noattr2. " > - "attr2 is always enabled for V5 filesystems."); > - return -EINVAL; > - } > - > /* > * prohibit r/w mounts of read-only filesystems > */ > @@ -1542,22 +1527,6 @@ xfs_fs_parse_param( > return 0; > #endif > /* Following mount options will be removed in September 2025 */ > - case Opt_ikeep: > - xfs_fs_warn_deprecated(fc, param, XFS_FEAT_IKEEP, true); > - parsing_mp->m_features |= XFS_FEAT_IKEEP; > - return 0; > - case Opt_noikeep: > - xfs_fs_warn_deprecated(fc, param, XFS_FEAT_IKEEP, false); > - parsing_mp->m_features &= ~XFS_FEAT_IKEEP; > - return 0; > - case Opt_attr2: > - xfs_fs_warn_deprecated(fc, param, XFS_FEAT_ATTR2, true); > - parsing_mp->m_features |= XFS_FEAT_ATTR2; > - return 0; > - case Opt_noattr2: > - xfs_fs_warn_deprecated(fc, param, XFS_FEAT_NOATTR2, true); > - parsing_mp->m_features |= XFS_FEAT_NOATTR2; > - return 0; > case Opt_max_open_zones: > parsing_mp->m_max_open_zones = result.uint_32; > return 0; > @@ -1593,16 +1562,6 @@ xfs_fs_validate_params( > return -EINVAL; > } > > - /* > - * We have not read the superblock at this point, so only the attr2 > - * mount option can set the attr2 feature by this stage. > - */ > - if (xfs_has_attr2(mp) && xfs_has_noattr2(mp)) { > - xfs_warn(mp, "attr2 and noattr2 cannot both be specified."); > - return -EINVAL; > - } > - > - > if (xfs_has_noalign(mp) && (mp->m_dalign || mp->m_swidth)) { > xfs_warn(mp, > "sunit and swidth options incompatible with the noalign option"); > @@ -2177,21 +2136,6 @@ xfs_fs_reconfigure( > if (error) > return error; > > - /* attr2 -> noattr2 */ > - if (xfs_has_noattr2(new_mp)) { > - if (xfs_has_crc(mp)) { > - xfs_warn(mp, > - "attr2 is always enabled for a V5 filesystem - can't be changed."); > - return -EINVAL; > - } > - mp->m_features &= ~XFS_FEAT_ATTR2; > - mp->m_features |= XFS_FEAT_NOATTR2; > - } else if (xfs_has_attr2(new_mp)) { > - /* noattr2 -> attr2 */ > - mp->m_features &= ~XFS_FEAT_NOATTR2; > - mp->m_features |= XFS_FEAT_ATTR2; > - } > - > /* Validate new max_atomic_write option before making other changes */ > if (mp->m_awu_max_bytes != new_mp->m_awu_max_bytes) { > error = xfs_set_max_atomic_write_opt(mp, > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/4] xfs: remove deprecated mount options 2025-09-05 8:35 ` Carlos Maiolino @ 2025-09-05 15:25 ` Darrick J. Wong 0 siblings, 0 replies; 13+ messages in thread From: Darrick J. Wong @ 2025-09-05 15:25 UTC (permalink / raw) To: Carlos Maiolino; +Cc: preichl, linux-xfs On Fri, Sep 05, 2025 at 10:35:00AM +0200, Carlos Maiolino wrote: > On Wed, Sep 03, 2025 at 08:00:08AM -0700, Darrick J. Wong wrote: > > From: Darrick J. Wong <djwong@kernel.org> > > > > These four mount options were scheduled for removal in September 2025, > > so remove them now. > > > > Cc: preichl@redhat.com > > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> > > --- > > fs/xfs/xfs_mount.h | 12 ++++--- > > Documentation/admin-guide/xfs.rst | 26 +--------------- > > fs/xfs/libxfs/xfs_attr_leaf.c | 23 +++----------- > > fs/xfs/libxfs/xfs_bmap.c | 14 ++------- > > fs/xfs/libxfs/xfs_ialloc.c | 4 +- > > fs/xfs/libxfs/xfs_sb.c | 9 ++---- > > fs/xfs/xfs_icache.c | 6 +--- > > fs/xfs/xfs_mount.c | 13 -------- > > fs/xfs/xfs_super.c | 60 +------------------------------------ > > 9 files changed, 25 insertions(+), 142 deletions(-) > > > > <snip> > Looks good. > > I'm sure you already have it planned, but just being paranoid... Will > you consider updating xfsprogs too? :) Yes, I'll send that for xfsprogs 6.18. I think that's all just manpage updates + libxfs sync. --D > Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com> > > > - /* > > - * V5 filesystems always use attr2 format for attributes. > > - */ > > - if (xfs_has_crc(mp) && xfs_has_noattr2(mp)) { > > - xfs_warn(mp, "Cannot mount a V5 filesystem as noattr2. " > > - "attr2 is always enabled for V5 filesystems."); > > - return -EINVAL; > > - } > > - > > /* > > * prohibit r/w mounts of read-only filesystems > > */ > > @@ -1542,22 +1527,6 @@ xfs_fs_parse_param( > > return 0; > > #endif > > /* Following mount options will be removed in September 2025 */ > > - case Opt_ikeep: > > - xfs_fs_warn_deprecated(fc, param, XFS_FEAT_IKEEP, true); > > - parsing_mp->m_features |= XFS_FEAT_IKEEP; > > - return 0; > > - case Opt_noikeep: > > - xfs_fs_warn_deprecated(fc, param, XFS_FEAT_IKEEP, false); > > - parsing_mp->m_features &= ~XFS_FEAT_IKEEP; > > - return 0; > > - case Opt_attr2: > > - xfs_fs_warn_deprecated(fc, param, XFS_FEAT_ATTR2, true); > > - parsing_mp->m_features |= XFS_FEAT_ATTR2; > > - return 0; > > - case Opt_noattr2: > > - xfs_fs_warn_deprecated(fc, param, XFS_FEAT_NOATTR2, true); > > - parsing_mp->m_features |= XFS_FEAT_NOATTR2; > > - return 0; > > case Opt_max_open_zones: > > parsing_mp->m_max_open_zones = result.uint_32; > > return 0; > > @@ -1593,16 +1562,6 @@ xfs_fs_validate_params( > > return -EINVAL; > > } > > > > - /* > > - * We have not read the superblock at this point, so only the attr2 > > - * mount option can set the attr2 feature by this stage. > > - */ > > - if (xfs_has_attr2(mp) && xfs_has_noattr2(mp)) { > > - xfs_warn(mp, "attr2 and noattr2 cannot both be specified."); > > - return -EINVAL; > > - } > > - > > - > > if (xfs_has_noalign(mp) && (mp->m_dalign || mp->m_swidth)) { > > xfs_warn(mp, > > "sunit and swidth options incompatible with the noalign option"); > > @@ -2177,21 +2136,6 @@ xfs_fs_reconfigure( > > if (error) > > return error; > > > > - /* attr2 -> noattr2 */ > > - if (xfs_has_noattr2(new_mp)) { > > - if (xfs_has_crc(mp)) { > > - xfs_warn(mp, > > - "attr2 is always enabled for a V5 filesystem - can't be changed."); > > - return -EINVAL; > > - } > > - mp->m_features &= ~XFS_FEAT_ATTR2; > > - mp->m_features |= XFS_FEAT_NOATTR2; > > - } else if (xfs_has_attr2(new_mp)) { > > - /* noattr2 -> attr2 */ > > - mp->m_features &= ~XFS_FEAT_NOATTR2; > > - mp->m_features |= XFS_FEAT_ATTR2; > > - } > > - > > /* Validate new max_atomic_write option before making other changes */ > > if (mp->m_awu_max_bytes != new_mp->m_awu_max_bytes) { > > error = xfs_set_max_atomic_write_opt(mp, > > > ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 3/4] xfs: remove deprecated sysctl knobs 2025-09-03 14:59 [PATCHSET] xfs: kconfig and feature changes for 2025 LTS Darrick J. Wong 2025-09-03 14:59 ` [PATCH 1/4] xfs: disable deprecated features by default in Kconfig Darrick J. Wong 2025-09-03 15:00 ` [PATCH 2/4] xfs: remove deprecated mount options Darrick J. Wong @ 2025-09-03 15:00 ` Darrick J. Wong 2025-09-05 8:36 ` Carlos Maiolino 2025-09-03 15:00 ` [PATCH 4/4] xfs: enable online fsck by default in Kconfig Darrick J. Wong 3 siblings, 1 reply; 13+ messages in thread From: Darrick J. Wong @ 2025-09-03 15:00 UTC (permalink / raw) To: djwong, cem; +Cc: linux-xfs From: Darrick J. Wong <djwong@kernel.org> These sysctl knobs were scheduled for removal in September 2025. That time has come, so remove them. Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> --- fs/xfs/xfs_linux.h | 2 -- fs/xfs/xfs_sysctl.h | 3 --- Documentation/admin-guide/xfs.rst | 26 ++++---------------------- fs/xfs/libxfs/xfs_inode_util.c | 11 ----------- fs/xfs/xfs_globals.c | 2 -- fs/xfs/xfs_iops.c | 12 +++++------- fs/xfs/xfs_sysctl.c | 29 +---------------------------- 7 files changed, 10 insertions(+), 75 deletions(-) diff --git a/fs/xfs/xfs_linux.h b/fs/xfs/xfs_linux.h index 9a2221b4aa21ed..4dd747bdbccab2 100644 --- a/fs/xfs/xfs_linux.h +++ b/fs/xfs/xfs_linux.h @@ -89,8 +89,6 @@ typedef __u32 xfs_nlink_t; #undef XFS_NATIVE_HOST #endif -#define irix_sgid_inherit xfs_params.sgid_inherit.val -#define irix_symlink_mode xfs_params.symlink_mode.val #define xfs_panic_mask xfs_params.panic_mask.val #define xfs_error_level xfs_params.error_level.val #define xfs_syncd_centisecs xfs_params.syncd_timer.val diff --git a/fs/xfs/xfs_sysctl.h b/fs/xfs/xfs_sysctl.h index 51646f066c4f7d..ed9d896079c1a8 100644 --- a/fs/xfs/xfs_sysctl.h +++ b/fs/xfs/xfs_sysctl.h @@ -19,9 +19,6 @@ typedef struct xfs_sysctl_val { } xfs_sysctl_val_t; typedef struct xfs_param { - xfs_sysctl_val_t sgid_inherit; /* Inherit S_ISGID if process' GID is - * not a member of parent dir GID. */ - xfs_sysctl_val_t symlink_mode; /* Link creat mode affected by umask */ xfs_sysctl_val_t panic_mask; /* bitmask to cause panic on errors. */ xfs_sysctl_val_t error_level; /* Degree of reporting for problems */ xfs_sysctl_val_t syncd_timer; /* Interval between xfssyncd wakeups */ diff --git a/Documentation/admin-guide/xfs.rst b/Documentation/admin-guide/xfs.rst index 7ad746a3e66c25..d6f531f2c0e694 100644 --- a/Documentation/admin-guide/xfs.rst +++ b/Documentation/admin-guide/xfs.rst @@ -289,9 +289,6 @@ The following sysctls are available for the XFS filesystem: removes unused preallocation from clean inodes and releases the unused space back to the free pool. - fs.xfs.speculative_cow_prealloc_lifetime - This is an alias for speculative_prealloc_lifetime. - fs.xfs.error_level (Min: 0 Default: 3 Max: 11) A volume knob for error reporting when internal errors occur. This will generate detailed messages & backtraces for filesystem @@ -318,17 +315,6 @@ The following sysctls are available for the XFS filesystem: This option is intended for debugging only. - fs.xfs.irix_symlink_mode (Min: 0 Default: 0 Max: 1) - Controls whether symlinks are created with mode 0777 (default) - or whether their mode is affected by the umask (irix mode). - - fs.xfs.irix_sgid_inherit (Min: 0 Default: 0 Max: 1) - Controls files created in SGID directories. - If the group ID of the new file does not match the effective group - ID or one of the supplementary group IDs of the parent dir, the - ISGID bit is cleared if the irix_sgid_inherit compatibility sysctl - is set. - fs.xfs.inherit_sync (Min: 0 Default: 1 Max: 1) Setting this to "1" will cause the "sync" flag set by the **xfs_io(8)** chattr command on a directory to be @@ -364,14 +350,7 @@ The following sysctls are available for the XFS filesystem: Deprecated Sysctls ================== -=========================================== ================ - Name Removal Schedule -=========================================== ================ -fs.xfs.irix_sgid_inherit September 2025 -fs.xfs.irix_symlink_mode September 2025 -fs.xfs.speculative_cow_prealloc_lifetime September 2025 -=========================================== ================ - +None currently. Removed Sysctls =============== @@ -381,6 +360,9 @@ Removed Sysctls ============================= ======= fs.xfs.xfsbufd_centisec v4.0 fs.xfs.age_buffer_centisecs v4.0 + fs.xfs.irix_symlink_mode v6.18 + fs.xfs.irix_sgid_inherit v6.18 + fs.xfs.speculative_cow_prealloc_lifetime v6.18 ============================= ======= Error handling diff --git a/fs/xfs/libxfs/xfs_inode_util.c b/fs/xfs/libxfs/xfs_inode_util.c index 48fe49a5f050f3..309ce6dd555383 100644 --- a/fs/xfs/libxfs/xfs_inode_util.c +++ b/fs/xfs/libxfs/xfs_inode_util.c @@ -299,17 +299,6 @@ xfs_inode_init( } else { inode_init_owner(args->idmap, inode, dir, args->mode); } - - /* - * If the group ID of the new file does not match the effective - * group ID or one of the supplementary group IDs, the S_ISGID - * bit is cleared (and only if the irix_sgid_inherit - * compatibility variable is set). - */ - if (irix_sgid_inherit && (inode->i_mode & S_ISGID) && - !vfsgid_in_group_p(i_gid_into_vfsgid(args->idmap, inode))) - inode->i_mode &= ~S_ISGID; - ip->i_projid = xfs_get_initial_prid(pip); } diff --git a/fs/xfs/xfs_globals.c b/fs/xfs/xfs_globals.c index f6f628c01febaf..566fd663c95bba 100644 --- a/fs/xfs/xfs_globals.c +++ b/fs/xfs/xfs_globals.c @@ -14,8 +14,6 @@ */ xfs_param_t xfs_params = { /* MIN DFLT MAX */ - .sgid_inherit = { 0, 0, 1 }, - .symlink_mode = { 0, 0, 1 }, .panic_mask = { 0, 0, XFS_PTAG_MASK}, .error_level = { 0, 3, 11 }, .syncd_timer = { 1*100, 30*100, 7200*100}, diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 603effabe1ee12..afd041e28bb26a 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -431,14 +431,12 @@ xfs_vn_symlink( struct dentry *dentry, const char *symname) { - struct inode *inode; - struct xfs_inode *cip = NULL; - struct xfs_name name; - int error; - umode_t mode; + struct inode *inode; + struct xfs_inode *cip = NULL; + struct xfs_name name; + int error; + umode_t mode = S_IFLNK | S_IRWXUGO; - mode = S_IFLNK | - (irix_symlink_mode ? 0777 & ~current_umask() : S_IRWXUGO); error = xfs_dentry_mode_to_name(&name, dentry, mode); if (unlikely(error)) goto out; diff --git a/fs/xfs/xfs_sysctl.c b/fs/xfs/xfs_sysctl.c index 751dc74a30671a..9918f14b4874fd 100644 --- a/fs/xfs/xfs_sysctl.c +++ b/fs/xfs/xfs_sysctl.c @@ -50,7 +50,7 @@ xfs_panic_mask_proc_handler( } #endif /* CONFIG_PROC_FS */ -STATIC int +static inline int xfs_deprecated_dointvec_minmax( const struct ctl_table *ctl, int write, @@ -67,24 +67,6 @@ xfs_deprecated_dointvec_minmax( } static const struct ctl_table xfs_table[] = { - { - .procname = "irix_sgid_inherit", - .data = &xfs_params.sgid_inherit.val, - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = xfs_deprecated_dointvec_minmax, - .extra1 = &xfs_params.sgid_inherit.min, - .extra2 = &xfs_params.sgid_inherit.max - }, - { - .procname = "irix_symlink_mode", - .data = &xfs_params.symlink_mode.val, - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = xfs_deprecated_dointvec_minmax, - .extra1 = &xfs_params.symlink_mode.min, - .extra2 = &xfs_params.symlink_mode.max - }, { .procname = "panic_mask", .data = &xfs_params.panic_mask.val, @@ -185,15 +167,6 @@ static const struct ctl_table xfs_table[] = { .extra1 = &xfs_params.blockgc_timer.min, .extra2 = &xfs_params.blockgc_timer.max, }, - { - .procname = "speculative_cow_prealloc_lifetime", - .data = &xfs_params.blockgc_timer.val, - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = xfs_deprecated_dointvec_minmax, - .extra1 = &xfs_params.blockgc_timer.min, - .extra2 = &xfs_params.blockgc_timer.max, - }, /* please keep this the last entry */ #ifdef CONFIG_PROC_FS { ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 3/4] xfs: remove deprecated sysctl knobs 2025-09-03 15:00 ` [PATCH 3/4] xfs: remove deprecated sysctl knobs Darrick J. Wong @ 2025-09-05 8:36 ` Carlos Maiolino 0 siblings, 0 replies; 13+ messages in thread From: Carlos Maiolino @ 2025-09-05 8:36 UTC (permalink / raw) To: Darrick J. Wong; +Cc: linux-xfs On Wed, Sep 03, 2025 at 08:00:24AM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@kernel.org> > > These sysctl knobs were scheduled for removal in September 2025. That > time has come, so remove them. > > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> > --- > fs/xfs/xfs_linux.h | 2 -- > fs/xfs/xfs_sysctl.h | 3 --- > Documentation/admin-guide/xfs.rst | 26 ++++---------------------- > fs/xfs/libxfs/xfs_inode_util.c | 11 ----------- > fs/xfs/xfs_globals.c | 2 -- > fs/xfs/xfs_iops.c | 12 +++++------- > fs/xfs/xfs_sysctl.c | 29 +---------------------------- > 7 files changed, 10 insertions(+), 75 deletions(-) > > > diff --git a/fs/xfs/xfs_linux.h b/fs/xfs/xfs_linux.h > index 9a2221b4aa21ed..4dd747bdbccab2 100644 > --- a/fs/xfs/xfs_linux.h > +++ b/fs/xfs/xfs_linux.h > @@ -89,8 +89,6 @@ typedef __u32 xfs_nlink_t; > #undef XFS_NATIVE_HOST > #endif > > -#define irix_sgid_inherit xfs_params.sgid_inherit.val > -#define irix_symlink_mode xfs_params.symlink_mode.val R.I.P Irix.... Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com> > #define xfs_panic_mask xfs_params.panic_mask.val > #define xfs_error_level xfs_params.error_level.val > #define xfs_syncd_centisecs xfs_params.syncd_timer.val > diff --git a/fs/xfs/xfs_sysctl.h b/fs/xfs/xfs_sysctl.h > index 51646f066c4f7d..ed9d896079c1a8 100644 > --- a/fs/xfs/xfs_sysctl.h > +++ b/fs/xfs/xfs_sysctl.h > @@ -19,9 +19,6 @@ typedef struct xfs_sysctl_val { > } xfs_sysctl_val_t; > > typedef struct xfs_param { > - xfs_sysctl_val_t sgid_inherit; /* Inherit S_ISGID if process' GID is > - * not a member of parent dir GID. */ > - xfs_sysctl_val_t symlink_mode; /* Link creat mode affected by umask */ > xfs_sysctl_val_t panic_mask; /* bitmask to cause panic on errors. */ > xfs_sysctl_val_t error_level; /* Degree of reporting for problems */ > xfs_sysctl_val_t syncd_timer; /* Interval between xfssyncd wakeups */ > diff --git a/Documentation/admin-guide/xfs.rst b/Documentation/admin-guide/xfs.rst > index 7ad746a3e66c25..d6f531f2c0e694 100644 > --- a/Documentation/admin-guide/xfs.rst > +++ b/Documentation/admin-guide/xfs.rst > @@ -289,9 +289,6 @@ The following sysctls are available for the XFS filesystem: > removes unused preallocation from clean inodes and releases > the unused space back to the free pool. > > - fs.xfs.speculative_cow_prealloc_lifetime > - This is an alias for speculative_prealloc_lifetime. > - > fs.xfs.error_level (Min: 0 Default: 3 Max: 11) > A volume knob for error reporting when internal errors occur. > This will generate detailed messages & backtraces for filesystem > @@ -318,17 +315,6 @@ The following sysctls are available for the XFS filesystem: > > This option is intended for debugging only. > > - fs.xfs.irix_symlink_mode (Min: 0 Default: 0 Max: 1) > - Controls whether symlinks are created with mode 0777 (default) > - or whether their mode is affected by the umask (irix mode). > - > - fs.xfs.irix_sgid_inherit (Min: 0 Default: 0 Max: 1) > - Controls files created in SGID directories. > - If the group ID of the new file does not match the effective group > - ID or one of the supplementary group IDs of the parent dir, the > - ISGID bit is cleared if the irix_sgid_inherit compatibility sysctl > - is set. > - > fs.xfs.inherit_sync (Min: 0 Default: 1 Max: 1) > Setting this to "1" will cause the "sync" flag set > by the **xfs_io(8)** chattr command on a directory to be > @@ -364,14 +350,7 @@ The following sysctls are available for the XFS filesystem: > Deprecated Sysctls > ================== > > -=========================================== ================ > - Name Removal Schedule > -=========================================== ================ > -fs.xfs.irix_sgid_inherit September 2025 > -fs.xfs.irix_symlink_mode September 2025 > -fs.xfs.speculative_cow_prealloc_lifetime September 2025 > -=========================================== ================ > - > +None currently. > > Removed Sysctls > =============== > @@ -381,6 +360,9 @@ Removed Sysctls > ============================= ======= > fs.xfs.xfsbufd_centisec v4.0 > fs.xfs.age_buffer_centisecs v4.0 > + fs.xfs.irix_symlink_mode v6.18 > + fs.xfs.irix_sgid_inherit v6.18 > + fs.xfs.speculative_cow_prealloc_lifetime v6.18 > ============================= ======= > > Error handling > diff --git a/fs/xfs/libxfs/xfs_inode_util.c b/fs/xfs/libxfs/xfs_inode_util.c > index 48fe49a5f050f3..309ce6dd555383 100644 > --- a/fs/xfs/libxfs/xfs_inode_util.c > +++ b/fs/xfs/libxfs/xfs_inode_util.c > @@ -299,17 +299,6 @@ xfs_inode_init( > } else { > inode_init_owner(args->idmap, inode, dir, args->mode); > } > - > - /* > - * If the group ID of the new file does not match the effective > - * group ID or one of the supplementary group IDs, the S_ISGID > - * bit is cleared (and only if the irix_sgid_inherit > - * compatibility variable is set). > - */ > - if (irix_sgid_inherit && (inode->i_mode & S_ISGID) && > - !vfsgid_in_group_p(i_gid_into_vfsgid(args->idmap, inode))) > - inode->i_mode &= ~S_ISGID; > - > ip->i_projid = xfs_get_initial_prid(pip); > } > > diff --git a/fs/xfs/xfs_globals.c b/fs/xfs/xfs_globals.c > index f6f628c01febaf..566fd663c95bba 100644 > --- a/fs/xfs/xfs_globals.c > +++ b/fs/xfs/xfs_globals.c > @@ -14,8 +14,6 @@ > */ > xfs_param_t xfs_params = { > /* MIN DFLT MAX */ > - .sgid_inherit = { 0, 0, 1 }, > - .symlink_mode = { 0, 0, 1 }, > .panic_mask = { 0, 0, XFS_PTAG_MASK}, > .error_level = { 0, 3, 11 }, > .syncd_timer = { 1*100, 30*100, 7200*100}, > diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c > index 603effabe1ee12..afd041e28bb26a 100644 > --- a/fs/xfs/xfs_iops.c > +++ b/fs/xfs/xfs_iops.c > @@ -431,14 +431,12 @@ xfs_vn_symlink( > struct dentry *dentry, > const char *symname) > { > - struct inode *inode; > - struct xfs_inode *cip = NULL; > - struct xfs_name name; > - int error; > - umode_t mode; > + struct inode *inode; > + struct xfs_inode *cip = NULL; > + struct xfs_name name; > + int error; > + umode_t mode = S_IFLNK | S_IRWXUGO; > > - mode = S_IFLNK | > - (irix_symlink_mode ? 0777 & ~current_umask() : S_IRWXUGO); > error = xfs_dentry_mode_to_name(&name, dentry, mode); > if (unlikely(error)) > goto out; > diff --git a/fs/xfs/xfs_sysctl.c b/fs/xfs/xfs_sysctl.c > index 751dc74a30671a..9918f14b4874fd 100644 > --- a/fs/xfs/xfs_sysctl.c > +++ b/fs/xfs/xfs_sysctl.c > @@ -50,7 +50,7 @@ xfs_panic_mask_proc_handler( > } > #endif /* CONFIG_PROC_FS */ > > -STATIC int > +static inline int > xfs_deprecated_dointvec_minmax( > const struct ctl_table *ctl, > int write, > @@ -67,24 +67,6 @@ xfs_deprecated_dointvec_minmax( > } > > static const struct ctl_table xfs_table[] = { > - { > - .procname = "irix_sgid_inherit", > - .data = &xfs_params.sgid_inherit.val, > - .maxlen = sizeof(int), > - .mode = 0644, > - .proc_handler = xfs_deprecated_dointvec_minmax, > - .extra1 = &xfs_params.sgid_inherit.min, > - .extra2 = &xfs_params.sgid_inherit.max > - }, > - { > - .procname = "irix_symlink_mode", > - .data = &xfs_params.symlink_mode.val, > - .maxlen = sizeof(int), > - .mode = 0644, > - .proc_handler = xfs_deprecated_dointvec_minmax, > - .extra1 = &xfs_params.symlink_mode.min, > - .extra2 = &xfs_params.symlink_mode.max > - }, > { > .procname = "panic_mask", > .data = &xfs_params.panic_mask.val, > @@ -185,15 +167,6 @@ static const struct ctl_table xfs_table[] = { > .extra1 = &xfs_params.blockgc_timer.min, > .extra2 = &xfs_params.blockgc_timer.max, > }, > - { > - .procname = "speculative_cow_prealloc_lifetime", > - .data = &xfs_params.blockgc_timer.val, > - .maxlen = sizeof(int), > - .mode = 0644, > - .proc_handler = xfs_deprecated_dointvec_minmax, > - .extra1 = &xfs_params.blockgc_timer.min, > - .extra2 = &xfs_params.blockgc_timer.max, > - }, > /* please keep this the last entry */ > #ifdef CONFIG_PROC_FS > { > > ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 4/4] xfs: enable online fsck by default in Kconfig 2025-09-03 14:59 [PATCHSET] xfs: kconfig and feature changes for 2025 LTS Darrick J. Wong ` (2 preceding siblings ...) 2025-09-03 15:00 ` [PATCH 3/4] xfs: remove deprecated sysctl knobs Darrick J. Wong @ 2025-09-03 15:00 ` Darrick J. Wong 2025-09-03 18:07 ` Vlastimil Babka 2025-09-04 2:43 ` [PATCH v1.1 " Darrick J. Wong 3 siblings, 2 replies; 13+ messages in thread From: Darrick J. Wong @ 2025-09-03 15:00 UTC (permalink / raw) To: djwong, cem; +Cc: linux-xfs From: Darrick J. Wong <djwong@kernel.org> Online fsck has been a part of upstream for over a year now without any serious problems. Turn it on by default in time for the 2025 LTS kernel. Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> --- fs/xfs/Kconfig | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/fs/xfs/Kconfig b/fs/xfs/Kconfig index ecebd3ebab1342..dc55bbf295208d 100644 --- a/fs/xfs/Kconfig +++ b/fs/xfs/Kconfig @@ -137,7 +137,7 @@ config XFS_BTREE_IN_MEM config XFS_ONLINE_SCRUB bool "XFS online metadata check support" - default n + default y depends on XFS_FS depends on TMPFS && SHMEM select XFS_LIVE_HOOKS @@ -150,8 +150,6 @@ config XFS_ONLINE_SCRUB advantage here is to look for problems proactively so that they can be dealt with in a controlled manner. - This feature is considered EXPERIMENTAL. Use with caution! - See the xfs_scrub man page in section 8 for additional information. If unsure, say N. @@ -175,7 +173,7 @@ config XFS_ONLINE_SCRUB_STATS config XFS_ONLINE_REPAIR bool "XFS online metadata repair support" - default n + default y depends on XFS_FS && XFS_ONLINE_SCRUB select XFS_BTREE_IN_MEM help @@ -186,8 +184,6 @@ config XFS_ONLINE_REPAIR formatted with secondary metadata, such as reverse mappings and inode parent pointers. - This feature is considered EXPERIMENTAL. Use with caution! - See the xfs_scrub man page in section 8 for additional information. If unsure, say N. ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 4/4] xfs: enable online fsck by default in Kconfig 2025-09-03 15:00 ` [PATCH 4/4] xfs: enable online fsck by default in Kconfig Darrick J. Wong @ 2025-09-03 18:07 ` Vlastimil Babka 2025-09-03 19:38 ` Darrick J. Wong 2025-09-04 2:43 ` [PATCH v1.1 " Darrick J. Wong 1 sibling, 1 reply; 13+ messages in thread From: Vlastimil Babka @ 2025-09-03 18:07 UTC (permalink / raw) To: Darrick J. Wong, cem; +Cc: linux-xfs On 9/3/25 17:00, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@kernel.org> > > Online fsck has been a part of upstream for over a year now without any > serious problems. Turn it on by default in time for the 2025 LTS > kernel. > > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> > --- > fs/xfs/Kconfig | 8 ++------ > 1 file changed, 2 insertions(+), 6 deletions(-) > > > diff --git a/fs/xfs/Kconfig b/fs/xfs/Kconfig > index ecebd3ebab1342..dc55bbf295208d 100644 > --- a/fs/xfs/Kconfig > +++ b/fs/xfs/Kconfig > @@ -137,7 +137,7 @@ config XFS_BTREE_IN_MEM > > config XFS_ONLINE_SCRUB > bool "XFS online metadata check support" > - default n > + default y > depends on XFS_FS > depends on TMPFS && SHMEM > select XFS_LIVE_HOOKS > @@ -150,8 +150,6 @@ config XFS_ONLINE_SCRUB > advantage here is to look for problems proactively so that > they can be dealt with in a controlled manner. > > - This feature is considered EXPERIMENTAL. Use with caution! > - > See the xfs_scrub man page in section 8 for additional information. > > If unsure, say N. Should it still say that with default y? > @@ -175,7 +173,7 @@ config XFS_ONLINE_SCRUB_STATS > > config XFS_ONLINE_REPAIR > bool "XFS online metadata repair support" > - default n > + default y > depends on XFS_FS && XFS_ONLINE_SCRUB > select XFS_BTREE_IN_MEM > help > @@ -186,8 +184,6 @@ config XFS_ONLINE_REPAIR > formatted with secondary metadata, such as reverse mappings and inode > parent pointers. > > - This feature is considered EXPERIMENTAL. Use with caution! > - > See the xfs_scrub man page in section 8 for additional information. > > If unsure, say N. Ditto ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 4/4] xfs: enable online fsck by default in Kconfig 2025-09-03 18:07 ` Vlastimil Babka @ 2025-09-03 19:38 ` Darrick J. Wong 0 siblings, 0 replies; 13+ messages in thread From: Darrick J. Wong @ 2025-09-03 19:38 UTC (permalink / raw) To: Vlastimil Babka; +Cc: cem, linux-xfs On Wed, Sep 03, 2025 at 08:07:29PM +0200, Vlastimil Babka wrote: > On 9/3/25 17:00, Darrick J. Wong wrote: > > From: Darrick J. Wong <djwong@kernel.org> > > > > Online fsck has been a part of upstream for over a year now without any > > serious problems. Turn it on by default in time for the 2025 LTS > > kernel. > > > > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> > > --- > > fs/xfs/Kconfig | 8 ++------ > > 1 file changed, 2 insertions(+), 6 deletions(-) > > > > > > diff --git a/fs/xfs/Kconfig b/fs/xfs/Kconfig > > index ecebd3ebab1342..dc55bbf295208d 100644 > > --- a/fs/xfs/Kconfig > > +++ b/fs/xfs/Kconfig > > @@ -137,7 +137,7 @@ config XFS_BTREE_IN_MEM > > > > config XFS_ONLINE_SCRUB > > bool "XFS online metadata check support" > > - default n > > + default y > > depends on XFS_FS > > depends on TMPFS && SHMEM > > select XFS_LIVE_HOOKS > > @@ -150,8 +150,6 @@ config XFS_ONLINE_SCRUB > > advantage here is to look for problems proactively so that > > they can be dealt with in a controlled manner. > > > > - This feature is considered EXPERIMENTAL. Use with caution! > > - > > See the xfs_scrub man page in section 8 for additional information. > > > > If unsure, say N. > > Should it still say that with default y? I suppose not. :D --D > > @@ -175,7 +173,7 @@ config XFS_ONLINE_SCRUB_STATS > > > > config XFS_ONLINE_REPAIR > > bool "XFS online metadata repair support" > > - default n > > + default y > > depends on XFS_FS && XFS_ONLINE_SCRUB > > select XFS_BTREE_IN_MEM > > help > > @@ -186,8 +184,6 @@ config XFS_ONLINE_REPAIR > > formatted with secondary metadata, such as reverse mappings and inode > > parent pointers. > > > > - This feature is considered EXPERIMENTAL. Use with caution! > > - > > See the xfs_scrub man page in section 8 for additional information. > > > > If unsure, say N. > > Ditto > ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v1.1 4/4] xfs: enable online fsck by default in Kconfig 2025-09-03 15:00 ` [PATCH 4/4] xfs: enable online fsck by default in Kconfig Darrick J. Wong 2025-09-03 18:07 ` Vlastimil Babka @ 2025-09-04 2:43 ` Darrick J. Wong 2025-09-05 8:39 ` Carlos Maiolino 1 sibling, 1 reply; 13+ messages in thread From: Darrick J. Wong @ 2025-09-04 2:43 UTC (permalink / raw) To: cem, vbabka; +Cc: linux-xfs From: Darrick J. Wong <djwong@kernel.org> Online fsck has been a part of upstream for over a year now without any serious problems. Turn it on by default in time for the 2025 LTS kernel, and get rid of the "say N if unsure" messages for the default Y options. Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> --- v1.1: remove the "if unsure" statements --- fs/xfs/Kconfig | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/fs/xfs/Kconfig b/fs/xfs/Kconfig index bd8c073ad251ed..7b341c9de36302 100644 --- a/fs/xfs/Kconfig +++ b/fs/xfs/Kconfig @@ -137,7 +137,7 @@ config XFS_BTREE_IN_MEM config XFS_ONLINE_SCRUB bool "XFS online metadata check support" - default n + default y depends on XFS_FS depends on TMPFS && SHMEM select XFS_LIVE_HOOKS @@ -150,12 +150,8 @@ config XFS_ONLINE_SCRUB advantage here is to look for problems proactively so that they can be dealt with in a controlled manner. - This feature is considered EXPERIMENTAL. Use with caution! - See the xfs_scrub man page in section 8 for additional information. - If unsure, say N. - config XFS_ONLINE_SCRUB_STATS bool "XFS online metadata check usage data collection" default y @@ -171,11 +167,9 @@ config XFS_ONLINE_SCRUB_STATS Usage data are collected in /sys/kernel/debug/xfs/scrub. - If unsure, say N. - config XFS_ONLINE_REPAIR bool "XFS online metadata repair support" - default n + default y depends on XFS_FS && XFS_ONLINE_SCRUB select XFS_BTREE_IN_MEM help @@ -186,12 +180,8 @@ config XFS_ONLINE_REPAIR formatted with secondary metadata, such as reverse mappings and inode parent pointers. - This feature is considered EXPERIMENTAL. Use with caution! - See the xfs_scrub man page in section 8 for additional information. - If unsure, say N. - config XFS_WARN bool "XFS Verbose Warnings" depends on XFS_FS && !XFS_DEBUG ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v1.1 4/4] xfs: enable online fsck by default in Kconfig 2025-09-04 2:43 ` [PATCH v1.1 " Darrick J. Wong @ 2025-09-05 8:39 ` Carlos Maiolino 0 siblings, 0 replies; 13+ messages in thread From: Carlos Maiolino @ 2025-09-05 8:39 UTC (permalink / raw) To: Darrick J. Wong; +Cc: vbabka, linux-xfs On Wed, Sep 03, 2025 at 07:43:36PM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@kernel.org> > > Online fsck has been a part of upstream for over a year now without any > serious problems. Turn it on by default in time for the 2025 LTS > kernel, and get rid of the "say N if unsure" messages for the default Y > options. > > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> > --- > v1.1: remove the "if unsure" statements > --- > fs/xfs/Kconfig | 14 ++------------ > 1 file changed, 2 insertions(+), 12 deletions(-) > Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com> > diff --git a/fs/xfs/Kconfig b/fs/xfs/Kconfig > index bd8c073ad251ed..7b341c9de36302 100644 > --- a/fs/xfs/Kconfig > +++ b/fs/xfs/Kconfig > @@ -137,7 +137,7 @@ config XFS_BTREE_IN_MEM > > config XFS_ONLINE_SCRUB > bool "XFS online metadata check support" > - default n > + default y > depends on XFS_FS > depends on TMPFS && SHMEM > select XFS_LIVE_HOOKS > @@ -150,12 +150,8 @@ config XFS_ONLINE_SCRUB > advantage here is to look for problems proactively so that > they can be dealt with in a controlled manner. > > - This feature is considered EXPERIMENTAL. Use with caution! > - > See the xfs_scrub man page in section 8 for additional information. > > - If unsure, say N. > - > config XFS_ONLINE_SCRUB_STATS > bool "XFS online metadata check usage data collection" > default y > @@ -171,11 +167,9 @@ config XFS_ONLINE_SCRUB_STATS > > Usage data are collected in /sys/kernel/debug/xfs/scrub. > > - If unsure, say N. > - > config XFS_ONLINE_REPAIR > bool "XFS online metadata repair support" > - default n > + default y > depends on XFS_FS && XFS_ONLINE_SCRUB > select XFS_BTREE_IN_MEM > help > @@ -186,12 +180,8 @@ config XFS_ONLINE_REPAIR > formatted with secondary metadata, such as reverse mappings and inode > parent pointers. > > - This feature is considered EXPERIMENTAL. Use with caution! > - > See the xfs_scrub man page in section 8 for additional information. > > - If unsure, say N. > - > config XFS_WARN > bool "XFS Verbose Warnings" > depends on XFS_FS && !XFS_DEBUG ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2025-09-05 15:25 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-09-03 14:59 [PATCHSET] xfs: kconfig and feature changes for 2025 LTS Darrick J. Wong 2025-09-03 14:59 ` [PATCH 1/4] xfs: disable deprecated features by default in Kconfig Darrick J. Wong 2025-09-05 8:30 ` Carlos Maiolino 2025-09-03 15:00 ` [PATCH 2/4] xfs: remove deprecated mount options Darrick J. Wong 2025-09-05 8:35 ` Carlos Maiolino 2025-09-05 15:25 ` Darrick J. Wong 2025-09-03 15:00 ` [PATCH 3/4] xfs: remove deprecated sysctl knobs Darrick J. Wong 2025-09-05 8:36 ` Carlos Maiolino 2025-09-03 15:00 ` [PATCH 4/4] xfs: enable online fsck by default in Kconfig Darrick J. Wong 2025-09-03 18:07 ` Vlastimil Babka 2025-09-03 19:38 ` Darrick J. Wong 2025-09-04 2:43 ` [PATCH v1.1 " Darrick J. Wong 2025-09-05 8:39 ` Carlos Maiolino
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox