Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 25b93346 authored by Jaegeuk Kim's avatar Jaegeuk Kim
Browse files

f2fs: cover number of dirty node pages under node_write lock



This number is referenced by checkpoint under node_write lock.

Reviewed-by: default avatarChao Yu <chao2.yu@samsung.com>
Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent 538e17e7
Loading
Loading
Loading
Loading
+8 −7
Original line number Original line Diff line number Diff line
@@ -1323,23 +1323,24 @@ static int f2fs_write_node_page(struct page *page,
	nid = nid_of_node(page);
	nid = nid_of_node(page);
	f2fs_bug_on(sbi, page->index != nid);
	f2fs_bug_on(sbi, page->index != nid);


	if (wbc->for_reclaim) {
		if (!down_read_trylock(&sbi->node_write))
			goto redirty_out;
	} else {
		down_read(&sbi->node_write);
	}

	get_node_info(sbi, nid, &ni);
	get_node_info(sbi, nid, &ni);


	/* This page is already truncated */
	/* This page is already truncated */
	if (unlikely(ni.blk_addr == NULL_ADDR)) {
	if (unlikely(ni.blk_addr == NULL_ADDR)) {
		ClearPageUptodate(page);
		ClearPageUptodate(page);
		dec_page_count(sbi, F2FS_DIRTY_NODES);
		dec_page_count(sbi, F2FS_DIRTY_NODES);
		up_read(&sbi->node_write);
		unlock_page(page);
		unlock_page(page);
		return 0;
		return 0;
	}
	}


	if (wbc->for_reclaim) {
		if (!down_read_trylock(&sbi->node_write))
			goto redirty_out;
	} else {
		down_read(&sbi->node_write);
	}

	set_page_writeback(page);
	set_page_writeback(page);
	fio.blk_addr = ni.blk_addr;
	fio.blk_addr = ni.blk_addr;
	write_node_page(nid, &fio);
	write_node_page(nid, &fio);