diff options
Diffstat (limited to 'fs/btrfs/delayed-inode.c')
-rw-r--r-- | fs/btrfs/delayed-inode.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c index 335605c8ceab..07d5eeb1e6f1 100644 --- a/fs/btrfs/delayed-inode.c +++ b/fs/btrfs/delayed-inode.c | |||
@@ -512,8 +512,8 @@ static void __btrfs_remove_delayed_item(struct btrfs_delayed_item *delayed_item) | |||
512 | 512 | ||
513 | rb_erase(&delayed_item->rb_node, root); | 513 | rb_erase(&delayed_item->rb_node, root); |
514 | delayed_item->delayed_node->count--; | 514 | delayed_item->delayed_node->count--; |
515 | atomic_dec(&delayed_root->items); | 515 | if (atomic_dec_return(&delayed_root->items) < |
516 | if (atomic_read(&delayed_root->items) < BTRFS_DELAYED_BACKGROUND && | 516 | BTRFS_DELAYED_BACKGROUND && |
517 | waitqueue_active(&delayed_root->wait)) | 517 | waitqueue_active(&delayed_root->wait)) |
518 | wake_up(&delayed_root->wait); | 518 | wake_up(&delayed_root->wait); |
519 | } | 519 | } |
@@ -1028,9 +1028,10 @@ do_again: | |||
1028 | btrfs_release_delayed_item(prev); | 1028 | btrfs_release_delayed_item(prev); |
1029 | ret = 0; | 1029 | ret = 0; |
1030 | btrfs_release_path(path); | 1030 | btrfs_release_path(path); |
1031 | if (curr) | 1031 | if (curr) { |
1032 | mutex_unlock(&node->mutex); | ||
1032 | goto do_again; | 1033 | goto do_again; |
1033 | else | 1034 | } else |
1034 | goto delete_fail; | 1035 | goto delete_fail; |
1035 | } | 1036 | } |
1036 | 1037 | ||
@@ -1055,8 +1056,7 @@ static void btrfs_release_delayed_inode(struct btrfs_delayed_node *delayed_node) | |||
1055 | delayed_node->count--; | 1056 | delayed_node->count--; |
1056 | 1057 | ||
1057 | delayed_root = delayed_node->root->fs_info->delayed_root; | 1058 | delayed_root = delayed_node->root->fs_info->delayed_root; |
1058 | atomic_dec(&delayed_root->items); | 1059 | if (atomic_dec_return(&delayed_root->items) < |
1059 | if (atomic_read(&delayed_root->items) < | ||
1060 | BTRFS_DELAYED_BACKGROUND && | 1060 | BTRFS_DELAYED_BACKGROUND && |
1061 | waitqueue_active(&delayed_root->wait)) | 1061 | waitqueue_active(&delayed_root->wait)) |
1062 | wake_up(&delayed_root->wait); | 1062 | wake_up(&delayed_root->wait); |