diff options
Diffstat (limited to 'fs/gfs2/super.c')
-rw-r--r-- | fs/gfs2/super.c | 10 |
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) | |||
1000 | static int gfs2_freeze(struct super_block *sb) | 1000 | static 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); |