[GFS2] Update debugging code

Update the debugging code in trans.c and at the same time improve
the debugging code for gfs2_holders. The new code should be pretty
fast during the normal case and provide just as much information
in case of errors (or more).

One small function from glock.c has moved to glock.h as a static inline so
that its return address won't get in the way of the debugging.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
index 81b0681..6a1b42c 100644
--- a/fs/gfs2/glock.c
+++ b/fs/gfs2/glock.c
@@ -16,6 +16,7 @@
 #include <linux/sort.h>
 #include <linux/jhash.h>
 #include <linux/kref.h>
+#include <linux/kallsyms.h>
 #include <linux/gfs2_ondisk.h>
 #include <asm/semaphore.h>
 #include <asm/uaccess.h>
@@ -357,6 +358,7 @@
 {
 	INIT_LIST_HEAD(&gh->gh_list);
 	gh->gh_gl = gl;
+	gh->gh_ip = (unsigned long)__builtin_return_address(0);
 	gh->gh_owner = (flags & GL_NEVER_RECURSE) ? NULL : current;
 	gh->gh_state = state;
 	gh->gh_flags = flags;
@@ -388,6 +390,7 @@
 		gh->gh_flags |= GL_LOCAL_EXCL;
 
 	gh->gh_iflags &= 1 << HIF_ALLOCED;
+	gh->gh_ip = (unsigned long)__builtin_return_address(0);
 }
 
 /**
@@ -400,6 +403,7 @@
 {
 	gfs2_glock_put(gh->gh_gl);
 	gh->gh_gl = NULL;
+	gh->gh_ip = 0;
 }
 
 /**
@@ -427,7 +431,7 @@
 
 	gfs2_holder_init(gl, state, flags, gh);
 	set_bit(HIF_ALLOCED, &gh->gh_iflags);
-
+	gh->gh_ip = (unsigned long)__builtin_return_address(0);
 	return gh;
 }
 
@@ -1238,6 +1242,9 @@
 	return 0;
 
  fail:
+	print_symbol(KERN_WARNING "GFS2: Existing holder from %s\n",
+		     existing->gh_ip);
+	print_symbol(KERN_WARNING "GFS2: New holder from %s\n", new->gh_ip);
 	set_bit(HIF_ABORTED, &new->gh_iflags);
 	return -EINVAL;
 }
@@ -1544,30 +1551,6 @@
 }
 
 /**
- * gfs2_glock_nq_init - intialize a holder and enqueue it on a glock
- * @gl: the glock
- * @state: the state we're requesting
- * @flags: the modifier flags
- * @gh: the holder structure
- *
- * Returns: 0, GLR_*, or errno
- */
-
-int gfs2_glock_nq_init(struct gfs2_glock *gl, unsigned int state, int flags,
-		       struct gfs2_holder *gh)
-{
-	int error;
-
-	gfs2_holder_init(gl, state, flags, gh);
-
-	error = gfs2_glock_nq(gh);
-	if (error)
-		gfs2_holder_uninit(gh);
-
-	return error;
-}
-
-/**
  * gfs2_glock_dq_uninit - dequeue a holder from a glock and initialize it
  * @gh: the holder structure
  *
@@ -2334,6 +2317,7 @@
 		if (test_bit(x, &gh->gh_iflags))
 			printk(" %u", x);
 	printk(" \n");
+	print_symbol(KERN_INFO "    initialized at: %s\n", gh->gh_ip);
 
 	error = 0;