Commit 70ddc553 authored by Nikolay Borisov's avatar Nikolay Borisov Committed by David Sterba

btrfs: make btrfs_is_free_space_inode take btrfs_inode

Signed-off-by: default avatarNikolay Borisov <nborisov@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 6ef06d27
...@@ -243,14 +243,14 @@ static inline void btrfs_i_size_write(struct btrfs_inode *inode, u64 size) ...@@ -243,14 +243,14 @@ static inline void btrfs_i_size_write(struct btrfs_inode *inode, u64 size)
inode->disk_i_size = size; inode->disk_i_size = size;
} }
static inline bool btrfs_is_free_space_inode(struct inode *inode) static inline bool btrfs_is_free_space_inode(struct btrfs_inode *inode)
{ {
struct btrfs_root *root = BTRFS_I(inode)->root; struct btrfs_root *root = inode->root;
if (root == root->fs_info->tree_root && if (root == root->fs_info->tree_root &&
btrfs_ino(BTRFS_I(inode)) != BTRFS_BTREE_INODE_OBJECTID) btrfs_ino(inode) != BTRFS_BTREE_INODE_OBJECTID)
return true; return true;
if (BTRFS_I(inode)->location.objectid == BTRFS_FREE_INO_OBJECTID) if (inode->location.objectid == BTRFS_FREE_INO_OBJECTID)
return true; return true;
return false; return false;
} }
......
...@@ -3123,7 +3123,7 @@ static inline void btrfs_force_ra(struct address_space *mapping, ...@@ -3123,7 +3123,7 @@ static inline void btrfs_force_ra(struct address_space *mapping,
} }
struct inode *btrfs_lookup_dentry(struct inode *dir, struct dentry *dentry); struct inode *btrfs_lookup_dentry(struct inode *dir, struct dentry *dentry);
int btrfs_set_inode_index(struct inode *dir, u64 *index); int btrfs_set_inode_index(struct btrfs_inode *dir, u64 *index);
int btrfs_unlink_inode(struct btrfs_trans_handle *trans, int btrfs_unlink_inode(struct btrfs_trans_handle *trans,
struct btrfs_root *root, struct btrfs_root *root,
struct btrfs_inode *dir, struct btrfs_inode *inode, struct btrfs_inode *dir, struct btrfs_inode *inode,
......
...@@ -4148,7 +4148,7 @@ int btrfs_alloc_data_chunk_ondemand(struct inode *inode, u64 bytes) ...@@ -4148,7 +4148,7 @@ int btrfs_alloc_data_chunk_ondemand(struct inode *inode, u64 bytes)
/* make sure bytes are sectorsize aligned */ /* make sure bytes are sectorsize aligned */
bytes = ALIGN(bytes, fs_info->sectorsize); bytes = ALIGN(bytes, fs_info->sectorsize);
if (btrfs_is_free_space_inode(inode)) { if (btrfs_is_free_space_inode(BTRFS_I(inode))) {
need_commit = 0; need_commit = 0;
ASSERT(current->journal_info); ASSERT(current->journal_info);
} }
...@@ -5947,7 +5947,7 @@ int btrfs_delalloc_reserve_metadata(struct inode *inode, u64 num_bytes) ...@@ -5947,7 +5947,7 @@ int btrfs_delalloc_reserve_metadata(struct inode *inode, u64 num_bytes)
* If we have a transaction open (can happen if we call truncate_block * If we have a transaction open (can happen if we call truncate_block
* from truncate), then we need FLUSH_LIMIT so we don't deadlock. * from truncate), then we need FLUSH_LIMIT so we don't deadlock.
*/ */
if (btrfs_is_free_space_inode(inode)) { if (btrfs_is_free_space_inode(BTRFS_I(inode))) {
flush = BTRFS_RESERVE_NO_FLUSH; flush = BTRFS_RESERVE_NO_FLUSH;
delalloc_lock = false; delalloc_lock = false;
} else if (current->journal_info) { } else if (current->journal_info) {
......
...@@ -214,7 +214,7 @@ static int __btrfs_lookup_bio_sums(struct inode *inode, struct bio *bio, ...@@ -214,7 +214,7 @@ static int __btrfs_lookup_bio_sums(struct inode *inode, struct bio *bio,
* read from the commit root and sidestep a nasty deadlock * read from the commit root and sidestep a nasty deadlock
* between reading the free space cache and updating the csum tree. * between reading the free space cache and updating the csum tree.
*/ */
if (btrfs_is_free_space_inode(inode)) { if (btrfs_is_free_space_inode(BTRFS_I(inode))) {
path->search_commit_root = 1; path->search_commit_root = 1;
path->skip_locking = 1; path->skip_locking = 1;
} }
......
...@@ -933,7 +933,7 @@ static noinline int cow_file_range(struct inode *inode, ...@@ -933,7 +933,7 @@ static noinline int cow_file_range(struct inode *inode,
struct extent_map *em; struct extent_map *em;
int ret = 0; int ret = 0;
if (btrfs_is_free_space_inode(inode)) { if (btrfs_is_free_space_inode(BTRFS_I(inode))) {
WARN_ON_ONCE(1); WARN_ON_ONCE(1);
ret = -EINVAL; ret = -EINVAL;
goto out_unlock; goto out_unlock;
...@@ -1231,7 +1231,7 @@ static noinline int run_delalloc_nocow(struct inode *inode, ...@@ -1231,7 +1231,7 @@ static noinline int run_delalloc_nocow(struct inode *inode,
return -ENOMEM; return -ENOMEM;
} }
nolock = btrfs_is_free_space_inode(inode); nolock = btrfs_is_free_space_inode(BTRFS_I(inode));
cow_start = (u64)-1; cow_start = (u64)-1;
cur_offset = start; cur_offset = start;
...@@ -1670,7 +1670,7 @@ static void btrfs_set_bit_hook(struct inode *inode, ...@@ -1670,7 +1670,7 @@ static void btrfs_set_bit_hook(struct inode *inode,
if (!(state->state & EXTENT_DELALLOC) && (*bits & EXTENT_DELALLOC)) { if (!(state->state & EXTENT_DELALLOC) && (*bits & EXTENT_DELALLOC)) {
struct btrfs_root *root = BTRFS_I(inode)->root; struct btrfs_root *root = BTRFS_I(inode)->root;
u64 len = state->end + 1 - state->start; u64 len = state->end + 1 - state->start;
bool do_list = !btrfs_is_free_space_inode(inode); bool do_list = !btrfs_is_free_space_inode(BTRFS_I(inode));
if (*bits & EXTENT_FIRST_DELALLOC) { if (*bits & EXTENT_FIRST_DELALLOC) {
*bits &= ~EXTENT_FIRST_DELALLOC; *bits &= ~EXTENT_FIRST_DELALLOC;
...@@ -1720,7 +1720,7 @@ static void btrfs_clear_bit_hook(struct inode *inode, ...@@ -1720,7 +1720,7 @@ static void btrfs_clear_bit_hook(struct inode *inode,
*/ */
if ((state->state & EXTENT_DELALLOC) && (*bits & EXTENT_DELALLOC)) { if ((state->state & EXTENT_DELALLOC) && (*bits & EXTENT_DELALLOC)) {
struct btrfs_root *root = BTRFS_I(inode)->root; struct btrfs_root *root = BTRFS_I(inode)->root;
bool do_list = !btrfs_is_free_space_inode(inode); bool do_list = !btrfs_is_free_space_inode(BTRFS_I(inode));
if (*bits & EXTENT_FIRST_DELALLOC) { if (*bits & EXTENT_FIRST_DELALLOC) {
*bits &= ~EXTENT_FIRST_DELALLOC; *bits &= ~EXTENT_FIRST_DELALLOC;
...@@ -1854,7 +1854,7 @@ static int btrfs_submit_bio_hook(struct inode *inode, struct bio *bio, ...@@ -1854,7 +1854,7 @@ static int btrfs_submit_bio_hook(struct inode *inode, struct bio *bio,
skip_sum = BTRFS_I(inode)->flags & BTRFS_INODE_NODATASUM; skip_sum = BTRFS_I(inode)->flags & BTRFS_INODE_NODATASUM;
if (btrfs_is_free_space_inode(inode)) if (btrfs_is_free_space_inode(BTRFS_I(inode)))
metadata = BTRFS_WQ_ENDIO_FREE_SPACE; metadata = BTRFS_WQ_ENDIO_FREE_SPACE;
if (bio_op(bio) != REQ_OP_WRITE) { if (bio_op(bio) != REQ_OP_WRITE) {
...@@ -2793,7 +2793,7 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent) ...@@ -2793,7 +2793,7 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
bool nolock; bool nolock;
bool truncated = false; bool truncated = false;
nolock = btrfs_is_free_space_inode(inode); nolock = btrfs_is_free_space_inode(BTRFS_I(inode));
if (test_bit(BTRFS_ORDERED_IOERR, &ordered_extent->flags)) { if (test_bit(BTRFS_ORDERED_IOERR, &ordered_extent->flags)) {
ret = -EIO; ret = -EIO;
...@@ -2993,7 +2993,7 @@ static int btrfs_writepage_end_io_hook(struct page *page, u64 start, u64 end, ...@@ -2993,7 +2993,7 @@ static int btrfs_writepage_end_io_hook(struct page *page, u64 start, u64 end,
end - start + 1, uptodate)) end - start + 1, uptodate))
return 0; return 0;
if (btrfs_is_free_space_inode(inode)) { if (btrfs_is_free_space_inode(BTRFS_I(inode))) {
wq = fs_info->endio_freespace_worker; wq = fs_info->endio_freespace_worker;
func = btrfs_freespace_write_helper; func = btrfs_freespace_write_helper;
} else { } else {
...@@ -3865,7 +3865,7 @@ noinline int btrfs_update_inode(struct btrfs_trans_handle *trans, ...@@ -3865,7 +3865,7 @@ noinline int btrfs_update_inode(struct btrfs_trans_handle *trans,
* The data relocation inode should also be directly updated * The data relocation inode should also be directly updated
* without delay * without delay
*/ */
if (!btrfs_is_free_space_inode(inode) if (!btrfs_is_free_space_inode(BTRFS_I(inode))
&& root->root_key.objectid != BTRFS_DATA_RELOC_TREE_OBJECTID && root->root_key.objectid != BTRFS_DATA_RELOC_TREE_OBJECTID
&& !test_bit(BTRFS_FS_LOG_RECOVERING, &fs_info->flags)) { && !test_bit(BTRFS_FS_LOG_RECOVERING, &fs_info->flags)) {
btrfs_update_root_times(trans, root); btrfs_update_root_times(trans, root);
...@@ -4319,7 +4319,7 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans, ...@@ -4319,7 +4319,7 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
* for non-free space inodes and ref cows, we want to back off from * for non-free space inodes and ref cows, we want to back off from
* time to time * time to time
*/ */
if (!btrfs_is_free_space_inode(inode) && if (!btrfs_is_free_space_inode(BTRFS_I(inode)) &&
test_bit(BTRFS_ROOT_REF_COWS, &root->state)) test_bit(BTRFS_ROOT_REF_COWS, &root->state))
be_nice = 1; be_nice = 1;
...@@ -5180,7 +5180,7 @@ void btrfs_evict_inode(struct inode *inode) ...@@ -5180,7 +5180,7 @@ void btrfs_evict_inode(struct inode *inode)
if (inode->i_nlink && if (inode->i_nlink &&
((btrfs_root_refs(&root->root_item) != 0 && ((btrfs_root_refs(&root->root_item) != 0 &&
root->root_key.objectid != BTRFS_ROOT_TREE_OBJECTID) || root->root_key.objectid != BTRFS_ROOT_TREE_OBJECTID) ||
btrfs_is_free_space_inode(inode))) btrfs_is_free_space_inode(BTRFS_I(inode))))
goto no_delete; goto no_delete;
if (is_bad_inode(inode)) { if (is_bad_inode(inode)) {
...@@ -5897,7 +5897,8 @@ int btrfs_write_inode(struct inode *inode, struct writeback_control *wbc) ...@@ -5897,7 +5897,8 @@ int btrfs_write_inode(struct inode *inode, struct writeback_control *wbc)
if (test_bit(BTRFS_INODE_DUMMY, &BTRFS_I(inode)->runtime_flags)) if (test_bit(BTRFS_INODE_DUMMY, &BTRFS_I(inode)->runtime_flags))
return 0; return 0;
if (btrfs_fs_closing(root->fs_info) && btrfs_is_free_space_inode(inode)) if (btrfs_fs_closing(root->fs_info) &&
btrfs_is_free_space_inode(BTRFS_I(inode)))
nolock = true; nolock = true;
if (wbc->sync_mode == WB_SYNC_ALL) { if (wbc->sync_mode == WB_SYNC_ALL) {
......
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