diff options
Diffstat (limited to 'fs/btrfs/tree-log.c')
| -rw-r--r-- | fs/btrfs/tree-log.c | 5 | 
1 files changed, 5 insertions, 0 deletions
| diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index 920cee312f4e..cd5348f352dd 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c @@ -169,6 +169,7 @@ static int start_log_trans(struct btrfs_trans_handle *trans,  		if (ret)  			goto out; +		set_bit(BTRFS_ROOT_HAS_LOG_TREE, &root->state);  		clear_bit(BTRFS_ROOT_MULTI_LOG_TASKS, &root->state);  		root->log_start_pid = current->pid;  	} @@ -195,6 +196,9 @@ static int join_running_log_trans(struct btrfs_root *root)  {  	int ret = -ENOENT; +	if (!test_bit(BTRFS_ROOT_HAS_LOG_TREE, &root->state)) +		return ret; +  	mutex_lock(&root->log_mutex);  	if (root->log_root) {  		ret = 0; @@ -3303,6 +3307,7 @@ int btrfs_free_log(struct btrfs_trans_handle *trans, struct btrfs_root *root)  	if (root->log_root) {  		free_log_tree(trans, root->log_root);  		root->log_root = NULL; +		clear_bit(BTRFS_ROOT_HAS_LOG_TREE, &root->state);  	}  	return 0;  } | 
