]> git.baikalelectronics.ru Git - kernel.git/commit
Btrfs: fix locking in btrfs_destroy_delayed_refs
authorJosef Bacik <josef@redhat.com>
Thu, 31 May 2012 15:06:33 +0000 (11:06 -0400)
committerChris Mason <chris.mason@oracle.com>
Fri, 15 Jun 2012 01:29:11 +0000 (21:29 -0400)
commitf2ddf0d4acb458679426733425760235730fbec9
tree231ff204d260f0d50b8789029937750d7d4f8952
parent3a17be7dcd00b598b7c878b8855e98f5db3a9df2
Btrfs: fix locking in btrfs_destroy_delayed_refs

The transaction abort stuff was throwing warnings from the list debugging
code because we do a list_del_init outside of the delayed_refs spin lock.
The delayed refs locking makes baby Jesus cry so it's not hard to get wrong,
but we need to take the ref head mutex to make sure it's not being processed
currently, and so if it is we need to drop the spin lock and then take and
drop the mutex and do the search again.  If we can take the mutex then we
can safely remove the head from the list and carry on.  Now when the
transaction aborts I don't get the list debugging warnings.  Thanks,

Signed-off-by: Josef Bacik <josef@redhat.com>
fs/btrfs/disk-io.c