Commit 2e60d7683c8d ("GFS2: update freeze code to use freeze/thaw_super
on all nodes") optimized away the sb_start_intwrite ... sb_end_intwrite
protection for the on-stack transactions in gfs2_ail_empty_gl with no
explanation.  I can't think of a valid reason for doing that, so revert
that change.  This simplifies the next commit.

Signed-off-by: Andreas Gruenbacher <[email protected]>
---
 fs/gfs2/glops.c | 5 ++++-
 fs/gfs2/trans.c | 8 +++-----
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c
index 3faa421568b0..fd1f52fff170 100644
--- a/fs/gfs2/glops.c
+++ b/fs/gfs2/glops.c
@@ -127,9 +127,12 @@ static int gfs2_ail_empty_gl(struct gfs2_glock *gl)
          * on the stack */
        tr.tr_reserved = 1 + gfs2_struct2blk(sdp, tr.tr_revokes);
        tr.tr_ip = _RET_IP_;
+       sb_start_intwrite(sdp->sd_vfs);
        ret = gfs2_log_reserve(sdp, tr.tr_reserved);
-       if (ret < 0)
+       if (ret < 0) {
+               sb_end_intwrite(sdp->sd_vfs);
                return ret;
+       }
        WARN_ON_ONCE(current->journal_info);
        current->journal_info = &tr;
 
diff --git a/fs/gfs2/trans.c b/fs/gfs2/trans.c
index 7705f04621f4..ae040b570868 100644
--- a/fs/gfs2/trans.c
+++ b/fs/gfs2/trans.c
@@ -98,10 +98,9 @@ void gfs2_trans_end(struct gfs2_sbd *sdp)
 
        if (!test_bit(TR_TOUCHED, &tr->tr_flags)) {
                gfs2_log_release(sdp, tr->tr_reserved);
-               if (alloced) {
+               if (alloced)
                        gfs2_trans_free(sdp, tr);
-                       sb_end_intwrite(sdp->sd_vfs);
-               }
+               sb_end_intwrite(sdp->sd_vfs);
                return;
        }
 
@@ -121,8 +120,7 @@ void gfs2_trans_end(struct gfs2_sbd *sdp)
        if (sdp->sd_vfs->s_flags & SB_SYNCHRONOUS)
                gfs2_log_flush(sdp, NULL, GFS2_LOG_HEAD_FLUSH_NORMAL |
                               GFS2_LFC_TRANS_END);
-       if (alloced)
-               sb_end_intwrite(sdp->sd_vfs);
+       sb_end_intwrite(sdp->sd_vfs);
 }
 
 static struct gfs2_bufdata *gfs2_alloc_bufdata(struct gfs2_glock *gl,
-- 
2.26.2

Reply via email to