vfs,ext2: introduce IS_DAX(inode)
Use an inode flag to tag inodes which should avoid using the page cache. Convert ext2 to use it instead of mapping_is_xip(). Prevent I/Os to files tagged with the DAX flag from falling back to buffered I/O. Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com> Reviewed-by: Jan Kara <jack@suse.cz> Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Andreas Dilger <andreas.dilger@intel.com> Cc: Boaz Harrosh <boaz@plexistor.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Dave Chinner <david@fromorbit.com> Cc: Jens Axboe <axboe@kernel.dk> Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Cc: Randy Dunlap <rdunlap@infradead.org> Cc: Ross Zwisler <ross.zwisler@linux.intel.com> Cc: Theodore Ts'o <tytso@mit.edu> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
2e4cdab058
commit
fbbbad4bc2
@@ -731,7 +731,7 @@ static int ext2_get_blocks(struct inode *inode,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (ext2_use_xip(inode->i_sb)) {
|
||||
if (IS_DAX(inode)) {
|
||||
/*
|
||||
* we need to clear the block
|
||||
*/
|
||||
@@ -1201,7 +1201,7 @@ static int ext2_setsize(struct inode *inode, loff_t newsize)
|
||||
|
||||
inode_dio_wait(inode);
|
||||
|
||||
if (mapping_is_xip(inode->i_mapping))
|
||||
if (IS_DAX(inode))
|
||||
error = xip_truncate_page(inode->i_mapping, newsize);
|
||||
else if (test_opt(inode->i_sb, NOBH))
|
||||
error = nobh_truncate_page(inode->i_mapping,
|
||||
@@ -1273,7 +1273,8 @@ void ext2_set_inode_flags(struct inode *inode)
|
||||
{
|
||||
unsigned int flags = EXT2_I(inode)->i_flags;
|
||||
|
||||
inode->i_flags &= ~(S_SYNC|S_APPEND|S_IMMUTABLE|S_NOATIME|S_DIRSYNC);
|
||||
inode->i_flags &= ~(S_SYNC | S_APPEND | S_IMMUTABLE | S_NOATIME |
|
||||
S_DIRSYNC | S_DAX);
|
||||
if (flags & EXT2_SYNC_FL)
|
||||
inode->i_flags |= S_SYNC;
|
||||
if (flags & EXT2_APPEND_FL)
|
||||
@@ -1284,6 +1285,8 @@ void ext2_set_inode_flags(struct inode *inode)
|
||||
inode->i_flags |= S_NOATIME;
|
||||
if (flags & EXT2_DIRSYNC_FL)
|
||||
inode->i_flags |= S_DIRSYNC;
|
||||
if (test_opt(inode->i_sb, XIP))
|
||||
inode->i_flags |= S_DAX;
|
||||
}
|
||||
|
||||
/* Propagate flags from i_flags to EXT2_I(inode)->i_flags */
|
||||
|
||||
Reference in New Issue
Block a user