Message ID | e5797bb597219a49043e53e4e90aa494b97dc328.1709215665.git.ritesh.list@gmail.com |
---|---|
State | Awaiting Upstream |
Headers | show |
Series | [1/2] ext4: set FMODE_CAN_ODIRECT instead of a dummy direct_IO method | expand |
On Thu 29-02-24 19:54:12, Ritesh Harjani (IBM) wrote: > From: Christoph Hellwig <hch@lst.de> > > Since commit a2ad63daa88b ("VFS: add FMODE_CAN_ODIRECT file flag") file > systems can just set the FMODE_CAN_ODIRECT flag at open time instead of > wiring up a dummy direct_IO method to indicate support for direct I/O. > > Signed-off-by: Christoph Hellwig <hch@lst.de> > [RH: Rebased to upstream] > Signed-off-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com> Looks good! Feel free to add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > --- > Stumbled upon [1], while I was trying to enable this flag in ext4_file_open(). > Looks like it might have slipped through the cracks. > Hence sending this patch with Christoph as the author. > [1]: https://lore.kernel.org/linux-ext4/20230612053731.585947-1-hch@lst.de/ > > fs/ext4/file.c | 2 +- > fs/ext4/inode.c | 4 ---- > 2 files changed, 1 insertion(+), 5 deletions(-) > > diff --git a/fs/ext4/file.c b/fs/ext4/file.c > index 54d6ff22585c..965febab1d04 100644 > --- a/fs/ext4/file.c > +++ b/fs/ext4/file.c > @@ -886,7 +886,7 @@ static int ext4_file_open(struct inode *inode, struct file *filp) > } > > filp->f_mode |= FMODE_NOWAIT | FMODE_BUF_RASYNC | > - FMODE_DIO_PARALLEL_WRITE; > + FMODE_DIO_PARALLEL_WRITE | FMODE_CAN_ODIRECT; > return dquot_file_open(inode, filp); > } > > diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c > index 2ccf3b5e3a7c..60a03b2ca178 100644 > --- a/fs/ext4/inode.c > +++ b/fs/ext4/inode.c > @@ -3530,7 +3530,6 @@ static const struct address_space_operations ext4_aops = { > .bmap = ext4_bmap, > .invalidate_folio = ext4_invalidate_folio, > .release_folio = ext4_release_folio, > - .direct_IO = noop_direct_IO, > .migrate_folio = buffer_migrate_folio, > .is_partially_uptodate = block_is_partially_uptodate, > .error_remove_folio = generic_error_remove_folio, > @@ -3547,7 +3546,6 @@ static const struct address_space_operations ext4_journalled_aops = { > .bmap = ext4_bmap, > .invalidate_folio = ext4_journalled_invalidate_folio, > .release_folio = ext4_release_folio, > - .direct_IO = noop_direct_IO, > .migrate_folio = buffer_migrate_folio_norefs, > .is_partially_uptodate = block_is_partially_uptodate, > .error_remove_folio = generic_error_remove_folio, > @@ -3564,7 +3562,6 @@ static const struct address_space_operations ext4_da_aops = { > .bmap = ext4_bmap, > .invalidate_folio = ext4_invalidate_folio, > .release_folio = ext4_release_folio, > - .direct_IO = noop_direct_IO, > .migrate_folio = buffer_migrate_folio, > .is_partially_uptodate = block_is_partially_uptodate, > .error_remove_folio = generic_error_remove_folio, > @@ -3573,7 +3570,6 @@ static const struct address_space_operations ext4_da_aops = { > > static const struct address_space_operations ext4_dax_aops = { > .writepages = ext4_dax_writepages, > - .direct_IO = noop_direct_IO, > .dirty_folio = noop_dirty_folio, > .bmap = ext4_bmap, > .swap_activate = ext4_iomap_swap_activate, > -- > 2.39.2 >
On Thu, 29 Feb 2024 19:54:12 +0530, Ritesh Harjani (IBM) wrote: > Since commit a2ad63daa88b ("VFS: add FMODE_CAN_ODIRECT file flag") file > systems can just set the FMODE_CAN_ODIRECT flag at open time instead of > wiring up a dummy direct_IO method to indicate support for direct I/O. > > Applied, thanks! [1/2] ext4: set FMODE_CAN_ODIRECT instead of a dummy direct_IO method commit: a0c7cce824a54dbb83bb722df19f1ddcfa5f8d25 Best regards,
diff --git a/fs/ext4/file.c b/fs/ext4/file.c index 54d6ff22585c..965febab1d04 100644 --- a/fs/ext4/file.c +++ b/fs/ext4/file.c @@ -886,7 +886,7 @@ static int ext4_file_open(struct inode *inode, struct file *filp) } filp->f_mode |= FMODE_NOWAIT | FMODE_BUF_RASYNC | - FMODE_DIO_PARALLEL_WRITE; + FMODE_DIO_PARALLEL_WRITE | FMODE_CAN_ODIRECT; return dquot_file_open(inode, filp); } diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 2ccf3b5e3a7c..60a03b2ca178 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -3530,7 +3530,6 @@ static const struct address_space_operations ext4_aops = { .bmap = ext4_bmap, .invalidate_folio = ext4_invalidate_folio, .release_folio = ext4_release_folio, - .direct_IO = noop_direct_IO, .migrate_folio = buffer_migrate_folio, .is_partially_uptodate = block_is_partially_uptodate, .error_remove_folio = generic_error_remove_folio, @@ -3547,7 +3546,6 @@ static const struct address_space_operations ext4_journalled_aops = { .bmap = ext4_bmap, .invalidate_folio = ext4_journalled_invalidate_folio, .release_folio = ext4_release_folio, - .direct_IO = noop_direct_IO, .migrate_folio = buffer_migrate_folio_norefs, .is_partially_uptodate = block_is_partially_uptodate, .error_remove_folio = generic_error_remove_folio, @@ -3564,7 +3562,6 @@ static const struct address_space_operations ext4_da_aops = { .bmap = ext4_bmap, .invalidate_folio = ext4_invalidate_folio, .release_folio = ext4_release_folio, - .direct_IO = noop_direct_IO, .migrate_folio = buffer_migrate_folio, .is_partially_uptodate = block_is_partially_uptodate, .error_remove_folio = generic_error_remove_folio, @@ -3573,7 +3570,6 @@ static const struct address_space_operations ext4_da_aops = { static const struct address_space_operations ext4_dax_aops = { .writepages = ext4_dax_writepages, - .direct_IO = noop_direct_IO, .dirty_folio = noop_dirty_folio, .bmap = ext4_bmap, .swap_activate = ext4_iomap_swap_activate,