Btrfs: use FLUSH_LIMIT for relocation in reserve_metadata_bytes
authorJosef Bacik <jbacik@fb.com>
Fri, 27 May 2016 17:24:13 +0000 (13:24 -0400)
committerDavid Sterba <dsterba@suse.com>
Thu, 7 Jul 2016 16:45:53 +0000 (18:45 +0200)
commit8ca17f0f59529df9e2132ca594ff00c52a9bc556
tree52539f2d8ab37e71a6115cc1dab18ed2aeaa101c
parentac2fabac4211431b607b326c2233e73b81e86af2
Btrfs: use FLUSH_LIMIT for relocation in reserve_metadata_bytes

We used to allow you to set FLUSH_ALL and then just wouldn't do things like
commit transactions or wait on ordered extents if we noticed you were in a
transaction.  However now that all the flushing for FLUSH_ALL is asynchronous
we've lost the ability to tell, and we could end up deadlocking.  So instead use
FLUSH_LIMIT in reserve_metadata_bytes in relocation and then return -EAGAIN if
we error out to preserve the previous behavior.  I've also added an ASSERT() to
catch anybody else who tries to do this.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent-tree.c
fs/btrfs/relocation.c