diff options
Diffstat (limited to 'fs/fuse/dax.c')
-rw-r--r-- | fs/fuse/dax.c | 12 |
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; |