diff options
Diffstat (limited to 'fs/f2fs/node.c')
-rw-r--r-- | fs/f2fs/node.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c index 7b613dd..d714b60 100644 --- a/fs/f2fs/node.c +++ b/fs/f2fs/node.c @@ -1203,10 +1203,13 @@ static void flush_inline_data(struct f2fs_sb_info *sbi, nid_t ino) if (!inode) return; - page = pagecache_get_page(inode->i_mapping, 0, FGP_LOCK|FGP_NOWAIT, 0); + page = pagecache_get_page(inode->i_mapping, 0, FGP_NOWAIT, 0); if (!page) goto iput_out; + if (!trylock_page(page)) + goto release_out; + if (!PageUptodate(page)) goto page_out; @@ -1221,7 +1224,9 @@ static void flush_inline_data(struct f2fs_sb_info *sbi, nid_t ino) else set_page_dirty(page); page_out: - f2fs_put_page(page, 1); + unlock_page(page); +release_out: + f2fs_put_page(page, 0); iput_out: iput(inode); } |