btrfs: Make btrfs_inode_in_log take btrfs_inode
Signed-off-by: Nikolay Borisov <n.borisov.lkml@gmail.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
Родитель
436635571b
Коммит
0f8939b8ac
|
@ -255,16 +255,14 @@ static inline bool btrfs_is_free_space_inode(struct inode *inode)
|
|||
return false;
|
||||
}
|
||||
|
||||
static inline int btrfs_inode_in_log(struct inode *inode, u64 generation)
|
||||
static inline int btrfs_inode_in_log(struct btrfs_inode *inode, u64 generation)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
spin_lock(&BTRFS_I(inode)->lock);
|
||||
if (BTRFS_I(inode)->logged_trans == generation &&
|
||||
BTRFS_I(inode)->last_sub_trans <=
|
||||
BTRFS_I(inode)->last_log_commit &&
|
||||
BTRFS_I(inode)->last_sub_trans <=
|
||||
BTRFS_I(inode)->root->last_log_commit) {
|
||||
spin_lock(&inode->lock);
|
||||
if (inode->logged_trans == generation &&
|
||||
inode->last_sub_trans <= inode->last_log_commit &&
|
||||
inode->last_sub_trans <= inode->root->last_log_commit) {
|
||||
/*
|
||||
* After a ranged fsync we might have left some extent maps
|
||||
* (that fall outside the fsync's range). So return false
|
||||
|
@ -272,10 +270,10 @@ static inline int btrfs_inode_in_log(struct inode *inode, u64 generation)
|
|||
* will be called and process those extent maps.
|
||||
*/
|
||||
smp_mb();
|
||||
if (list_empty(&BTRFS_I(inode)->extent_tree.modified_extents))
|
||||
if (list_empty(&inode->extent_tree.modified_extents))
|
||||
ret = 1;
|
||||
}
|
||||
spin_unlock(&BTRFS_I(inode)->lock);
|
||||
spin_unlock(&inode->lock);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -2062,7 +2062,7 @@ int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync)
|
|||
* commit does not start nor waits for ordered extents to complete.
|
||||
*/
|
||||
smp_mb();
|
||||
if (btrfs_inode_in_log(inode, fs_info->generation) ||
|
||||
if (btrfs_inode_in_log(BTRFS_I(inode), fs_info->generation) ||
|
||||
(full_sync && BTRFS_I(inode)->last_trans <=
|
||||
fs_info->last_trans_committed) ||
|
||||
(!btrfs_have_ordered_extents_in_range(inode, start, len) &&
|
||||
|
|
|
@ -9677,11 +9677,11 @@ out_fail:
|
|||
* allow the tasks to sync it.
|
||||
*/
|
||||
if (ret && (root_log_pinned || dest_log_pinned)) {
|
||||
if (btrfs_inode_in_log(old_dir, fs_info->generation) ||
|
||||
btrfs_inode_in_log(new_dir, fs_info->generation) ||
|
||||
btrfs_inode_in_log(old_inode, fs_info->generation) ||
|
||||
if (btrfs_inode_in_log(BTRFS_I(old_dir), fs_info->generation) ||
|
||||
btrfs_inode_in_log(BTRFS_I(new_dir), fs_info->generation) ||
|
||||
btrfs_inode_in_log(BTRFS_I(old_inode), fs_info->generation) ||
|
||||
(new_inode &&
|
||||
btrfs_inode_in_log(new_inode, fs_info->generation)))
|
||||
btrfs_inode_in_log(BTRFS_I(new_inode), fs_info->generation)))
|
||||
btrfs_set_log_full_commit(fs_info, trans);
|
||||
|
||||
if (root_log_pinned) {
|
||||
|
@ -9953,11 +9953,11 @@ out_fail:
|
|||
* allow the tasks to sync it.
|
||||
*/
|
||||
if (ret && log_pinned) {
|
||||
if (btrfs_inode_in_log(old_dir, fs_info->generation) ||
|
||||
btrfs_inode_in_log(new_dir, fs_info->generation) ||
|
||||
btrfs_inode_in_log(old_inode, fs_info->generation) ||
|
||||
if (btrfs_inode_in_log(BTRFS_I(old_dir), fs_info->generation) ||
|
||||
btrfs_inode_in_log(BTRFS_I(new_dir), fs_info->generation) ||
|
||||
btrfs_inode_in_log(BTRFS_I(old_inode), fs_info->generation) ||
|
||||
(new_inode &&
|
||||
btrfs_inode_in_log(new_inode, fs_info->generation)))
|
||||
btrfs_inode_in_log(BTRFS_I(new_inode), fs_info->generation)))
|
||||
btrfs_set_log_full_commit(fs_info, trans);
|
||||
|
||||
btrfs_end_log_trans(root);
|
||||
|
|
|
@ -5237,7 +5237,7 @@ process_leaf:
|
|||
goto next_dir_inode;
|
||||
}
|
||||
|
||||
if (btrfs_inode_in_log(di_inode, trans->transid)) {
|
||||
if (btrfs_inode_in_log(BTRFS_I(di_inode), trans->transid)) {
|
||||
iput(di_inode);
|
||||
break;
|
||||
}
|
||||
|
@ -5436,7 +5436,7 @@ static int btrfs_log_inode_parent(struct btrfs_trans_handle *trans,
|
|||
if (ret)
|
||||
goto end_no_trans;
|
||||
|
||||
if (btrfs_inode_in_log(inode, trans->transid)) {
|
||||
if (btrfs_inode_in_log(BTRFS_I(inode), trans->transid)) {
|
||||
ret = BTRFS_NO_LOG_SYNC;
|
||||
goto end_no_trans;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче