Skip to content

Commit c860f8f

Browse files
AstralBobAndreas Gruenbacher
authored andcommitted
gfs2: The freeze glock should never be frozen
Before this patch, some gfs2 code locked the freeze glock with LM_FLAG_NOEXP (Do not freeze) flag, and some did not. We never want to freeze the freeze glock, so this patch makes it consistently use LM_FLAG_NOEXP always. Signed-off-by: Bob Peterson <[email protected]>
1 parent 623ba66 commit c860f8f

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

fs/gfs2/ops_fstype.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1140,7 +1140,8 @@ static int gfs2_fill_super(struct super_block *sb, struct fs_context *fc)
11401140
struct gfs2_holder freeze_gh;
11411141

11421142
error = gfs2_glock_nq_init(sdp->sd_freeze_gl, LM_ST_SHARED,
1143-
GL_EXACT, &freeze_gh);
1143+
LM_FLAG_NOEXP | GL_EXACT,
1144+
&freeze_gh);
11441145
if (error) {
11451146
fs_err(sdp, "can't make FS RO: %d\n", error);
11461147
goto fail_per_node;

fs/gfs2/super.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,8 @@ int gfs2_make_fs_rw(struct gfs2_sbd *sdp)
167167
if (error)
168168
return error;
169169

170-
error = gfs2_glock_nq_init(sdp->sd_freeze_gl, LM_ST_SHARED, GL_EXACT,
170+
error = gfs2_glock_nq_init(sdp->sd_freeze_gl, LM_ST_SHARED,
171+
LM_FLAG_NOEXP | GL_EXACT,
171172
&freeze_gh);
172173
if (error)
173174
goto fail_threads;
@@ -429,7 +430,7 @@ static int gfs2_lock_fs_check_clean(struct gfs2_sbd *sdp)
429430
}
430431

431432
error = gfs2_glock_nq_init(sdp->sd_freeze_gl, LM_ST_EXCLUSIVE,
432-
0, &sdp->sd_freeze_gh);
433+
LM_FLAG_NOEXP, &sdp->sd_freeze_gh);
433434
if (error)
434435
goto out;
435436

@@ -612,14 +613,15 @@ int gfs2_make_fs_ro(struct gfs2_sbd *sdp)
612613
!gfs2_glock_is_locked_by_me(sdp->sd_freeze_gl)) {
613614
if (!log_write_allowed) {
614615
error = gfs2_glock_nq_init(sdp->sd_freeze_gl,
615-
LM_ST_SHARED,
616-
LM_FLAG_TRY | GL_EXACT,
616+
LM_ST_SHARED, LM_FLAG_TRY |
617+
LM_FLAG_NOEXP | GL_EXACT,
617618
&freeze_gh);
618619
if (error == GLR_TRYFAILED)
619620
error = 0;
620621
} else {
621622
error = gfs2_glock_nq_init(sdp->sd_freeze_gl,
622-
LM_ST_SHARED, GL_EXACT,
623+
LM_ST_SHARED,
624+
LM_FLAG_NOEXP | GL_EXACT,
623625
&freeze_gh);
624626
if (error && !gfs2_withdrawn(sdp))
625627
return error;
@@ -761,8 +763,8 @@ void gfs2_freeze_func(struct work_struct *work)
761763
struct super_block *sb = sdp->sd_vfs;
762764

763765
atomic_inc(&sb->s_active);
764-
error = gfs2_glock_nq_init(sdp->sd_freeze_gl, LM_ST_SHARED, GL_EXACT,
765-
&freeze_gh);
766+
error = gfs2_glock_nq_init(sdp->sd_freeze_gl, LM_ST_SHARED,
767+
LM_FLAG_NOEXP | GL_EXACT, &freeze_gh);
766768
if (error) {
767769
fs_info(sdp, "GFS2: couldn't get freeze lock : %d\n", error);
768770
gfs2_assert_withdraw(sdp, 0);

0 commit comments

Comments
 (0)