]> Git Repo - linux.git/commit
Btrfs: wrap repeated code into scrub_blocked_if_needed()
authorWang Shilong <[email protected]>
Wed, 4 Dec 2013 13:16:53 +0000 (21:16 +0800)
committerChris Mason <[email protected]>
Tue, 28 Jan 2014 21:19:53 +0000 (13:19 -0800)
commitcb7ab02156e4ba999df90e9fa8e96107683586fd
tree3557996fdee5e02bfd5f921aa1522fa87f54687c
parent3cb0929ad24c95c5fd8f08eb41a702a65954b4c6
Btrfs: wrap repeated code into scrub_blocked_if_needed()

Just wrap same code into one function scrub_blocked_if_needed().

This make a change that we will move waiting (@workers_pending = 0)
before we can wake up commiting transaction(atomic_inc(@scrub_paused)),
we must take carefully to not deadlock here.

Thread 1 Thread 2
|->btrfs_commit_transaction()
|->set trans type(COMMIT_DOING)
|->btrfs_scrub_paused()(blocked)
|->join_transaction(blocked)

Move btrfs_scrub_paused() before setting trans type which means we can
still join a transaction when commiting_transaction is blocked.

Signed-off-by: Wang Shilong <[email protected]>
Suggested-by: Miao Xie <[email protected]>
Signed-off-by: Josef Bacik <[email protected]>
Signed-off-by: Chris Mason <[email protected]>
fs/btrfs/scrub.c
fs/btrfs/transaction.c
This page took 0.054043 seconds and 4 git commands to generate.