aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'fs/gfs2/super.c')
-rw-r--r--fs/gfs2/super.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c
index 22cd68bd8c9b..3cc2237e5896 100644
--- a/fs/gfs2/super.c
+++ b/fs/gfs2/super.c
@@ -1000,11 +1000,13 @@ void gfs2_freeze_func(struct work_struct *work)
1000static int gfs2_freeze(struct super_block *sb) 1000static int gfs2_freeze(struct super_block *sb)
1001{ 1001{
1002 struct gfs2_sbd *sdp = sb->s_fs_info; 1002 struct gfs2_sbd *sdp = sb->s_fs_info;
1003 int error = 0; 1003 int error;
1004 1004
1005 mutex_lock(&sdp->sd_freeze_mutex); 1005 mutex_lock(&sdp->sd_freeze_mutex);
1006 if (atomic_read(&sdp->sd_freeze_state) != SFS_UNFROZEN) 1006 if (atomic_read(&sdp->sd_freeze_state) != SFS_UNFROZEN) {
1007 error = -EBUSY;
1007 goto out; 1008 goto out;
1009 }
1008 1010
1009 if (test_bit(SDF_SHUTDOWN, &sdp->sd_flags)) { 1011 if (test_bit(SDF_SHUTDOWN, &sdp->sd_flags)) {
1010 error = -EINVAL; 1012 error = -EINVAL;
@@ -1046,10 +1048,10 @@ static int gfs2_unfreeze(struct super_block *sb)
1046 struct gfs2_sbd *sdp = sb->s_fs_info; 1048 struct gfs2_sbd *sdp = sb->s_fs_info;
1047 1049
1048 mutex_lock(&sdp->sd_freeze_mutex); 1050 mutex_lock(&sdp->sd_freeze_mutex);
1049 if (atomic_read(&sdp->sd_freeze_state) != SFS_FROZEN || 1051 if (atomic_read(&sdp->sd_freeze_state) != SFS_FROZEN ||
1050 !gfs2_holder_initialized(&sdp->sd_freeze_gh)) { 1052 !gfs2_holder_initialized(&sdp->sd_freeze_gh)) {
1051 mutex_unlock(&sdp->sd_freeze_mutex); 1053 mutex_unlock(&sdp->sd_freeze_mutex);
1052 return 0; 1054 return -EINVAL;
1053 } 1055 }
1054 1056
1055 gfs2_glock_dq_uninit(&sdp->sd_freeze_gh); 1057 gfs2_glock_dq_uninit(&sdp->sd_freeze_gh);