Skip to content

Commit 8e29be3

Browse files
committed
Merge tag 'gfs2-v5.12-rc2-fixes2' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2
Pull gfs2 fixes from Andreas Gruenbacher: "Two more gfs2 fixes" * tag 'gfs2-v5.12-rc2-fixes2' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2: gfs2: report "already frozen/thawed" errors gfs2: Flag a withdraw if init_threads() fails
2 parents 7fd7d5c + ff132c5 commit 8e29be3

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

fs/gfs2/super.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,10 @@ int gfs2_make_fs_rw(struct gfs2_sbd *sdp)
162162
int error;
163163

164164
error = init_threads(sdp);
165-
if (error)
165+
if (error) {
166+
gfs2_withdraw_delayed(sdp);
166167
return error;
168+
}
167169

168170
j_gl->gl_ops->go_inval(j_gl, DIO_METADATA);
169171
if (gfs2_withdrawn(sdp)) {
@@ -750,11 +752,13 @@ void gfs2_freeze_func(struct work_struct *work)
750752
static int gfs2_freeze(struct super_block *sb)
751753
{
752754
struct gfs2_sbd *sdp = sb->s_fs_info;
753-
int error = 0;
755+
int error;
754756

755757
mutex_lock(&sdp->sd_freeze_mutex);
756-
if (atomic_read(&sdp->sd_freeze_state) != SFS_UNFROZEN)
758+
if (atomic_read(&sdp->sd_freeze_state) != SFS_UNFROZEN) {
759+
error = -EBUSY;
757760
goto out;
761+
}
758762

759763
for (;;) {
760764
if (gfs2_withdrawn(sdp)) {
@@ -795,10 +799,10 @@ static int gfs2_unfreeze(struct super_block *sb)
795799
struct gfs2_sbd *sdp = sb->s_fs_info;
796800

797801
mutex_lock(&sdp->sd_freeze_mutex);
798-
if (atomic_read(&sdp->sd_freeze_state) != SFS_FROZEN ||
802+
if (atomic_read(&sdp->sd_freeze_state) != SFS_FROZEN ||
799803
!gfs2_holder_initialized(&sdp->sd_freeze_gh)) {
800804
mutex_unlock(&sdp->sd_freeze_mutex);
801-
return 0;
805+
return -EINVAL;
802806
}
803807

804808
gfs2_freeze_unlock(&sdp->sd_freeze_gh);

0 commit comments

Comments
 (0)