On Fri, Oct 26, 2018 at 9:16 AM <fdman...@kernel.org> wrote:
>
> From: Filipe Manana <fdman...@suse.com>
>
> Tracking pending ordered extents per transaction was introduced in commit
> 50d9aa99bd35 ("Btrfs: make sure logged extents complete in the current
> transaction V3") and later updated in commit 161c3549b45a ("Btrfs: change
> how we wait for pending ordered extents").
>
> However now that on fsync we always wait for ordered extents to complete
> before logging, done in commit 5636cf7d6dc8 ("btrfs: remove the logged
> extents infrastructure"), we no longer need the stuff to track for pending
> ordered extents, which was not completely removed in the mentioned commit.
> So remove the remaining of the pending ordered extents infrastructure.
>

Reviewed-by: Liu Bo <bo....@linux.alibaba.com>

thanks,
liubo

> Signed-off-by: Filipe Manana <fdman...@suse.com>
> ---
>  fs/btrfs/ordered-data.c | 30 ------------------------------
>  fs/btrfs/ordered-data.h |  2 --
>  fs/btrfs/transaction.c  | 11 -----------
>  fs/btrfs/transaction.h  |  2 --
>  4 files changed, 45 deletions(-)
>
> diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
> index 0c4ef208b8b9..6fde2b2741ef 100644
> --- a/fs/btrfs/ordered-data.c
> +++ b/fs/btrfs/ordered-data.c
> @@ -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--;
> diff --git a/fs/btrfs/ordered-data.h b/fs/btrfs/ordered-data.h
> index 02d813aaa261..b10e6765d88f 100644
> --- a/fs/btrfs/ordered-data.h
> +++ b/fs/btrfs/ordered-data.h
> @@ -56,8 +56,6 @@ struct btrfs_ordered_sum {
>                                        * the isize. */
>  #define BTRFS_ORDERED_TRUNCATED 8 /* Set when we have to truncate an extent 
> */
>
> -#define BTRFS_ORDERED_PENDING 9 /* We are waiting for this ordered extent to
> -                                 * complete in the current transaction. */
>  #define BTRFS_ORDERED_REGULAR 10 /* Regular IO for COW */
>
>  struct btrfs_ordered_extent {
> diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
> index 3b84f5015029..2fe6c2b1d94b 100644
> --- a/fs/btrfs/transaction.c
> +++ b/fs/btrfs/transaction.c
> @@ -232,14 +232,12 @@ static noinline int join_transaction(struct 
> btrfs_fs_info *fs_info,
>         extwriter_counter_init(cur_trans, type);
>         init_waitqueue_head(&cur_trans->writer_wait);
>         init_waitqueue_head(&cur_trans->commit_wait);
> -       init_waitqueue_head(&cur_trans->pending_wait);
>         cur_trans->state = TRANS_STATE_RUNNING;
>         /*
>          * One for this trans handle, one so it will live on until we
>          * commit the transaction.
>          */
>         refcount_set(&cur_trans->use_count, 2);
> -       atomic_set(&cur_trans->pending_ordered, 0);
>         cur_trans->flags = 0;
>         cur_trans->start_time = ktime_get_seconds();
>
> @@ -1908,13 +1906,6 @@ static inline void btrfs_wait_delalloc_flush(struct 
> btrfs_fs_info *fs_info)
>                 btrfs_wait_ordered_roots(fs_info, U64_MAX, 0, (u64)-1);
>  }
>
> -static inline void
> -btrfs_wait_pending_ordered(struct btrfs_transaction *cur_trans)
> -{
> -       wait_event(cur_trans->pending_wait,
> -                  atomic_read(&cur_trans->pending_ordered) == 0);
> -}
> -
>  int btrfs_commit_transaction(struct btrfs_trans_handle *trans)
>  {
>         struct btrfs_fs_info *fs_info = trans->fs_info;
> @@ -2049,8 +2040,6 @@ int btrfs_commit_transaction(struct btrfs_trans_handle 
> *trans)
>
>         btrfs_wait_delalloc_flush(fs_info);
>
> -       btrfs_wait_pending_ordered(cur_trans);
> -
>         btrfs_scrub_pause(fs_info);
>         /*
>          * Ok now we need to make sure to block out any other joins while we
> diff --git a/fs/btrfs/transaction.h b/fs/btrfs/transaction.h
> index 4cbb1b55387d..703d5116a2fc 100644
> --- a/fs/btrfs/transaction.h
> +++ b/fs/btrfs/transaction.h
> @@ -39,7 +39,6 @@ struct btrfs_transaction {
>          */
>         atomic_t num_writers;
>         refcount_t use_count;
> -       atomic_t pending_ordered;
>
>         unsigned long flags;
>
> @@ -51,7 +50,6 @@ struct btrfs_transaction {
>         time64_t start_time;
>         wait_queue_head_t writer_wait;
>         wait_queue_head_t commit_wait;
> -       wait_queue_head_t pending_wait;
>         struct list_head pending_snapshots;
>         struct list_head pending_chunks;
>         struct list_head switch_commits;
> --
> 2.11.0
>

Reply via email to