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

Commit ef86d709 authored by Gu Zheng's avatar Gu Zheng Committed by Jaegeuk Kim
Browse files

f2fs: convert inc/dec_valid_node_count to inc/dec one count

parent da19b0dc
Loading
Loading
Loading
Loading
+15 −17
Original line number Diff line number Diff line
@@ -706,50 +706,48 @@ static inline block_t __start_sum_addr(struct f2fs_sb_info *sbi)
}

static inline bool inc_valid_node_count(struct f2fs_sb_info *sbi,
						struct inode *inode,
						unsigned int count)
						struct inode *inode)
{
	block_t	valid_block_count;
	unsigned int valid_node_count;

	spin_lock(&sbi->stat_lock);

	valid_block_count = sbi->total_valid_block_count + (block_t)count;
	sbi->alloc_valid_block_count += (block_t)count;
	valid_node_count = sbi->total_valid_node_count + count;

	valid_block_count = sbi->total_valid_block_count + 1;
	if (valid_block_count > sbi->user_block_count) {
		spin_unlock(&sbi->stat_lock);
		return false;
	}

	valid_node_count = sbi->total_valid_node_count + 1;
	if (valid_node_count > sbi->total_node_count) {
		spin_unlock(&sbi->stat_lock);
		return false;
	}

	if (inode)
		inode->i_blocks += count;
	sbi->total_valid_node_count = valid_node_count;
	sbi->total_valid_block_count = valid_block_count;
		inode->i_blocks++;

	sbi->alloc_valid_block_count++;
	sbi->total_valid_node_count++;
	sbi->total_valid_block_count++;
	spin_unlock(&sbi->stat_lock);

	return true;
}

static inline void dec_valid_node_count(struct f2fs_sb_info *sbi,
						struct inode *inode,
						unsigned int count)
						struct inode *inode)
{
	spin_lock(&sbi->stat_lock);

	f2fs_bug_on(sbi->total_valid_block_count < count);
	f2fs_bug_on(sbi->total_valid_node_count < count);
	f2fs_bug_on(inode->i_blocks < count);
	f2fs_bug_on(!sbi->total_valid_block_count);
	f2fs_bug_on(!sbi->total_valid_node_count);
	f2fs_bug_on(!inode->i_blocks);

	inode->i_blocks -= count;
	sbi->total_valid_node_count -= count;
	sbi->total_valid_block_count -= (block_t)count;
	inode->i_blocks--;
	sbi->total_valid_node_count--;
	sbi->total_valid_block_count--;

	spin_unlock(&sbi->stat_lock);
}
+3 −3
Original line number Diff line number Diff line
@@ -502,7 +502,7 @@ static void truncate_node(struct dnode_of_data *dn)

	/* Deallocate node address */
	invalidate_blocks(sbi, ni.blk_addr);
	dec_valid_node_count(sbi, dn->inode, 1);
	dec_valid_node_count(sbi, dn->inode);
	set_node_addr(sbi, &ni, NULL_ADDR);

	if (dn->nid == dn->inode->i_ino) {
@@ -851,7 +851,7 @@ struct page *new_node_page(struct dnode_of_data *dn,
	if (!page)
		return ERR_PTR(-ENOMEM);

	if (!inc_valid_node_count(sbi, dn->inode, 1)) {
	if (!inc_valid_node_count(sbi, dn->inode)) {
		err = -ENOSPC;
		goto fail;
	}
@@ -1560,7 +1560,7 @@ int recover_inode_page(struct f2fs_sb_info *sbi, struct page *page)
	new_ni = old_ni;
	new_ni.ino = ino;

	if (!inc_valid_node_count(sbi, NULL, 1))
	if (!inc_valid_node_count(sbi, NULL))
		WARN_ON(1);
	set_node_addr(sbi, &new_ni, NEW_ADDR);
	inc_valid_inode_count(sbi);