[GFS2] Remove uneeded memory allocation

For every filesystem operation where we need a transaction, we
now make one less memory allocation.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
diff --git a/fs/gfs2/trans.c b/fs/gfs2/trans.c
index 2cce68a..5d1f4a1 100644
--- a/fs/gfs2/trans.c
+++ b/fs/gfs2/trans.c
@@ -53,18 +53,15 @@
 						   sizeof(uint64_t));
 	INIT_LIST_HEAD(&tr->tr_list_buf);
 
-	error = -ENOMEM;
-	tr->tr_t_gh = gfs2_holder_get(sdp->sd_trans_gl, LM_ST_SHARED,
-				      GL_NEVER_RECURSE, GFP_NOFS);
-	if (!tr->tr_t_gh)
-		goto fail;
+	gfs2_holder_init(sdp->sd_trans_gl, LM_ST_SHARED,
+			 GL_NEVER_RECURSE, &tr->tr_t_gh);
 
-	error = gfs2_glock_nq(tr->tr_t_gh);
+	error = gfs2_glock_nq(&tr->tr_t_gh);
 	if (error)
-		goto fail_holder_put;
+		goto fail_holder_uninit;
 
 	if (!test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags)) {
-		tr->tr_t_gh->gh_flags |= GL_NOCACHE;
+		tr->tr_t_gh.gh_flags |= GL_NOCACHE;
 		error = -EROFS;
 		goto fail_gunlock;
 	}
@@ -78,12 +75,10 @@
 	return 0;
 
  fail_gunlock:
-	gfs2_glock_dq(tr->tr_t_gh);
+	gfs2_glock_dq(&tr->tr_t_gh);
 
- fail_holder_put:
-	gfs2_holder_put(tr->tr_t_gh);
-
- fail:
+ fail_holder_uninit:
+	gfs2_holder_uninit(&tr->tr_t_gh);
 	kfree(tr);
 
 	return error;
@@ -100,16 +95,15 @@
 	if (gfs2_assert_warn(sdp, tr))
 		return;
 
-	t_gh = tr->tr_t_gh;
-	tr->tr_t_gh = NULL;
+	t_gh = &tr->tr_t_gh;
 
 	if (!tr->tr_touched) {
 		gfs2_log_release(sdp, tr->tr_reserved);
-		kfree(tr);
 
 		gfs2_glock_dq(t_gh);
-		gfs2_holder_put(t_gh);
+		gfs2_holder_uninit(t_gh);
 
+		kfree(tr);
 		return;
 	}
 
@@ -127,7 +121,7 @@
 	gfs2_log_commit(sdp, tr);
 
 	gfs2_glock_dq(t_gh);
-	gfs2_holder_put(t_gh);
+	gfs2_holder_uninit(t_gh);
 
 	if (sdp->sd_vfs->s_flags & MS_SYNCHRONOUS)
 		gfs2_log_flush(sdp);