Skip to content

Commit 70c640b

Browse files
author
Jaegeuk Kim
committed
f2fs: don't need to call lock_op and lock_page for abort
We don't need to call lock_op and lock_page at the aborting path. Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
1 parent 88a70a6 commit 70c640b

File tree

1 file changed

+20
-15
lines changed

1 file changed

+20
-15
lines changed

fs/f2fs/segment.c

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -240,33 +240,38 @@ void commit_inmem_pages(struct inode *inode, bool abort)
240240
* Otherwise, f2fs_gc in f2fs_balance_fs can wait forever until this
241241
* inode becomes free by iget_locked in f2fs_iget.
242242
*/
243-
if (!abort)
243+
if (!abort) {
244244
f2fs_balance_fs(sbi);
245-
246-
f2fs_lock_op(sbi);
245+
f2fs_lock_op(sbi);
246+
}
247247

248248
mutex_lock(&fi->inmem_lock);
249249
list_for_each_entry_safe(cur, tmp, &fi->inmem_pages, list) {
250-
lock_page(cur->page);
251-
if (!abort && cur->page->mapping == inode->i_mapping) {
252-
f2fs_wait_on_page_writeback(cur->page, DATA);
253-
if (clear_page_dirty_for_io(cur->page))
254-
inode_dec_dirty_pages(inode);
255-
do_write_data_page(cur->page, &fio);
256-
submit_bio = true;
250+
if (!abort) {
251+
lock_page(cur->page);
252+
if (cur->page->mapping == inode->i_mapping) {
253+
f2fs_wait_on_page_writeback(cur->page, DATA);
254+
if (clear_page_dirty_for_io(cur->page))
255+
inode_dec_dirty_pages(inode);
256+
do_write_data_page(cur->page, &fio);
257+
submit_bio = true;
258+
}
259+
f2fs_put_page(cur->page, 1);
260+
} else {
261+
put_page(cur->page);
257262
}
258263
radix_tree_delete(&fi->inmem_root, cur->page->index);
259-
f2fs_put_page(cur->page, 1);
260264
list_del(&cur->list);
261265
kmem_cache_free(inmem_entry_slab, cur);
262266
dec_page_count(F2FS_I_SB(inode), F2FS_INMEM_PAGES);
263267
}
264-
if (submit_bio)
265-
f2fs_submit_merged_bio(sbi, DATA, WRITE);
266268
mutex_unlock(&fi->inmem_lock);
267269

268-
filemap_fdatawait_range(inode->i_mapping, 0, LLONG_MAX);
269-
f2fs_unlock_op(sbi);
270+
if (!abort) {
271+
f2fs_unlock_op(sbi);
272+
if (submit_bio)
273+
f2fs_submit_merged_bio(sbi, DATA, WRITE);
274+
}
270275
}
271276

272277
/*

0 commit comments

Comments
 (0)