summaryrefslogtreecommitdiff
path: root/fs/gfs2
diff options
context:
space:
mode:
authorSteven Whitehouse <swhiteho@redhat.com>2009-05-13 10:56:52 +0100
committerSteven Whitehouse <swhiteho@redhat.com>2009-05-13 10:56:52 +0100
commita1c0643ff9f360a30644f6e3cd643ca2a5083aea (patch)
treeca4c33e1a078b905374e67d424ef51927875d3cc /fs/gfs2
parent7537d81aa7b7cd31b0caeac8091456e93d96fa8d (diff)
downloadlinux-3.10-a1c0643ff9f360a30644f6e3cd643ca2a5083aea.tar.gz
linux-3.10-a1c0643ff9f360a30644f6e3cd643ca2a5083aea.tar.bz2
linux-3.10-a1c0643ff9f360a30644f6e3cd643ca2a5083aea.zip
GFS2: Move journal live test at transaction start
There seems little point grabbing the transaction glock only to have to release it again if the journal isn't live. This moves the test earlier to avoid grabbing the lock when we don't need it in the first place. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2')
-rw-r--r--fs/gfs2/trans.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/fs/gfs2/trans.c b/fs/gfs2/trans.c
index 053752d4b27..4ef0e9fa354 100644
--- a/fs/gfs2/trans.c
+++ b/fs/gfs2/trans.c
@@ -33,6 +33,9 @@ int gfs2_trans_begin(struct gfs2_sbd *sdp, unsigned int blocks,
BUG_ON(current->journal_info);
BUG_ON(blocks == 0 && revokes == 0);
+ if (!test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags))
+ return -EROFS;
+
tr = kzalloc(sizeof(struct gfs2_trans), GFP_NOFS);
if (!tr)
return -ENOMEM;
@@ -54,12 +57,6 @@ int gfs2_trans_begin(struct gfs2_sbd *sdp, unsigned int blocks,
if (error)
goto fail_holder_uninit;
- if (!test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags)) {
- tr->tr_t_gh.gh_flags |= GL_NOCACHE;
- error = -EROFS;
- goto fail_gunlock;
- }
-
error = gfs2_log_reserve(sdp, tr->tr_reserved);
if (error)
goto fail_gunlock;