Re: [Cluster-devel] [PATCH] gfs2: set FMODE_CAN_ODIRECT instead of a dummy direct_IO method

2023-06-12 Thread Andreas Gruenbacher
On Mon, Jun 12, 2023 at 7:54 AM Christoph Hellwig  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.
>
> Remove .direct_IO from gfs2_aops, and set FMODE_CAN_ODIRECT in
> gfs2_open_common for regular files that do not use data journalling.

Thanks, added to for-next.

Andreas

> Signed-off-by: Christoph Hellwig 
> ---
>  fs/gfs2/aops.c | 1 -
>  fs/gfs2/file.c | 3 +++
>  2 files changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/fs/gfs2/aops.c b/fs/gfs2/aops.c
> index a5f4be6b9213ed..d95125714ebb38 100644
> --- a/fs/gfs2/aops.c
> +++ b/fs/gfs2/aops.c
> @@ -750,7 +750,6 @@ static const struct address_space_operations gfs2_aops = {
> .release_folio = iomap_release_folio,
> .invalidate_folio = iomap_invalidate_folio,
> .bmap = gfs2_bmap,
> -   .direct_IO = noop_direct_IO,
> .migrate_folio = filemap_migrate_folio,
> .is_partially_uptodate = iomap_is_partially_uptodate,
> .error_remove_page = generic_error_remove_page,
> diff --git a/fs/gfs2/file.c b/fs/gfs2/file.c
> index 300844f50dcd28..dcb2b7dd2269cf 100644
> --- a/fs/gfs2/file.c
> +++ b/fs/gfs2/file.c
> @@ -630,6 +630,9 @@ int gfs2_open_common(struct inode *inode, struct file 
> *file)
> ret = generic_file_open(inode, file);
> if (ret)
> return ret;
> +
> +   if (!gfs2_is_jdata(GFS2_I(inode)))
> +   file->f_mode |= FMODE_CAN_ODIRECT;
> }
>
> fp = kzalloc(sizeof(struct gfs2_file), GFP_NOFS);
> --
> 2.39.2
>



[Cluster-devel] [PATCH] gfs2: set FMODE_CAN_ODIRECT instead of a dummy direct_IO method

2023-06-11 Thread Christoph Hellwig
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.

Remove .direct_IO from gfs2_aops, and set FMODE_CAN_ODIRECT in
gfs2_open_common for regular files that do not use data journalling.

Signed-off-by: Christoph Hellwig 
---
 fs/gfs2/aops.c | 1 -
 fs/gfs2/file.c | 3 +++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/fs/gfs2/aops.c b/fs/gfs2/aops.c
index a5f4be6b9213ed..d95125714ebb38 100644
--- a/fs/gfs2/aops.c
+++ b/fs/gfs2/aops.c
@@ -750,7 +750,6 @@ static const struct address_space_operations gfs2_aops = {
.release_folio = iomap_release_folio,
.invalidate_folio = iomap_invalidate_folio,
.bmap = gfs2_bmap,
-   .direct_IO = noop_direct_IO,
.migrate_folio = filemap_migrate_folio,
.is_partially_uptodate = iomap_is_partially_uptodate,
.error_remove_page = generic_error_remove_page,
diff --git a/fs/gfs2/file.c b/fs/gfs2/file.c
index 300844f50dcd28..dcb2b7dd2269cf 100644
--- a/fs/gfs2/file.c
+++ b/fs/gfs2/file.c
@@ -630,6 +630,9 @@ int gfs2_open_common(struct inode *inode, struct file *file)
ret = generic_file_open(inode, file);
if (ret)
return ret;
+
+   if (!gfs2_is_jdata(GFS2_I(inode)))
+   file->f_mode |= FMODE_CAN_ODIRECT;
}
 
fp = kzalloc(sizeof(struct gfs2_file), GFP_NOFS);
-- 
2.39.2