Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 46c4e71e authored by Filipe Manana's avatar Filipe Manana Committed by Chris Mason
Browse files

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: default avatarFilipe David Borba Manana <fdmanana@gmail.com>
Signed-off-by: default avatarChris Mason <clm@fb.com>
parent c39aa705
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -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++;