Skip to content

Commit 5a7a964

Browse files
author
Andreas Gruenbacher
committed
gfs2: Minor gfs2_{freeze,thaw}_super cleanup
This minor cleanup to gfs2_freeze_super() and gfs2_thaw_super() prepares for the following refcounting fix. Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
1 parent edd1327 commit 5a7a964

1 file changed

Lines changed: 13 additions & 13 deletions

File tree

fs/gfs2/super.c

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -759,9 +759,10 @@ static int gfs2_freeze_super(struct super_block *sb, enum freeze_holder who)
759759

760760
if (!mutex_trylock(&sdp->sd_freeze_mutex))
761761
return -EBUSY;
762-
error = -EBUSY;
763-
if (test_bit(SDF_FROZEN, &sdp->sd_flags))
764-
goto out;
762+
if (test_bit(SDF_FROZEN, &sdp->sd_flags)) {
763+
mutex_unlock(&sdp->sd_freeze_mutex);
764+
return -EBUSY;
765+
}
765766

766767
for (;;) {
767768
error = gfs2_freeze_locally(sdp);
@@ -772,8 +773,11 @@ static int gfs2_freeze_super(struct super_block *sb, enum freeze_holder who)
772773
}
773774

774775
error = gfs2_lock_fs_check_clean(sdp);
775-
if (!error)
776-
break; /* success */
776+
if (!error) {
777+
set_bit(SDF_FREEZE_INITIATOR, &sdp->sd_flags);
778+
set_bit(SDF_FROZEN, &sdp->sd_flags);
779+
break;
780+
}
777781

778782
error = gfs2_do_thaw(sdp);
779783
if (error)
@@ -793,10 +797,6 @@ static int gfs2_freeze_super(struct super_block *sb, enum freeze_holder who)
793797
}
794798

795799
out:
796-
if (!error) {
797-
set_bit(SDF_FREEZE_INITIATOR, &sdp->sd_flags);
798-
set_bit(SDF_FROZEN, &sdp->sd_flags);
799-
}
800800
mutex_unlock(&sdp->sd_freeze_mutex);
801801
return error;
802802
}
@@ -814,9 +814,10 @@ static int gfs2_thaw_super(struct super_block *sb, enum freeze_holder who)
814814

815815
if (!mutex_trylock(&sdp->sd_freeze_mutex))
816816
return -EBUSY;
817-
error = -EINVAL;
818-
if (!test_bit(SDF_FREEZE_INITIATOR, &sdp->sd_flags))
819-
goto out;
817+
if (!test_bit(SDF_FREEZE_INITIATOR, &sdp->sd_flags)) {
818+
mutex_unlock(&sdp->sd_freeze_mutex);
819+
return -EINVAL;
820+
}
820821

821822
gfs2_freeze_unlock(&sdp->sd_freeze_gh);
822823

@@ -826,7 +827,6 @@ static int gfs2_thaw_super(struct super_block *sb, enum freeze_holder who)
826827
clear_bit(SDF_FREEZE_INITIATOR, &sdp->sd_flags);
827828
clear_bit(SDF_FROZEN, &sdp->sd_flags);
828829
}
829-
out:
830830
mutex_unlock(&sdp->sd_freeze_mutex);
831831
return error;
832832
}

0 commit comments

Comments
 (0)