Re: [PATCH 2/2] fs: build the legacy direct I/O code conditionally

From: Jan Kara
Date: Wed Jan 25 2023 - 04:13:27 EST


On Wed 25-01-23 07:58:39, Christoph Hellwig wrote:
> Add a new LEGACY_DIRECT_IO config symbol that is only selected by the
> file systems that still use the legacy blockdev_direct_IO code, so that
> kernels without support for those file systems don't need to build the
> code.
>
> Signed-off-by: Christoph Hellwig <hch@xxxxxx>

Looks good to me. Feel free to add:

Reviewed-by: Jan Kara <jack@xxxxxxx>

Honza

> ---
> fs/Kconfig | 4 ++++
> fs/Makefile | 3 ++-
> fs/affs/Kconfig | 1 +
> fs/exfat/Kconfig | 1 +
> fs/ext2/Kconfig | 1 +
> fs/fat/Kconfig | 1 +
> fs/hfs/Kconfig | 1 +
> fs/hfsplus/Kconfig | 1 +
> fs/jfs/Kconfig | 1 +
> fs/nilfs2/Kconfig | 1 +
> fs/ntfs3/Kconfig | 1 +
> fs/ocfs2/Kconfig | 1 +
> fs/reiserfs/Kconfig | 1 +
> fs/udf/Kconfig | 1 +
> 14 files changed, 18 insertions(+), 1 deletion(-)
>
> diff --git a/fs/Kconfig b/fs/Kconfig
> index 2685a4d0d35318..e99830c650336a 100644
> --- a/fs/Kconfig
> +++ b/fs/Kconfig
> @@ -18,6 +18,10 @@ config VALIDATE_FS_PARSER
> config FS_IOMAP
> bool
>
> +# old blockdev_direct_IO implementation. Use iomap for new code instead
> +config LEGACY_DIRECT_IO
> + bool
> +
> if BLOCK
>
> source "fs/ext2/Kconfig"
> diff --git a/fs/Makefile b/fs/Makefile
> index 4dea17840761a0..606c029e1c9bc3 100644
> --- a/fs/Makefile
> +++ b/fs/Makefile
> @@ -19,13 +19,14 @@ obj-y := open.o read_write.o file_table.o super.o \
> kernel_read_file.o remap_range.o
>
> ifeq ($(CONFIG_BLOCK),y)
> -obj-y += buffer.o direct-io.o mpage.o
> +obj-y += buffer.o mpage.o
> else
> obj-y += no-block.o
> endif
>
> obj-$(CONFIG_PROC_FS) += proc_namespace.o
>
> +obj-$(CONFIG_LEGACY_DIRECT_IO) += direct-io.o
> obj-y += notify/
> obj-$(CONFIG_EPOLL) += eventpoll.o
> obj-y += anon_inodes.o
> diff --git a/fs/affs/Kconfig b/fs/affs/Kconfig
> index eb9d0ab850cb1d..962b86374e1c15 100644
> --- a/fs/affs/Kconfig
> +++ b/fs/affs/Kconfig
> @@ -2,6 +2,7 @@
> config AFFS_FS
> tristate "Amiga FFS file system support"
> depends on BLOCK
> + select LEGACY_DIRECT_IO
> help
> The Fast File System (FFS) is the common file system used on hard
> disks by Amiga(tm) systems since AmigaOS Version 1.3 (34.20). Say Y
> diff --git a/fs/exfat/Kconfig b/fs/exfat/Kconfig
> index 5a65071b5ecf10..147edeb044691d 100644
> --- a/fs/exfat/Kconfig
> +++ b/fs/exfat/Kconfig
> @@ -3,6 +3,7 @@
> config EXFAT_FS
> tristate "exFAT filesystem support"
> select NLS
> + select LEGACY_DIRECT_IO
> help
> This allows you to mount devices formatted with the exFAT file system.
> exFAT is typically used on SD-Cards or USB sticks.
> diff --git a/fs/ext2/Kconfig b/fs/ext2/Kconfig
> index 1248ff4ef56254..77393fda99af09 100644
> --- a/fs/ext2/Kconfig
> +++ b/fs/ext2/Kconfig
> @@ -2,6 +2,7 @@
> config EXT2_FS
> tristate "Second extended fs support"
> select FS_IOMAP
> + select LEGACY_DIRECT_IO
> help
> Ext2 is a standard Linux file system for hard disks.
>
> diff --git a/fs/fat/Kconfig b/fs/fat/Kconfig
> index 238cc55f84c429..afe83b4e717280 100644
> --- a/fs/fat/Kconfig
> +++ b/fs/fat/Kconfig
> @@ -2,6 +2,7 @@
> config FAT_FS
> tristate
> select NLS
> + select LEGACY_DIRECT_IO
> help
> If you want to use one of the FAT-based file systems (the MS-DOS and
> VFAT (Windows 95) file systems), then you must say Y or M here
> diff --git a/fs/hfs/Kconfig b/fs/hfs/Kconfig
> index 129926b5142d8f..d985066006d588 100644
> --- a/fs/hfs/Kconfig
> +++ b/fs/hfs/Kconfig
> @@ -3,6 +3,7 @@ config HFS_FS
> tristate "Apple Macintosh file system support"
> depends on BLOCK
> select NLS
> + select LEGACY_DIRECT_IO
> help
> If you say Y here, you will be able to mount Macintosh-formatted
> floppy disks and hard drive partitions with full read-write access.
> diff --git a/fs/hfsplus/Kconfig b/fs/hfsplus/Kconfig
> index 7d4229aecec05b..8034e7827a690b 100644
> --- a/fs/hfsplus/Kconfig
> +++ b/fs/hfsplus/Kconfig
> @@ -4,6 +4,7 @@ config HFSPLUS_FS
> depends on BLOCK
> select NLS
> select NLS_UTF8
> + select LEGACY_DIRECT_IO
> help
> If you say Y here, you will be able to mount extended format
> Macintosh-formatted hard drive partitions with full read-write access.
> diff --git a/fs/jfs/Kconfig b/fs/jfs/Kconfig
> index 05cb0e8e4382ee..51e856f0e4b8d6 100644
> --- a/fs/jfs/Kconfig
> +++ b/fs/jfs/Kconfig
> @@ -3,6 +3,7 @@ config JFS_FS
> tristate "JFS filesystem support"
> select NLS
> select CRC32
> + select LEGACY_DIRECT_IO
> help
> This is a port of IBM's Journaled Filesystem . More information is
> available in the file <file:Documentation/admin-guide/jfs.rst>.
> diff --git a/fs/nilfs2/Kconfig b/fs/nilfs2/Kconfig
> index 254d102e79c99b..7d59567465e121 100644
> --- a/fs/nilfs2/Kconfig
> +++ b/fs/nilfs2/Kconfig
> @@ -2,6 +2,7 @@
> config NILFS2_FS
> tristate "NILFS2 file system support"
> select CRC32
> + select LEGACY_DIRECT_IO
> help
> NILFS2 is a log-structured file system (LFS) supporting continuous
> snapshotting. In addition to versioning capability of the entire
> diff --git a/fs/ntfs3/Kconfig b/fs/ntfs3/Kconfig
> index 6e4cbc48ab8e43..96cc236f7f7bd3 100644
> --- a/fs/ntfs3/Kconfig
> +++ b/fs/ntfs3/Kconfig
> @@ -2,6 +2,7 @@
> config NTFS3_FS
> tristate "NTFS Read-Write file system support"
> select NLS
> + select LEGACY_DIRECT_IO
> help
> Windows OS native file system (NTFS) support up to NTFS version 3.1.
>
> diff --git a/fs/ocfs2/Kconfig b/fs/ocfs2/Kconfig
> index 5d11380d872417..304d12186ccd38 100644
> --- a/fs/ocfs2/Kconfig
> +++ b/fs/ocfs2/Kconfig
> @@ -7,6 +7,7 @@ config OCFS2_FS
> select QUOTA
> select QUOTA_TREE
> select FS_POSIX_ACL
> + select LEGACY_DIRECT_IO
> help
> OCFS2 is a general purpose extent based shared disk cluster file
> system with many similarities to ext3. It supports 64 bit inode
> diff --git a/fs/reiserfs/Kconfig b/fs/reiserfs/Kconfig
> index 33c8b0dd07a2e7..4d22ecfe0fab65 100644
> --- a/fs/reiserfs/Kconfig
> +++ b/fs/reiserfs/Kconfig
> @@ -2,6 +2,7 @@
> config REISERFS_FS
> tristate "Reiserfs support (deprecated)"
> select CRC32
> + select LEGACY_DIRECT_IO
> help
> Reiserfs is deprecated and scheduled to be removed from the kernel
> in 2025. If you are still using it, please migrate to another
> diff --git a/fs/udf/Kconfig b/fs/udf/Kconfig
> index 26e1a49f3ba795..82e8bfa2dfd989 100644
> --- a/fs/udf/Kconfig
> +++ b/fs/udf/Kconfig
> @@ -3,6 +3,7 @@ config UDF_FS
> tristate "UDF file system support"
> select CRC_ITU_T
> select NLS
> + select LEGACY_DIRECT_IO
> help
> This is a file system used on some CD-ROMs and DVDs. Since the
> file system is supported by multiple operating systems and is more
> --
> 2.39.0
>
--
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR