]> git.baikalelectronics.ru Git - kernel.git/commit
btrfs: Add assert to catch nested transaction commit
authorNikolay Borisov <nborisov@suse.com>
Thu, 12 Sep 2019 15:31:44 +0000 (18:31 +0300)
committerDavid Sterba <dsterba@suse.com>
Mon, 18 Nov 2019 11:46:45 +0000 (12:46 +0100)
commit82c8b403c0acbd8bafaea8d01d1e38226e42289d
treea90493ed1cccd891f51de349afd2ec4c8ca09a93
parentaea72f30785499d70cdced9f5d3a17e22b9fd847
btrfs: Add assert to catch nested transaction commit

A recent patch to btrfs showed that there was at least 1 case where a
nested transaction was committed. Nested transaction in this case means
a code which has a transaction handle calls some function which in turn
obtains a copy of the same transaction handle. In such cases the correct
thing to do is for the lower callee to call btrfs_end_transaction which
contains appropriate checks so as to not commit the transaction which
will result in stale trans handler for the caller.

To catch such cases add an assert in btrfs_commit_transaction ensuring
btrfs_trans_handle::use_count is always 1.

Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/transaction.c