From: "Darrick J. Wong" <djwong@kernel.org>
To: Christoph Hellwig <hch@lst.de>
Cc: chandan.babu@oracle.com, linux-xfs@vger.kernel.org
Subject: Re: [PATCH v2] xfs: compile out v4 support if disabled
Date: Mon, 25 Mar 2024 17:02:37 -0700 [thread overview]
Message-ID: <20240326000237.GG6414@frogsfrogsfrogs> (raw)
In-Reply-To: <20240325031318.2052017-1-hch@lst.de>
On Mon, Mar 25, 2024 at 11:13:18AM +0800, Christoph Hellwig wrote:
> Add a few strategic IS_ENABLED statements to let the compiler eliminate
> unused code when CONFIG_XFS_SUPPORT_V4 is disabled.
>
> This saves multiple kilobytes of .text in my .config:
>
> $ size xfs.o.*
> text data bss dec hex filename
> 1363633 294836 592 1659061 1950b5 xfs.o.new
> 1371453 294868 592 1666913 196f61 xfs.o.old
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
>
> Changes since v1:
> - compile out the right bits, and more of them
>
> fs/xfs/xfs_mount.h | 40 +++++++++++++++++++++++++++++++---------
> fs/xfs/xfs_super.c | 22 +++++++++++++---------
> 2 files changed, 44 insertions(+), 18 deletions(-)
>
> diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h
> index 0e8d7779c0a561..85e327bf05041f 100644
> --- a/fs/xfs/xfs_mount.h
> +++ b/fs/xfs/xfs_mount.h
> @@ -337,19 +337,10 @@ static inline void xfs_add_ ## name (struct xfs_mount *mp) \
> __XFS_ADD_FEAT(attr, ATTR)
> __XFS_HAS_FEAT(nlink, NLINK)
> __XFS_ADD_FEAT(quota, QUOTA)
> -__XFS_HAS_FEAT(align, ALIGN)
> __XFS_HAS_FEAT(dalign, DALIGN)
> -__XFS_HAS_FEAT(logv2, LOGV2)
> __XFS_HAS_FEAT(sector, SECTOR)
> -__XFS_HAS_FEAT(extflg, EXTFLG)
> __XFS_HAS_FEAT(asciici, ASCIICI)
> -__XFS_HAS_FEAT(lazysbcount, LAZYSBCOUNT)
> -__XFS_ADD_FEAT(attr2, ATTR2)
> __XFS_HAS_FEAT(parent, PARENT)
> -__XFS_ADD_FEAT(projid32, PROJID32)
> -__XFS_HAS_FEAT(crc, CRC)
> -__XFS_HAS_FEAT(v3inodes, V3INODES)
> -__XFS_HAS_FEAT(pquotino, PQUOTINO)
> __XFS_HAS_FEAT(ftype, FTYPE)
> __XFS_HAS_FEAT(finobt, FINOBT)
> __XFS_HAS_FEAT(rmapbt, RMAPBT)
> @@ -362,6 +353,37 @@ __XFS_HAS_FEAT(bigtime, BIGTIME)
> __XFS_HAS_FEAT(needsrepair, NEEDSREPAIR)
> __XFS_HAS_FEAT(large_extent_counts, NREXT64)
>
> +/*
> + * Some features are always on for v5 file systems, allow the compiler to
> + * eliminiate dead code when building without v4 support.
> + */
> +#define __XFS_HAS_V4_FEAT(name, NAME) \
Shouldn't this be called __XFS_HAS_V5_FEAT?
> +static inline bool xfs_has_ ## name (struct xfs_mount *mp) \
> +{ \
> + return !IS_ENABLED(CONFIG_XFS_SUPPORT_V4) || \
> + (mp->m_features & XFS_FEAT_ ## NAME); \
> +}
> +
> +#define __XFS_ADD_V4_FEAT(name, NAME) \
> + __XFS_HAS_V4_FEAT(name, NAME); \
This too?
The rest of the patch looks ok. :)
--D
> +static inline void xfs_add_ ## name (struct xfs_mount *mp) \
> +{ \
> + if (IS_ENABLED(CONFIG_XFS_SUPPORT_V4)) { \
> + mp->m_features |= XFS_FEAT_ ## NAME; \
> + xfs_sb_version_add ## name(&mp->m_sb); \
> + } \
> +}
> +
> +__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)
> +
> /*
> * Mount features
> *
> diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
> index 71732457583370..f325a2d1b3a902 100644
> --- a/fs/xfs/xfs_super.c
> +++ b/fs/xfs/xfs_super.c
> @@ -1589,17 +1589,21 @@ xfs_fs_fill_super(
> if (error)
> goto out_free_sb;
>
> - /* V4 support is undergoing deprecation. */
> - if (!xfs_has_crc(mp)) {
> -#ifdef CONFIG_XFS_SUPPORT_V4
> + /*
> + * V4 support is undergoing deprecation.
> + *
> + * Note: this has to use an open coded m_features check as xfs_has_crc
> + * always returns false for !CONFIG_XFS_SUPPORT_V4.
> + */
> + if (!(mp->m_features & XFS_FEAT_CRC)) {
> + if (!IS_ENABLED(CONFIG_XFS_SUPPORT_V4)) {
> + xfs_warn(mp,
> + "Deprecated V4 format (crc=0) not supported by kernel.");
> + error = -EINVAL;
> + goto out_free_sb;
> + }
> xfs_warn_once(mp,
> "Deprecated V4 format (crc=0) will not be supported after September 2030.");
> -#else
> - xfs_warn(mp,
> - "Deprecated V4 format (crc=0) not supported by kernel.");
> - error = -EINVAL;
> - goto out_free_sb;
> -#endif
> }
>
> /* ASCII case insensitivity is undergoing deprecation. */
> --
> 2.39.2
>
next prev parent reply other threads:[~2024-03-26 0:02 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-25 3:13 [PATCH v2] xfs: compile out v4 support if disabled Christoph Hellwig
2024-03-26 0:02 ` Darrick J. Wong [this message]
2024-03-26 5:50 ` Christoph Hellwig
2024-03-26 17:24 ` Darrick J. Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240326000237.GG6414@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=chandan.babu@oracle.com \
--cc=hch@lst.de \
--cc=linux-xfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.