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