]> git.karo-electronics.de Git - karo-tx-linux.git/commit
Btrfs: fix race in sync and freeze again
authorJosef Bacik <jbacik@fusionio.com>
Fri, 14 Sep 2012 14:34:40 +0000 (10:34 -0400)
committerChris Mason <chris.mason@fusionio.com>
Mon, 1 Oct 2012 19:19:25 +0000 (15:19 -0400)
commitff62b8b6fc37216cd0d4bccf0fa0ef1c75469b0f
treef092200027e607d9a748e81487f060be843259cb
parent71bdcbe91746937689d0667217a211aef996b8c3
Btrfs: fix race in sync and freeze again

I screwed this up, there is a race between checking if there is a running
transaction and actually starting a transaction in sync where we could race
with a freezer and get ourselves into trouble.  To fix this we need to make
a new join type to only do the try lock on the freeze stuff.  If it fails
we'll return EPERM and just return from sync.  This fixes a hang Liu Bo
reported when running xfstest 68 in a loop.  Thanks,

Reported-by: Liu Bo <bo.li.liu@oracle.com>
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
fs/btrfs/super.c
fs/btrfs/transaction.c
fs/btrfs/transaction.h