@@ -689,26 +689,19 @@ static int gfs2_freeze_locally(struct gfs2_sbd *sdp)
689689 struct super_block * sb = sdp -> sd_vfs ;
690690 int error ;
691691
692- atomic_set (& sdp -> sd_freeze_state , SFS_STARTING_FREEZE );
693-
694692 error = freeze_super (sb );
695693 if (error )
696- goto fail ;
694+ return error ;
697695
698696 if (test_bit (SDF_JOURNAL_LIVE , & sdp -> sd_flags )) {
699697 gfs2_log_flush (sdp , NULL , GFS2_LOG_HEAD_FLUSH_FREEZE |
700698 GFS2_LFC_FREEZE_GO_SYNC );
701699 if (gfs2_withdrawn (sdp )) {
702700 thaw_super (sb );
703- error = - EIO ;
704- goto fail ;
701+ return - EIO ;
705702 }
706703 }
707704 return 0 ;
708-
709- fail :
710- atomic_set (& sdp -> sd_freeze_state , SFS_UNFROZEN );
711- return error ;
712705}
713706
714707static int gfs2_do_thaw (struct gfs2_sbd * sdp )
@@ -737,21 +730,21 @@ void gfs2_freeze_func(struct work_struct *work)
737730
738731 mutex_lock (& sdp -> sd_freeze_mutex );
739732 error = - EBUSY ;
740- if (atomic_read ( & sdp -> sd_freeze_state ) != SFS_UNFROZEN )
733+ if (test_bit ( SDF_FROZEN , & sdp -> sd_flags ) )
741734 goto freeze_failed ;
742735
743736 error = gfs2_freeze_locally (sdp );
744737 if (error )
745738 goto freeze_failed ;
746739
747740 gfs2_freeze_unlock (& sdp -> sd_freeze_gh );
748- atomic_set ( & sdp -> sd_freeze_state , SFS_FROZEN );
741+ set_bit ( SDF_FROZEN , & sdp -> sd_flags );
749742
750743 error = gfs2_do_thaw (sdp );
751744 if (error )
752745 goto out ;
753746
754- atomic_set ( & sdp -> sd_freeze_state , SFS_UNFROZEN );
747+ clear_bit ( SDF_FROZEN , & sdp -> sd_flags );
755748 goto out ;
756749
757750freeze_failed :
@@ -776,7 +769,7 @@ static int gfs2_freeze_super(struct super_block *sb)
776769 if (!mutex_trylock (& sdp -> sd_freeze_mutex ))
777770 return - EBUSY ;
778771 error = - EBUSY ;
779- if (atomic_read ( & sdp -> sd_freeze_state ) != SFS_UNFROZEN )
772+ if (test_bit ( SDF_FROZEN , & sdp -> sd_flags ) )
780773 goto out ;
781774
782775 for (;;) {
@@ -811,7 +804,7 @@ static int gfs2_freeze_super(struct super_block *sb)
811804out :
812805 if (!error ) {
813806 set_bit (SDF_FREEZE_INITIATOR , & sdp -> sd_flags );
814- atomic_set ( & sdp -> sd_freeze_state , SFS_FROZEN );
807+ set_bit ( SDF_FROZEN , & sdp -> sd_flags );
815808 }
816809 mutex_unlock (& sdp -> sd_freeze_mutex );
817810 return error ;
@@ -840,7 +833,7 @@ static int gfs2_thaw_super(struct super_block *sb)
840833
841834 if (!error ) {
842835 clear_bit (SDF_FREEZE_INITIATOR , & sdp -> sd_flags );
843- atomic_set ( & sdp -> sd_freeze_state , SFS_UNFROZEN );
836+ clear_bit ( SDF_FROZEN , & sdp -> sd_flags );
844837 }
845838out :
846839 mutex_unlock (& sdp -> sd_freeze_mutex );
0 commit comments