summaryrefslogtreecommitdiff
path: root/fs/fuse/dax.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/fuse/dax.c')
-rw-r--r--fs/fuse/dax.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/fs/fuse/dax.c b/fs/fuse/dax.c
index d2bc5e7f5132..ff17bc7a0b6e 100644
--- a/fs/fuse/dax.c
+++ b/fs/fuse/dax.c
@@ -1330,7 +1330,7 @@ static const struct address_space_operations fuse_dax_file_aops = {
.invalidatepage = noop_invalidatepage,
};
-static bool fuse_should_enable_dax(struct inode *inode)
+static bool fuse_should_enable_dax(struct inode *inode, unsigned int flags)
{
struct fuse_conn *fc = get_fuse_conn(inode);
enum fuse_dax_mode dax_mode = fc->dax_mode;
@@ -1345,12 +1345,16 @@ static bool fuse_should_enable_dax(struct inode *inode)
if (!fc->dax)
return false;
- return true;
+ if (dax_mode == FUSE_DAX_ALWAYS)
+ return true;
+
+ /* dax_mode is FUSE_DAX_INODE* */
+ return flags & FUSE_ATTR_DAX;
}
-void fuse_dax_inode_init(struct inode *inode)
+void fuse_dax_inode_init(struct inode *inode, unsigned int flags)
{
- if (!fuse_should_enable_dax(inode))
+ if (!fuse_should_enable_dax(inode, flags))
return;
inode->i_flags |= S_DAX;