@@ -28,7 +28,7 @@ struct kmem_cache *inode_entry_slab;
2828
2929void f2fs_stop_checkpoint (struct f2fs_sb_info * sbi , bool end_io )
3030{
31- set_ckpt_flags (sbi -> ckpt , CP_ERROR_FLAG );
31+ set_ckpt_flags (sbi , CP_ERROR_FLAG );
3232 sbi -> sb -> s_flags |= MS_RDONLY ;
3333 if (!end_io )
3434 f2fs_flush_merged_bios (sbi );
@@ -571,7 +571,7 @@ int recover_orphan_inodes(struct f2fs_sb_info *sbi)
571571 block_t start_blk , orphan_blocks , i , j ;
572572 int err ;
573573
574- if (!is_set_ckpt_flags (F2FS_CKPT ( sbi ) , CP_ORPHAN_PRESENT_FLAG ))
574+ if (!is_set_ckpt_flags (sbi , CP_ORPHAN_PRESENT_FLAG ))
575575 return 0 ;
576576
577577 start_blk = __start_cp_addr (sbi ) + 1 + __cp_payload (sbi );
@@ -595,7 +595,7 @@ int recover_orphan_inodes(struct f2fs_sb_info *sbi)
595595 f2fs_put_page (page , 1 );
596596 }
597597 /* clear Orphan Flag */
598- clear_ckpt_flags (F2FS_CKPT ( sbi ) , CP_ORPHAN_PRESENT_FLAG );
598+ clear_ckpt_flags (sbi , CP_ORPHAN_PRESENT_FLAG );
599599 return 0 ;
600600}
601601
@@ -1043,10 +1043,12 @@ static int do_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc)
10431043
10441044 /* 2 cp + n data seg summary + orphan inode blocks */
10451045 data_sum_blocks = npages_for_summary_flush (sbi , false);
1046+ spin_lock (& sbi -> cp_lock );
10461047 if (data_sum_blocks < NR_CURSEG_DATA_TYPE )
1047- set_ckpt_flags (ckpt , CP_COMPACT_SUM_FLAG );
1048+ __set_ckpt_flags (ckpt , CP_COMPACT_SUM_FLAG );
10481049 else
1049- clear_ckpt_flags (ckpt , CP_COMPACT_SUM_FLAG );
1050+ __clear_ckpt_flags (ckpt , CP_COMPACT_SUM_FLAG );
1051+ spin_unlock (& sbi -> cp_lock );
10501052
10511053 orphan_blocks = GET_ORPHAN_BLOCKS (orphan_num );
10521054 ckpt -> cp_pack_start_sum = cpu_to_le32 (1 + cp_payload_blks +
@@ -1061,26 +1063,29 @@ static int do_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc)
10611063 cp_payload_blks + data_sum_blocks +
10621064 orphan_blocks );
10631065
1066+ spin_lock (& sbi -> cp_lock );
10641067 if (cpc -> reason == CP_UMOUNT )
1065- set_ckpt_flags (ckpt , CP_UMOUNT_FLAG );
1068+ __set_ckpt_flags (ckpt , CP_UMOUNT_FLAG );
10661069 else
1067- clear_ckpt_flags (ckpt , CP_UMOUNT_FLAG );
1070+ __clear_ckpt_flags (ckpt , CP_UMOUNT_FLAG );
10681071
10691072 if (cpc -> reason == CP_FASTBOOT )
1070- set_ckpt_flags (ckpt , CP_FASTBOOT_FLAG );
1073+ __set_ckpt_flags (ckpt , CP_FASTBOOT_FLAG );
10711074 else
1072- clear_ckpt_flags (ckpt , CP_FASTBOOT_FLAG );
1075+ __clear_ckpt_flags (ckpt , CP_FASTBOOT_FLAG );
10731076
10741077 if (orphan_num )
1075- set_ckpt_flags (ckpt , CP_ORPHAN_PRESENT_FLAG );
1078+ __set_ckpt_flags (ckpt , CP_ORPHAN_PRESENT_FLAG );
10761079 else
1077- clear_ckpt_flags (ckpt , CP_ORPHAN_PRESENT_FLAG );
1080+ __clear_ckpt_flags (ckpt , CP_ORPHAN_PRESENT_FLAG );
10781081
10791082 if (is_sbi_flag_set (sbi , SBI_NEED_FSCK ))
1080- set_ckpt_flags (ckpt , CP_FSCK_FLAG );
1083+ __set_ckpt_flags (ckpt , CP_FSCK_FLAG );
10811084
10821085 /* set this flag to activate crc|cp_ver for recovery */
1083- set_ckpt_flags (ckpt , CP_CRC_RECOVERY_FLAG );
1086+ __set_ckpt_flags (ckpt , CP_CRC_RECOVERY_FLAG );
1087+
1088+ spin_unlock (& sbi -> cp_lock );
10841089
10851090 /* update SIT/NAT bitmap */
10861091 get_sit_bitmap (sbi , __bitmap_ptr (sbi , SIT_BITMAP ));
0 commit comments