Commit 30ae8467 authored by Chris Mason's avatar Chris Mason Committed by David Woodhouse

Btrfs: btree address space fixes

Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
parent 87cbda5c
...@@ -69,7 +69,6 @@ struct buffer_head *btrfs_find_create_tree_block(struct btrfs_root *root, ...@@ -69,7 +69,6 @@ struct buffer_head *btrfs_find_create_tree_block(struct btrfs_root *root,
if (!page) if (!page)
return NULL; return NULL;
wait_on_page_writeback(page);
if (!page_has_buffers(page)) if (!page_has_buffers(page))
create_empty_buffers(page, root->fs_info->sb->s_blocksize, 0); create_empty_buffers(page, root->fs_info->sb->s_blocksize, 0);
head = page_buffers(page); head = page_buffers(page);
...@@ -300,11 +299,12 @@ struct btrfs_root *open_ctree(struct super_block *sb, ...@@ -300,11 +299,12 @@ struct btrfs_root *open_ctree(struct super_block *sb,
fs_info->btree_inode->i_mapping->a_ops = &btree_aops; fs_info->btree_inode->i_mapping->a_ops = &btree_aops;
mapping_set_gfp_mask(fs_info->btree_inode->i_mapping, GFP_NOFS); mapping_set_gfp_mask(fs_info->btree_inode->i_mapping, GFP_NOFS);
fs_info->hash_tfm = crypto_alloc_hash("sha256", 0, CRYPTO_ALG_ASYNC); fs_info->hash_tfm = crypto_alloc_hash("sha256", 0, CRYPTO_ALG_ASYNC);
if (!fs_info->hash_tfm) { spin_lock_init(&fs_info->hash_lock);
if (!fs_info->hash_tfm || IS_ERR(fs_info->hash_tfm)) {
printk("failed to allocate sha256 hash\n"); printk("failed to allocate sha256 hash\n");
return NULL; return NULL;
} }
spin_lock_init(&fs_info->hash_lock);
mutex_init(&fs_info->trans_mutex); mutex_init(&fs_info->trans_mutex);
mutex_init(&fs_info->fs_mutex); mutex_init(&fs_info->fs_mutex);
...@@ -394,6 +394,7 @@ int close_ctree(struct btrfs_root *root) ...@@ -394,6 +394,7 @@ int close_ctree(struct btrfs_root *root)
btrfs_block_release(root, root->commit_root); btrfs_block_release(root, root->commit_root);
btrfs_block_release(root, root->fs_info->sb_buffer); btrfs_block_release(root, root->fs_info->sb_buffer);
crypto_free_hash(root->fs_info->hash_tfm); crypto_free_hash(root->fs_info->hash_tfm);
truncate_inode_pages(root->fs_info->btree_inode->i_mapping, 0);
iput(root->fs_info->btree_inode); iput(root->fs_info->btree_inode);
kfree(root->fs_info->extent_root); kfree(root->fs_info->extent_root);
kfree(root->fs_info->inode_root); kfree(root->fs_info->inode_root);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment