diff options
author | Filipe Manana <fdmanana@gmail.com> | 2014-06-24 17:48:28 +0100 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2014-06-28 13:48:46 -0700 |
commit | 46c4e71e9b02a649c722f06569f5b6575da02dba (patch) | |
tree | 9e4d947c41be9ed97076a630bd80a6e7dcfba2b8 /fs/btrfs/transaction.c | |
parent | c39aa7056f50fa7b49265ea35c0f3eddb7c7be68 (diff) | |
download | lwn-46c4e71e9b02a649c722f06569f5b6575da02dba.tar.gz lwn-46c4e71e9b02a649c722f06569f5b6575da02dba.zip |
Btrfs: assert send doesn't attempt to start transactions
When starting a transaction just assert that current->journal_info
doesn't contain a send transaction stub, since send isn't supposed
to start transactions and when it finishes (either successfully or
not) it's supposed to set current->journal_info to NULL.
This is motivated by the change titled:
Btrfs: fix crash when starting transaction
Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'fs/btrfs/transaction.c')
-rw-r--r-- | fs/btrfs/transaction.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c index 511839c04f11..a32ad65b6cdc 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c @@ -386,11 +386,13 @@ start_transaction(struct btrfs_root *root, u64 num_items, unsigned int type, bool reloc_reserved = false; int ret; + /* Send isn't supposed to start transactions. */ + ASSERT(current->journal_info != (void *)BTRFS_SEND_TRANS_STUB); + if (test_bit(BTRFS_FS_STATE_ERROR, &root->fs_info->fs_state)) return ERR_PTR(-EROFS); - if (current->journal_info && - current->journal_info != (void *)BTRFS_SEND_TRANS_STUB) { + if (current->journal_info) { WARN_ON(type & TRANS_EXTWRITERS); h = current->journal_info; h->use_count++; |