diff --git a/[refs] b/[refs] index fa3e8294f86d..908d18dc846c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c9a9dbf2cbd1641af49bf081ca3bbe4101df3991 +refs/heads/master: cf79ffb5b79e8a2b587fbf218809e691bb396c98 diff --git a/trunk/fs/btrfs/super.c b/trunk/fs/btrfs/super.c index c3254c995fc8..88f812eddff6 100644 --- a/trunk/fs/btrfs/super.c +++ b/trunk/fs/btrfs/super.c @@ -161,10 +161,9 @@ void __btrfs_std_error(struct btrfs_fs_info *fs_info, const char *function, } /* Don't go through full error handling during mount */ - if (sb->s_flags & MS_BORN) { - save_error_info(fs_info); + save_error_info(fs_info); + if (sb->s_flags & MS_BORN) btrfs_handle_error(fs_info); - } } static const char * const logtypes[] = { diff --git a/trunk/fs/btrfs/transaction.c b/trunk/fs/btrfs/transaction.c index 9940fd90a958..a5764aeb4549 100644 --- a/trunk/fs/btrfs/transaction.c +++ b/trunk/fs/btrfs/transaction.c @@ -1487,6 +1487,10 @@ static void cleanup_transaction(struct btrfs_trans_handle *trans, current->journal_info = NULL; kmem_cache_free(btrfs_trans_handle_cachep, trans); + + spin_lock(&root->fs_info->trans_lock); + root->fs_info->trans_no_join = 0; + spin_unlock(&root->fs_info->trans_lock); } static int btrfs_flush_all_pending_stuffs(struct btrfs_trans_handle *trans,