Btrfs: unpin logs if rename exchange operation fails
authorFilipe Manana <fdmanana@suse.com>
Thu, 5 May 2016 01:02:27 +0000 (02:02 +0100)
committerFilipe Manana <fdmanana@suse.com>
Fri, 13 May 2016 00:59:26 +0000 (01:59 +0100)
commit86e8aa0e772caba5f0e0471d5f836b2b997dcb3e
tree6de82edb458fd5928ed52fb9b70b3bcc07f3128b
parentc990161888f387db136856337c237aa8d5003292
Btrfs: unpin logs if rename exchange operation fails

If rename exchange operations fail at some point after we pinned any of
the logs, we end up aborting the current transaction but never unpin the
logs, which leaves concurrent tasks that are trying to sync the logs (as
part of an fsync request from user space) blocked forever and preventing
the filesystem from being unmountable.

Fix this by safely unpinning the log.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
fs/btrfs/inode.c