@@ -2325,7 +2325,7 @@ int f2fs_sanity_check_ckpt(struct f2fs_sb_info *sbi)
2325
2325
unsigned int segment_count_main ;
2326
2326
unsigned int cp_pack_start_sum , cp_payload ;
2327
2327
block_t user_block_count ;
2328
- int i ;
2328
+ int i , j ;
2329
2329
2330
2330
total = le32_to_cpu (raw_super -> segment_count );
2331
2331
fsmeta = le32_to_cpu (raw_super -> segment_count_ckpt );
@@ -2366,11 +2366,43 @@ int f2fs_sanity_check_ckpt(struct f2fs_sb_info *sbi)
2366
2366
if (le32_to_cpu (ckpt -> cur_node_segno [i ]) >= main_segs ||
2367
2367
le16_to_cpu (ckpt -> cur_node_blkoff [i ]) >= blocks_per_seg )
2368
2368
return 1 ;
2369
+ for (j = i + 1 ; j < NR_CURSEG_NODE_TYPE ; j ++ ) {
2370
+ if (le32_to_cpu (ckpt -> cur_node_segno [i ]) ==
2371
+ le32_to_cpu (ckpt -> cur_node_segno [j ])) {
2372
+ f2fs_msg (sbi -> sb , KERN_ERR ,
2373
+ "Node segment (%u, %u) has the same "
2374
+ "segno: %u" , i , j ,
2375
+ le32_to_cpu (ckpt -> cur_node_segno [i ]));
2376
+ return 1 ;
2377
+ }
2378
+ }
2369
2379
}
2370
2380
for (i = 0 ; i < NR_CURSEG_DATA_TYPE ; i ++ ) {
2371
2381
if (le32_to_cpu (ckpt -> cur_data_segno [i ]) >= main_segs ||
2372
2382
le16_to_cpu (ckpt -> cur_data_blkoff [i ]) >= blocks_per_seg )
2373
2383
return 1 ;
2384
+ for (j = i + 1 ; j < NR_CURSEG_DATA_TYPE ; j ++ ) {
2385
+ if (le32_to_cpu (ckpt -> cur_data_segno [i ]) ==
2386
+ le32_to_cpu (ckpt -> cur_data_segno [j ])) {
2387
+ f2fs_msg (sbi -> sb , KERN_ERR ,
2388
+ "Data segment (%u, %u) has the same "
2389
+ "segno: %u" , i , j ,
2390
+ le32_to_cpu (ckpt -> cur_data_segno [i ]));
2391
+ return 1 ;
2392
+ }
2393
+ }
2394
+ }
2395
+ for (i = 0 ; i < NR_CURSEG_NODE_TYPE ; i ++ ) {
2396
+ for (j = i ; j < NR_CURSEG_DATA_TYPE ; j ++ ) {
2397
+ if (le32_to_cpu (ckpt -> cur_node_segno [i ]) ==
2398
+ le32_to_cpu (ckpt -> cur_data_segno [j ])) {
2399
+ f2fs_msg (sbi -> sb , KERN_ERR ,
2400
+ "Data segment (%u) and Data segment (%u)"
2401
+ " has the same segno: %u" , i , j ,
2402
+ le32_to_cpu (ckpt -> cur_node_segno [i ]));
2403
+ return 1 ;
2404
+ }
2405
+ }
2374
2406
}
2375
2407
2376
2408
sit_bitmap_size = le32_to_cpu (ckpt -> sit_ver_bitmap_bytesize );
0 commit comments