]> git.baikalelectronics.ru Git - kernel.git/commit
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)
commit721de51948bfb5246576a779a3ff81788ac0fb21
tree6de82edb458fd5928ed52fb9b70b3bcc07f3128b
parent217845674038d79cc0af30fd118d782bf048ff2d
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