Btrfs: output more information when aborting a unused transaction handle
authorMiao Xie <miaox@cn.fujitsu.com>
Thu, 6 Sep 2012 10:04:44 +0000 (04:04 -0600)
committerChris Mason <chris.mason@fusionio.com>
Mon, 1 Oct 2012 19:19:13 +0000 (15:19 -0400)
Though we dump the stack information when aborting a unused transaction
handle, we don't know the correct place where we decide to abort the
transaction handle if one function has several place where the transaction
abort function is invoked and jumps to the same place after this call.
And beside that we also don't know the reason why we jump to abort
the current handle. So I modify the transaction abort function and make
it output the function name, line and error information.

Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
fs/btrfs/super.c

index 06ff1dd0f9b7a30bbab3571487e70d93e2334e82..867e8e799dea84a7e7d7ed85ea0fffc00c7c95d1 100644 (file)
@@ -248,7 +248,13 @@ void __btrfs_abort_transaction(struct btrfs_trans_handle *trans,
        /* Nothing used. The other threads that have joined this
         * transaction may be able to continue. */
        if (!trans->blocks_used) {
-               btrfs_printk(root->fs_info, "Aborting unused transaction.\n");
+               char nbuf[16];
+               const char *errstr;
+
+               errstr = btrfs_decode_error(root->fs_info, errno, nbuf);
+               btrfs_printk(root->fs_info,
+                            "%s:%d: Aborting unused transaction(%s).\n",
+                            function, line, errstr);
                return;
        }
        trans->transaction->aborted = errno;