Esempio n. 1
0
/* allocate a block and return its block number.
 * returns negative value on error. */
int testfs_alloc_block(struct super_block *sb, char *block) {
	int phy_block_nr;

	phy_block_nr = testfs_get_block_freemap(sb);
	// if error occurred, return -ENOSPC
	if (phy_block_nr < 0)
		return phy_block_nr;
	_bzero(block, BLOCK_SIZE);
	return sb->sb.data_blocks_start + phy_block_nr;
}
Esempio n. 2
0
int
testfs_alloc_block(struct super_block *sb)
{
	int phy_block_nr;

	/* file system size is limited to max_fs_blocks */
	if (sb->sb.used_block_count >= sb->sb.max_fs_blocks)
		return -ENOSPC;
	phy_block_nr = testfs_get_block_freemap(sb);
	if (phy_block_nr < 0)
		return phy_block_nr;
	sb->sb.used_block_count++;
	testfs_write_super_block(sb);
	return sb->sb.data_blocks_start + phy_block_nr;
}