Loading fs/btrfs/extent-tree.c +19 −5 Original line number Diff line number Diff line Loading @@ -663,7 +663,9 @@ int btrfs_lookup_extent(struct btrfs_root *root, u64 start, u64 len) struct btrfs_path *path; path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return -ENOMEM; key.objectid = start; key.offset = len; btrfs_set_key_type(&key, BTRFS_EXTENT_ITEM_KEY); Loading Loading @@ -3272,6 +3274,9 @@ static int do_chunk_alloc(struct btrfs_trans_handle *trans, } ret = btrfs_alloc_chunk(trans, extent_root, flags); if (ret < 0 && ret != -ENOSPC) goto out; spin_lock(&space_info->lock); if (ret) space_info->full = 1; Loading @@ -3281,6 +3286,7 @@ static int do_chunk_alloc(struct btrfs_trans_handle *trans, space_info->force_alloc = CHUNK_ALLOC_NO_FORCE; space_info->chunk_alloc = 0; spin_unlock(&space_info->lock); out: mutex_unlock(&extent_root->fs_info->chunk_mutex); return ret; } Loading Loading @@ -5501,7 +5507,8 @@ static int alloc_reserved_tree_block(struct btrfs_trans_handle *trans, u32 size = sizeof(*extent_item) + sizeof(*block_info) + sizeof(*iref); path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return -ENOMEM; path->leave_spinning = 1; ret = btrfs_insert_empty_item(trans, fs_info->extent_root, path, Loading Loading @@ -6272,10 +6279,14 @@ int btrfs_drop_snapshot(struct btrfs_root *root, int level; path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return -ENOMEM; wc = kzalloc(sizeof(*wc), GFP_NOFS); BUG_ON(!wc); if (!wc) { btrfs_free_path(path); return -ENOMEM; } trans = btrfs_start_transaction(tree_root, 0); BUG_ON(IS_ERR(trans)); Loading Loading @@ -7183,7 +7194,10 @@ int btrfs_remove_block_group(struct btrfs_trans_handle *trans, spin_unlock(&cluster->refill_lock); path = btrfs_alloc_path(); BUG_ON(!path); if (!path) { ret = -ENOMEM; goto out; } inode = lookup_free_space_inode(root, block_group, path); if (!IS_ERR(inode)) { Loading fs/btrfs/file-item.c +5 −2 Original line number Diff line number Diff line Loading @@ -291,7 +291,8 @@ int btrfs_lookup_csums_range(struct btrfs_root *root, u64 start, u64 end, u16 csum_size = btrfs_super_csum_size(&root->fs_info->super_copy); path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return -ENOMEM; if (search_commit) { path->skip_locking = 1; Loading Loading @@ -677,7 +678,9 @@ int btrfs_csum_file_blocks(struct btrfs_trans_handle *trans, btrfs_super_csum_size(&root->fs_info->super_copy); path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return -ENOMEM; sector_sum = sums->sums; again: next_offset = (u64)-1; Loading fs/btrfs/file.c +2 −1 Original line number Diff line number Diff line Loading @@ -855,7 +855,8 @@ int btrfs_mark_extent_written(struct btrfs_trans_handle *trans, btrfs_drop_extent_cache(inode, start, end - 1, 0); path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return -ENOMEM; again: recow = 0; split = start; Loading fs/btrfs/inode.c +35 −14 Original line number Diff line number Diff line Loading @@ -1061,7 +1061,8 @@ static noinline int run_delalloc_nocow(struct inode *inode, u64 ino = btrfs_ino(inode); path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return -ENOMEM; nolock = btrfs_is_free_space_inode(root, inode); Loading Loading @@ -1645,7 +1646,8 @@ static int insert_reserved_file_extent(struct btrfs_trans_handle *trans, int ret; path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return -ENOMEM; path->leave_spinning = 1; Loading Loading @@ -2517,7 +2519,9 @@ static void btrfs_read_locked_inode(struct inode *inode) filled = true; path = btrfs_alloc_path(); BUG_ON(!path); if (!path) goto make_bad; path->leave_spinning = 1; memcpy(&location, &BTRFS_I(inode)->location, sizeof(location)); Loading Loading @@ -3147,6 +3151,11 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans, BUG_ON(new_size > 0 && min_type != BTRFS_EXTENT_DATA_KEY); path = btrfs_alloc_path(); if (!path) return -ENOMEM; path->reada = -1; if (root->ref_cows || root == root->fs_info->tree_root) btrfs_drop_extent_cache(inode, new_size & (~mask), (u64)-1, 0); Loading @@ -3159,10 +3168,6 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans, if (min_type == 0 && root == BTRFS_I(inode)->root) btrfs_kill_delayed_inode_items(inode); path = btrfs_alloc_path(); BUG_ON(!path); path->reada = -1; key.objectid = ino; key.offset = (u64)-1; key.type = (u8)-1; Loading Loading @@ -3690,7 +3695,8 @@ static int btrfs_inode_by_name(struct inode *dir, struct dentry *dentry, int ret = 0; path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return -ENOMEM; di = btrfs_lookup_dir_item(NULL, root, path, btrfs_ino(dir), name, namelen, 0); Loading Loading @@ -3946,6 +3952,7 @@ struct inode *btrfs_iget(struct super_block *s, struct btrfs_key *location, struct btrfs_root *root, int *new) { struct inode *inode; int bad_inode = 0; inode = btrfs_iget_locked(s, location->objectid, root); if (!inode) Loading @@ -3955,10 +3962,19 @@ struct inode *btrfs_iget(struct super_block *s, struct btrfs_key *location, BTRFS_I(inode)->root = root; memcpy(&BTRFS_I(inode)->location, location, sizeof(*location)); btrfs_read_locked_inode(inode); if (!is_bad_inode(inode)) { inode_tree_add(inode); unlock_new_inode(inode); if (new) *new = 1; } else { bad_inode = 1; } } if (bad_inode) { iput(inode); inode = ERR_PTR(-ESTALE); } return inode; Loading Loading @@ -4415,7 +4431,8 @@ static struct inode *btrfs_new_inode(struct btrfs_trans_handle *trans, int owner; path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return ERR_PTR(-ENOMEM); inode = new_inode(root->fs_info->sb); if (!inode) { Loading Loading @@ -7172,7 +7189,11 @@ static int btrfs_symlink(struct inode *dir, struct dentry *dentry, goto out_unlock; path = btrfs_alloc_path(); BUG_ON(!path); if (!path) { err = -ENOMEM; drop_inode = 1; goto out_unlock; } key.objectid = btrfs_ino(inode); key.offset = 0; btrfs_set_key_type(&key, BTRFS_EXTENT_DATA_KEY); Loading fs/btrfs/tree-log.c +9 −3 Original line number Diff line number Diff line Loading @@ -1617,7 +1617,8 @@ static int replay_one_buffer(struct btrfs_root *log, struct extent_buffer *eb, return 0; path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return -ENOMEM; nritems = btrfs_header_nritems(eb); for (i = 0; i < nritems; i++) { Loading Loading @@ -1723,7 +1724,9 @@ static noinline int walk_down_log_tree(struct btrfs_trans_handle *trans, return -ENOMEM; if (*level == 1) { wc->process_func(root, next, wc, ptr_gen); ret = wc->process_func(root, next, wc, ptr_gen); if (ret) return ret; path->slots[*level]++; if (wc->free) { Loading Loading @@ -1788,8 +1791,11 @@ static noinline int walk_up_log_tree(struct btrfs_trans_handle *trans, parent = path->nodes[*level + 1]; root_owner = btrfs_header_owner(parent); wc->process_func(root, path->nodes[*level], wc, ret = wc->process_func(root, path->nodes[*level], wc, btrfs_header_generation(path->nodes[*level])); if (ret) return ret; if (wc->free) { struct extent_buffer *next; Loading Loading
fs/btrfs/extent-tree.c +19 −5 Original line number Diff line number Diff line Loading @@ -663,7 +663,9 @@ int btrfs_lookup_extent(struct btrfs_root *root, u64 start, u64 len) struct btrfs_path *path; path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return -ENOMEM; key.objectid = start; key.offset = len; btrfs_set_key_type(&key, BTRFS_EXTENT_ITEM_KEY); Loading Loading @@ -3272,6 +3274,9 @@ static int do_chunk_alloc(struct btrfs_trans_handle *trans, } ret = btrfs_alloc_chunk(trans, extent_root, flags); if (ret < 0 && ret != -ENOSPC) goto out; spin_lock(&space_info->lock); if (ret) space_info->full = 1; Loading @@ -3281,6 +3286,7 @@ static int do_chunk_alloc(struct btrfs_trans_handle *trans, space_info->force_alloc = CHUNK_ALLOC_NO_FORCE; space_info->chunk_alloc = 0; spin_unlock(&space_info->lock); out: mutex_unlock(&extent_root->fs_info->chunk_mutex); return ret; } Loading Loading @@ -5501,7 +5507,8 @@ static int alloc_reserved_tree_block(struct btrfs_trans_handle *trans, u32 size = sizeof(*extent_item) + sizeof(*block_info) + sizeof(*iref); path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return -ENOMEM; path->leave_spinning = 1; ret = btrfs_insert_empty_item(trans, fs_info->extent_root, path, Loading Loading @@ -6272,10 +6279,14 @@ int btrfs_drop_snapshot(struct btrfs_root *root, int level; path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return -ENOMEM; wc = kzalloc(sizeof(*wc), GFP_NOFS); BUG_ON(!wc); if (!wc) { btrfs_free_path(path); return -ENOMEM; } trans = btrfs_start_transaction(tree_root, 0); BUG_ON(IS_ERR(trans)); Loading Loading @@ -7183,7 +7194,10 @@ int btrfs_remove_block_group(struct btrfs_trans_handle *trans, spin_unlock(&cluster->refill_lock); path = btrfs_alloc_path(); BUG_ON(!path); if (!path) { ret = -ENOMEM; goto out; } inode = lookup_free_space_inode(root, block_group, path); if (!IS_ERR(inode)) { Loading
fs/btrfs/file-item.c +5 −2 Original line number Diff line number Diff line Loading @@ -291,7 +291,8 @@ int btrfs_lookup_csums_range(struct btrfs_root *root, u64 start, u64 end, u16 csum_size = btrfs_super_csum_size(&root->fs_info->super_copy); path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return -ENOMEM; if (search_commit) { path->skip_locking = 1; Loading Loading @@ -677,7 +678,9 @@ int btrfs_csum_file_blocks(struct btrfs_trans_handle *trans, btrfs_super_csum_size(&root->fs_info->super_copy); path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return -ENOMEM; sector_sum = sums->sums; again: next_offset = (u64)-1; Loading
fs/btrfs/file.c +2 −1 Original line number Diff line number Diff line Loading @@ -855,7 +855,8 @@ int btrfs_mark_extent_written(struct btrfs_trans_handle *trans, btrfs_drop_extent_cache(inode, start, end - 1, 0); path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return -ENOMEM; again: recow = 0; split = start; Loading
fs/btrfs/inode.c +35 −14 Original line number Diff line number Diff line Loading @@ -1061,7 +1061,8 @@ static noinline int run_delalloc_nocow(struct inode *inode, u64 ino = btrfs_ino(inode); path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return -ENOMEM; nolock = btrfs_is_free_space_inode(root, inode); Loading Loading @@ -1645,7 +1646,8 @@ static int insert_reserved_file_extent(struct btrfs_trans_handle *trans, int ret; path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return -ENOMEM; path->leave_spinning = 1; Loading Loading @@ -2517,7 +2519,9 @@ static void btrfs_read_locked_inode(struct inode *inode) filled = true; path = btrfs_alloc_path(); BUG_ON(!path); if (!path) goto make_bad; path->leave_spinning = 1; memcpy(&location, &BTRFS_I(inode)->location, sizeof(location)); Loading Loading @@ -3147,6 +3151,11 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans, BUG_ON(new_size > 0 && min_type != BTRFS_EXTENT_DATA_KEY); path = btrfs_alloc_path(); if (!path) return -ENOMEM; path->reada = -1; if (root->ref_cows || root == root->fs_info->tree_root) btrfs_drop_extent_cache(inode, new_size & (~mask), (u64)-1, 0); Loading @@ -3159,10 +3168,6 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans, if (min_type == 0 && root == BTRFS_I(inode)->root) btrfs_kill_delayed_inode_items(inode); path = btrfs_alloc_path(); BUG_ON(!path); path->reada = -1; key.objectid = ino; key.offset = (u64)-1; key.type = (u8)-1; Loading Loading @@ -3690,7 +3695,8 @@ static int btrfs_inode_by_name(struct inode *dir, struct dentry *dentry, int ret = 0; path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return -ENOMEM; di = btrfs_lookup_dir_item(NULL, root, path, btrfs_ino(dir), name, namelen, 0); Loading Loading @@ -3946,6 +3952,7 @@ struct inode *btrfs_iget(struct super_block *s, struct btrfs_key *location, struct btrfs_root *root, int *new) { struct inode *inode; int bad_inode = 0; inode = btrfs_iget_locked(s, location->objectid, root); if (!inode) Loading @@ -3955,10 +3962,19 @@ struct inode *btrfs_iget(struct super_block *s, struct btrfs_key *location, BTRFS_I(inode)->root = root; memcpy(&BTRFS_I(inode)->location, location, sizeof(*location)); btrfs_read_locked_inode(inode); if (!is_bad_inode(inode)) { inode_tree_add(inode); unlock_new_inode(inode); if (new) *new = 1; } else { bad_inode = 1; } } if (bad_inode) { iput(inode); inode = ERR_PTR(-ESTALE); } return inode; Loading Loading @@ -4415,7 +4431,8 @@ static struct inode *btrfs_new_inode(struct btrfs_trans_handle *trans, int owner; path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return ERR_PTR(-ENOMEM); inode = new_inode(root->fs_info->sb); if (!inode) { Loading Loading @@ -7172,7 +7189,11 @@ static int btrfs_symlink(struct inode *dir, struct dentry *dentry, goto out_unlock; path = btrfs_alloc_path(); BUG_ON(!path); if (!path) { err = -ENOMEM; drop_inode = 1; goto out_unlock; } key.objectid = btrfs_ino(inode); key.offset = 0; btrfs_set_key_type(&key, BTRFS_EXTENT_DATA_KEY); Loading
fs/btrfs/tree-log.c +9 −3 Original line number Diff line number Diff line Loading @@ -1617,7 +1617,8 @@ static int replay_one_buffer(struct btrfs_root *log, struct extent_buffer *eb, return 0; path = btrfs_alloc_path(); BUG_ON(!path); if (!path) return -ENOMEM; nritems = btrfs_header_nritems(eb); for (i = 0; i < nritems; i++) { Loading Loading @@ -1723,7 +1724,9 @@ static noinline int walk_down_log_tree(struct btrfs_trans_handle *trans, return -ENOMEM; if (*level == 1) { wc->process_func(root, next, wc, ptr_gen); ret = wc->process_func(root, next, wc, ptr_gen); if (ret) return ret; path->slots[*level]++; if (wc->free) { Loading Loading @@ -1788,8 +1791,11 @@ static noinline int walk_up_log_tree(struct btrfs_trans_handle *trans, parent = path->nodes[*level + 1]; root_owner = btrfs_header_owner(parent); wc->process_func(root, path->nodes[*level], wc, ret = wc->process_func(root, path->nodes[*level], wc, btrfs_header_generation(path->nodes[*level])); if (ret) return ret; if (wc->free) { struct extent_buffer *next; Loading