btrfs: make btrfs_is_free_space_inode take btrfs_inode
Signed-off-by: Nikolay Borisov <nborisov@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
Родитель
6ef06d2790
Коммит
70ddc553b5
|
@ -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,
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
/* 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)
|
||||||
* 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,
|
||||||
* 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,
|
||||||
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,
|
||||||
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,
|
||||||
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,
|
||||||
*/
|
*/
|
||||||
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,
|
||||||
|
|
||||||
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)
|
||||||
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,
|
||||||
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,
|
||||||
* 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,
|
||||||
* 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)
|
||||||
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)
|
||||||
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) {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче