Loading fs/btrfs/btrfs_inode.h +7 −9 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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; } Loading fs/btrfs/file.c +1 −1 Original line number Diff line number Diff line Loading @@ -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) && Loading fs/btrfs/inode.c +8 −8 Original line number Diff line number Diff line Loading @@ -9677,11 +9677,11 @@ static int btrfs_rename_exchange(struct inode *old_dir, * 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) { Loading Loading @@ -9953,11 +9953,11 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry, * 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); Loading fs/btrfs/tree-log.c +2 −2 Original line number Diff line number Diff line Loading @@ -5237,7 +5237,7 @@ static int log_new_dir_dentries(struct btrfs_trans_handle *trans, 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; } Loading Loading @@ -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; } Loading Loading
fs/btrfs/btrfs_inode.h +7 −9 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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; } Loading
fs/btrfs/file.c +1 −1 Original line number Diff line number Diff line Loading @@ -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) && Loading
fs/btrfs/inode.c +8 −8 Original line number Diff line number Diff line Loading @@ -9677,11 +9677,11 @@ static int btrfs_rename_exchange(struct inode *old_dir, * 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) { Loading Loading @@ -9953,11 +9953,11 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry, * 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); Loading
fs/btrfs/tree-log.c +2 −2 Original line number Diff line number Diff line Loading @@ -5237,7 +5237,7 @@ static int log_new_dir_dentries(struct btrfs_trans_handle *trans, 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; } Loading Loading @@ -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; } Loading