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

Commit 9c02740c authored by Jaegeuk Kim's avatar Jaegeuk Kim
Browse files

f2fs: check the free space first in new_node_page



Let's check the free space in prior to the main process of allocating a new node
page.

Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
parent 41dfde13
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -833,29 +833,29 @@ struct page *new_node_page(struct dnode_of_data *dn,
	if (!page)
		return ERR_PTR(-ENOMEM);

	get_node_info(sbi, dn->nid, &old_ni);
	if (!inc_valid_node_count(sbi, dn->inode, 1)) {
		err = -ENOSPC;
		goto fail;
	}

	SetPageUptodate(page);
	fill_node_footer(page, dn->nid, dn->inode->i_ino, ofs, true);
	get_node_info(sbi, dn->nid, &old_ni);

	/* Reinitialize old_ni with new node page */
	BUG_ON(old_ni.blk_addr != NULL_ADDR);
	new_ni = old_ni;
	new_ni.ino = dn->inode->i_ino;

	if (!inc_valid_node_count(sbi, dn->inode, 1)) {
		err = -ENOSPC;
		goto fail;
	}
	set_node_addr(sbi, &new_ni, NEW_ADDR);

	fill_node_footer(page, dn->nid, dn->inode->i_ino, ofs, true);
	set_cold_node(dn->inode, page);
	SetPageUptodate(page);
	set_page_dirty(page);

	dn->node_page = page;
	if (ipage)
		update_inode(dn->inode, ipage);
	else
		sync_inode_page(dn);
	set_page_dirty(page);
	if (ofs == 0)
		inc_valid_inode_count(sbi);