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

Message ID 20230125065839.191256-3-hch@lst.de
State New
Headers
Series [1/2] fs: move sb_init_dio_done_wq out of direct-io.c |

Commit Message

Christoph Hellwig Jan. 25, 2023, 6:58 a.m. UTC
  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@lst.de>
---
 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(-)
  

Comments

Jan Kara Jan. 25, 2023, 9:13 a.m. UTC | #1
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@lst.de>

Looks good to me. Feel free to add:

Reviewed-by: Jan Kara <jack@suse.cz>

								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
>
  
Eric Biggers Jan. 25, 2023, 6:18 p.m. UTC | #2
On Wed, Jan 25, 2023 at 07:58:39AM +0100, 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@lst.de>
> ---
>  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
>  

Reviewed-by: Eric Biggers <ebiggers@google.com>

- Eric
  
Al Viro Jan. 26, 2023, 9:20 p.m. UTC | #3
On Wed, Jan 25, 2023 at 07:58:39AM +0100, 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.

Looks sane...  FWIW, I've got this in the misc pile; doesn't seem to
conflict anything in your series, thankfully...

commit 193010cdc86da0126c58f58bbeacfcb5a15e6cee
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Jan 19 19:22:22 2023 -0500

    __blockdev_direct_IO(): get rid of submit_io callback
    
    always NULL...
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

diff --git a/fs/direct-io.c b/fs/direct-io.c
index 03d381377ae1..c2736da875cc 100644
--- a/fs/direct-io.c
+++ b/fs/direct-io.c
@@ -86,7 +86,6 @@ struct dio_submit {
 	sector_t final_block_in_request;/* doesn't change */
 	int boundary;			/* prev block is at a boundary */
 	get_block_t *get_block;		/* block mapping function */
-	dio_submit_t *submit_io;	/* IO submition function */
 
 	loff_t logical_offset_in_bio;	/* current first logical block in bio */
 	sector_t final_block_in_bio;	/* current final block in bio + 1 */
@@ -431,10 +430,7 @@ static inline void dio_bio_submit(struct dio *dio, struct dio_submit *sdio)
 
 	dio->bio_disk = bio->bi_bdev->bd_disk;
 
-	if (sdio->submit_io)
-		sdio->submit_io(bio, dio->inode, sdio->logical_offset_in_bio);
-	else
-		submit_bio(bio);
+	submit_bio(bio);
 
 	sdio->bio = NULL;
 	sdio->boundary = 0;
@@ -1122,7 +1118,7 @@ static inline int drop_refcount(struct dio *dio)
 ssize_t __blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
 		struct block_device *bdev, struct iov_iter *iter,
 		get_block_t get_block, dio_iodone_t end_io,
-		dio_submit_t submit_io, int flags)
+		int flags)
 {
 	unsigned i_blkbits = READ_ONCE(inode->i_blkbits);
 	unsigned blkbits = i_blkbits;
@@ -1239,7 +1235,6 @@ ssize_t __blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
 
 	sdio.get_block = get_block;
 	dio->end_io = end_io;
-	sdio.submit_io = submit_io;
 	sdio.final_block_in_bio = -1;
 	sdio.next_block_for_io = -1;
 
diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c
index 1d65f6ef00ca..50448ba5fda8 100644
--- a/fs/ocfs2/aops.c
+++ b/fs/ocfs2/aops.c
@@ -2448,7 +2448,7 @@ static ssize_t ocfs2_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
 
 	return __blockdev_direct_IO(iocb, inode, inode->i_sb->s_bdev,
 				    iter, get_block,
-				    ocfs2_dio_end_io, NULL, 0);
+				    ocfs2_dio_end_io, 0);
 }
 
 const struct address_space_operations ocfs2_aops = {
diff --git a/include/linux/fs.h b/include/linux/fs.h
index c1769a2c5d70..544b29a96fb0 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -3205,7 +3205,7 @@ enum {
 ssize_t __blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
 			     struct block_device *bdev, struct iov_iter *iter,
 			     get_block_t get_block,
-			     dio_iodone_t end_io, dio_submit_t submit_io,
+			     dio_iodone_t end_io,
 			     int flags);
 
 static inline ssize_t blockdev_direct_IO(struct kiocb *iocb,
@@ -3214,7 +3214,7 @@ static inline ssize_t blockdev_direct_IO(struct kiocb *iocb,
 					 get_block_t get_block)
 {
 	return __blockdev_direct_IO(iocb, inode, inode->i_sb->s_bdev, iter,
-			get_block, NULL, NULL, DIO_LOCKING | DIO_SKIP_HOLES);
+			get_block, NULL, DIO_LOCKING | DIO_SKIP_HOLES);
 }
 #endif
  
Christoph Hellwig Jan. 27, 2023, 6:30 a.m. UTC | #4
On Thu, Jan 26, 2023 at 09:20:20PM +0000, Al Viro wrote:
> On Wed, Jan 25, 2023 at 07:58:39AM +0100, 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.
> 
> Looks sane...  FWIW, I've got this in the misc pile; doesn't seem to
> conflict anything in your series, thankfully...

Yes, this looks good:

Reviewed-by: Christoph Hellwig <hch@lst.de>

If someone had time to convert ocfs2 to iomap we could also kill
the entire __blockdev_direct_IO variant.
  

Patch

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