btrfs: wakeup cleaner thread when adding delayed iput
[sfrench/cifs-2.6.git] / fs / btrfs / ordered-data.c
index 0c4ef208b8b91cc54c934d25960b41522c438e54..6fde2b2741ef13b2bdabfac4ad29937d7e784afa 100644 (file)
@@ -460,7 +460,6 @@ void btrfs_remove_ordered_extent(struct inode *inode,
        struct btrfs_inode *btrfs_inode = BTRFS_I(inode);
        struct btrfs_root *root = btrfs_inode->root;
        struct rb_node *node;
-       bool dec_pending_ordered = false;
 
        /* This is paired with btrfs_add_ordered_extent. */
        spin_lock(&btrfs_inode->lock);
@@ -477,37 +476,8 @@ void btrfs_remove_ordered_extent(struct inode *inode,
        if (tree->last == node)
                tree->last = NULL;
        set_bit(BTRFS_ORDERED_COMPLETE, &entry->flags);
-       if (test_and_clear_bit(BTRFS_ORDERED_PENDING, &entry->flags))
-               dec_pending_ordered = true;
        spin_unlock_irq(&tree->lock);
 
-       /*
-        * The current running transaction is waiting on us, we need to let it
-        * know that we're complete and wake it up.
-        */
-       if (dec_pending_ordered) {
-               struct btrfs_transaction *trans;
-
-               /*
-                * The checks for trans are just a formality, it should be set,
-                * but if it isn't we don't want to deref/assert under the spin
-                * lock, so be nice and check if trans is set, but ASSERT() so
-                * if it isn't set a developer will notice.
-                */
-               spin_lock(&fs_info->trans_lock);
-               trans = fs_info->running_transaction;
-               if (trans)
-                       refcount_inc(&trans->use_count);
-               spin_unlock(&fs_info->trans_lock);
-
-               ASSERT(trans);
-               if (trans) {
-                       if (atomic_dec_and_test(&trans->pending_ordered))
-                               wake_up(&trans->pending_wait);
-                       btrfs_put_transaction(trans);
-               }
-       }
-
        spin_lock(&root->ordered_extent_lock);
        list_del_init(&entry->root_extent_list);
        root->nr_ordered_extents--;