Sure, I will prepare another patch to fix this case. On 2017/9/28 22:23, Chao Yu wrote: > On 2017/9/29 5:47, [email protected] wrote: >> From: Weichao Guo <[email protected]> >> >> In FI_NO_PREALLOC cases, direct I/O path may allocate blocks for an inode but >> keep its inline data flag. This inconsistency may trigger vfs clear_inode >> nrpages bug_on when evicting the inode. Let buffered I/O handle this case. > > Good catch! > > Could we just convert inline data by force in f2fs_preallocate_blocks for this > case? it can avoid write fallback from direct IO to buffered IO. > > Thanks, > > >> >> Signed-off-by: Weichao Guo <[email protected]> >> --- >> fs/f2fs/data.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c >> index 36b5352..039f6d8 100644 >> --- a/fs/f2fs/data.c >> +++ b/fs/f2fs/data.c >> @@ -822,7 +822,7 @@ static int __allocate_data_block(struct dnode_of_data >> *dn) >> >> static inline bool __force_buffered_io(struct inode *inode, int rw) >> { >> - return (f2fs_encrypted_file(inode) || >> + return (f2fs_encrypted_file(inode) || f2fs_has_inline_data(inode) || >> (rw == WRITE && test_opt(F2FS_I_SB(inode), LFS)) || >> F2FS_I_SB(inode)->s_ndevs); >> } >> > > . >
------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Linux-f2fs-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
