diff options
author | Nikolay Borisov <n.borisov.lkml@gmail.com> | 2017-01-17 17:31:30 -0500 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2017-02-14 09:50:54 -0500 |
commit | 0f8939b8ac8623760c078d41282526de143ee623 (patch) | |
tree | 4e76f15f3fb3c81b84329badd48f460b3fd543f1 | |
parent | 436635571bd0b4ba12ec81641667d85e7c29bad5 (diff) |
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>
-rw-r--r-- | fs/btrfs/btrfs_inode.h | 16 | ||||
-rw-r--r-- | fs/btrfs/file.c | 2 | ||||
-rw-r--r-- | fs/btrfs/inode.c | 16 | ||||
-rw-r--r-- | fs/btrfs/tree-log.c | 4 |
4 files changed, 18 insertions, 20 deletions
diff --git a/fs/btrfs/btrfs_inode.h b/fs/btrfs/btrfs_inode.h index 4fed080545c6..b2dde0efebc0 100644 --- a/fs/btrfs/btrfs_inode.h +++ b/fs/btrfs/btrfs_inode.h | |||
@@ -255,16 +255,14 @@ static inline bool btrfs_is_free_space_inode(struct inode *inode) | |||
255 | return false; | 255 | return false; |
256 | } | 256 | } |
257 | 257 | ||
258 | static inline int btrfs_inode_in_log(struct inode *inode, u64 generation) | 258 | static inline int btrfs_inode_in_log(struct btrfs_inode *inode, u64 generation) |
259 | { | 259 | { |
260 | int ret = 0; | 260 | int ret = 0; |
261 | 261 | ||
262 | spin_lock(&BTRFS_I(inode)->lock); | 262 | spin_lock(&inode->lock); |
263 | if (BTRFS_I(inode)->logged_trans == generation && | 263 | if (inode->logged_trans == generation && |
264 | BTRFS_I(inode)->last_sub_trans <= | 264 | inode->last_sub_trans <= inode->last_log_commit && |
265 | BTRFS_I(inode)->last_log_commit && | 265 | inode->last_sub_trans <= inode->root->last_log_commit) { |
266 | BTRFS_I(inode)->last_sub_trans <= | ||
267 | BTRFS_I(inode)->root->last_log_commit) { | ||
268 | /* | 266 | /* |
269 | * After a ranged fsync we might have left some extent maps | 267 | * After a ranged fsync we might have left some extent maps |
270 | * (that fall outside the fsync's range). So return false | 268 | * (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) | |||
272 | * will be called and process those extent maps. | 270 | * will be called and process those extent maps. |
273 | */ | 271 | */ |
274 | smp_mb(); | 272 | smp_mb(); |
275 | if (list_empty(&BTRFS_I(inode)->extent_tree.modified_extents)) | 273 | if (list_empty(&inode->extent_tree.modified_extents)) |
276 | ret = 1; | 274 | ret = 1; |
277 | } | 275 | } |
278 | spin_unlock(&BTRFS_I(inode)->lock); | 276 | spin_unlock(&inode->lock); |
279 | return ret; | 277 | return ret; |
280 | } | 278 | } |
281 | 279 | ||
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 0d32f45cef28..149b79b3aaf8 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c | |||
@@ -2062,7 +2062,7 @@ int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync) | |||
2062 | * commit does not start nor waits for ordered extents to complete. | 2062 | * commit does not start nor waits for ordered extents to complete. |
2063 | */ | 2063 | */ |
2064 | smp_mb(); | 2064 | smp_mb(); |
2065 | if (btrfs_inode_in_log(inode, fs_info->generation) || | 2065 | if (btrfs_inode_in_log(BTRFS_I(inode), fs_info->generation) || |
2066 | (full_sync && BTRFS_I(inode)->last_trans <= | 2066 | (full_sync && BTRFS_I(inode)->last_trans <= |
2067 | fs_info->last_trans_committed) || | 2067 | fs_info->last_trans_committed) || |
2068 | (!btrfs_have_ordered_extents_in_range(inode, start, len) && | 2068 | (!btrfs_have_ordered_extents_in_range(inode, start, len) && |
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 0455ee2d9c89..45134a1519a6 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -9677,11 +9677,11 @@ out_fail: | |||
9677 | * allow the tasks to sync it. | 9677 | * allow the tasks to sync it. |
9678 | */ | 9678 | */ |
9679 | if (ret && (root_log_pinned || dest_log_pinned)) { | 9679 | if (ret && (root_log_pinned || dest_log_pinned)) { |
9680 | if (btrfs_inode_in_log(old_dir, fs_info->generation) || | 9680 | if (btrfs_inode_in_log(BTRFS_I(old_dir), fs_info->generation) || |
9681 | btrfs_inode_in_log(new_dir, fs_info->generation) || | 9681 | btrfs_inode_in_log(BTRFS_I(new_dir), fs_info->generation) || |
9682 | btrfs_inode_in_log(old_inode, fs_info->generation) || | 9682 | btrfs_inode_in_log(BTRFS_I(old_inode), fs_info->generation) || |
9683 | (new_inode && | 9683 | (new_inode && |
9684 | btrfs_inode_in_log(new_inode, fs_info->generation))) | 9684 | btrfs_inode_in_log(BTRFS_I(new_inode), fs_info->generation))) |
9685 | btrfs_set_log_full_commit(fs_info, trans); | 9685 | btrfs_set_log_full_commit(fs_info, trans); |
9686 | 9686 | ||
9687 | if (root_log_pinned) { | 9687 | if (root_log_pinned) { |
@@ -9953,11 +9953,11 @@ out_fail: | |||
9953 | * allow the tasks to sync it. | 9953 | * allow the tasks to sync it. |
9954 | */ | 9954 | */ |
9955 | if (ret && log_pinned) { | 9955 | if (ret && log_pinned) { |
9956 | if (btrfs_inode_in_log(old_dir, fs_info->generation) || | 9956 | if (btrfs_inode_in_log(BTRFS_I(old_dir), fs_info->generation) || |
9957 | btrfs_inode_in_log(new_dir, fs_info->generation) || | 9957 | btrfs_inode_in_log(BTRFS_I(new_dir), fs_info->generation) || |
9958 | btrfs_inode_in_log(old_inode, fs_info->generation) || | 9958 | btrfs_inode_in_log(BTRFS_I(old_inode), fs_info->generation) || |
9959 | (new_inode && | 9959 | (new_inode && |
9960 | btrfs_inode_in_log(new_inode, fs_info->generation))) | 9960 | btrfs_inode_in_log(BTRFS_I(new_inode), fs_info->generation))) |
9961 | btrfs_set_log_full_commit(fs_info, trans); | 9961 | btrfs_set_log_full_commit(fs_info, trans); |
9962 | 9962 | ||
9963 | btrfs_end_log_trans(root); | 9963 | btrfs_end_log_trans(root); |
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index 581d31171683..37adad5dabd6 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c | |||
@@ -5237,7 +5237,7 @@ process_leaf: | |||
5237 | goto next_dir_inode; | 5237 | goto next_dir_inode; |
5238 | } | 5238 | } |
5239 | 5239 | ||
5240 | if (btrfs_inode_in_log(di_inode, trans->transid)) { | 5240 | if (btrfs_inode_in_log(BTRFS_I(di_inode), trans->transid)) { |
5241 | iput(di_inode); | 5241 | iput(di_inode); |
5242 | break; | 5242 | break; |
5243 | } | 5243 | } |
@@ -5436,7 +5436,7 @@ static int btrfs_log_inode_parent(struct btrfs_trans_handle *trans, | |||
5436 | if (ret) | 5436 | if (ret) |
5437 | goto end_no_trans; | 5437 | goto end_no_trans; |
5438 | 5438 | ||
5439 | if (btrfs_inode_in_log(inode, trans->transid)) { | 5439 | if (btrfs_inode_in_log(BTRFS_I(inode), trans->transid)) { |
5440 | ret = BTRFS_NO_LOG_SYNC; | 5440 | ret = BTRFS_NO_LOG_SYNC; |
5441 | goto end_no_trans; | 5441 | goto end_no_trans; |
5442 | } | 5442 | } |