Josef Bacik 81317fdedd Btrfs: fix deadlock when throttling transactions
Hit this nice little deadlock.  What happens is this

__btrfs_end_transaction with throttle set, --use_count so it equals 0
  btrfs_commit_transaction
    <somebody else actually manages to start the commit>
    btrfs_end_transaction --use_count so now its -1 <== BAD
      we just return and wait on the transaction

This is bad because we just return after our use_count is -1 and don't let go
of our num_writer count on the transaction, so the guy committing the
transaction just sits there forever.  Fix this by inc'ing our use_count if we're
going to call commit_transaction so that if we call btrfs_end_transaction it's
valid.  Thanks,

Signed-off-by: Josef Bacik <josef@redhat.com>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2011-07-27 12:46:46 -04:00
..
2008-09-25 11:04:06 -04:00
2011-05-26 17:52:15 -04:00
2010-12-22 23:15:47 +08:00
2011-05-06 12:34:03 +02:00
2011-05-06 12:34:03 +02:00
2011-05-06 12:34:03 +02:00
2011-05-06 12:34:03 +02:00
2011-06-17 14:54:18 -04:00
2011-05-28 07:00:39 -04:00