[GFS2] Update locking in log.c

Replace the lock_for_trans()/lock_for_flush() functions with an rwsem.
In fact the sd_log_flush_lock becomes an rwsem (the write part of it)
and is extended slightly to cover everything that the lock_for_flush()
used to cover. The read part of the lock is instead of lock_for_trans().

This corrects the races in the original code and reduces the code size.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c
index 2628bf3..5166455 100644
--- a/fs/gfs2/ops_fstype.c
+++ b/fs/gfs2/ops_fstype.c
@@ -88,8 +88,6 @@
 	mutex_init(&sdp->sd_quota_mutex);
 
 	spin_lock_init(&sdp->sd_log_lock);
-	init_waitqueue_head(&sdp->sd_log_trans_wq);
-	init_waitqueue_head(&sdp->sd_log_flush_wq);
 
 	INIT_LIST_HEAD(&sdp->sd_log_le_gl);
 	INIT_LIST_HEAD(&sdp->sd_log_le_buf);
@@ -101,7 +99,7 @@
 	INIT_LIST_HEAD(&sdp->sd_ail1_list);
 	INIT_LIST_HEAD(&sdp->sd_ail2_list);
 
-	mutex_init(&sdp->sd_log_flush_lock);
+	init_rwsem(&sdp->sd_log_flush_lock);
 	INIT_LIST_HEAD(&sdp->sd_log_flush_list);
 
 	INIT_LIST_HEAD(&sdp->sd_revoke_list);