mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
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>
This commit is contained in:
parent
7537d81aa7
commit
a1c0643ff9
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user