@@ -259,6 +259,7 @@ static void migrate_ssa(struct f2fs_sb_info *sbi,
259259 block_t new_sum_blkaddr = get_newsb (ssa_blkaddr );
260260 unsigned int expand_sum_blocks = MAIN_SEGS (sbi ) - offset ;
261261 unsigned int new_sum_blocks = get_newsb (main_blkaddr ) - new_sum_blkaddr ;
262+ block_t sum_blkaddr ;
262263 int new_sum_blkoff ;
263264 int ret = 0 ;
264265 void * zero_block = calloc (F2FS_SUM_BLKSIZE , 1 );
@@ -268,35 +269,44 @@ static void migrate_ssa(struct f2fs_sb_info *sbi,
268269 offset / SUMS_PER_BLOCK )) {
269270 new_sum_blkoff = 0 ;
270271 while (new_sum_blkoff < new_sum_blocks ) {
271- if (new_sum_blkoff < expand_sum_blocks )
272+ if (new_sum_blkoff < expand_sum_blocks ) {
272273 move_ssa (sbi , new_sb , offset ++ , new_sum_blkoff );
273- else if (c .feature & F2FS_FEATURE_PACKED_SSA )
274- ret = dev_write_4k_block (zero_block ,
275- GET_SUM_NEW_BLKADDR (new_sb , new_sum_blkoff ),
276- GET_SUM_NEW_BLKOFF (new_sb , new_sum_blkoff ),
277- WRITE_LIFE_NONE );
278- else
279- ret = dev_write_block (zero_block ,
280- GET_SUM_NEW_BLKADDR (new_sb , new_sum_blkoff ),
281- WRITE_LIFE_NONE );
274+ } else {
275+ sum_blkaddr = GET_SUM_NEW_BLKADDR (new_sb , new_sum_blkoff );
276+ if (c .feature & F2FS_FEATURE_PACKED_SSA )
277+ ret = dev_write_4k_block (zero_block ,
278+ sum_blkaddr ,
279+ GET_SUM_NEW_BLKOFF (new_sb , new_sum_blkoff ),
280+ WRITE_LIFE_NONE );
281+ else
282+ ret = dev_write_block (zero_block ,
283+ sum_blkaddr ,
284+ WRITE_LIFE_NONE );
285+ DBG (1 , "Zero summary block: %x\n" , sum_blkaddr );
286+ }
282287 ASSERT (ret >= 0 );
283288 new_sum_blkoff ++ ;
284289 }
285290 } else {
286291 new_sum_blkoff = new_sum_blocks - 1 ;
287292 offset = MAIN_SEGS (sbi ) - 1 ;
288293 while (new_sum_blkoff >= 0 ) {
289- if (new_sum_blkoff < expand_sum_blocks )
294+ if (new_sum_blkoff < expand_sum_blocks ) {
290295 move_ssa (sbi , new_sb , offset -- , new_sum_blkoff );
291- else if (c .feature & F2FS_FEATURE_PACKED_SSA )
292- ret = dev_write_4k_block (zero_block ,
293- GET_SUM_NEW_BLKADDR (new_sb , new_sum_blkoff ),
294- GET_SUM_NEW_BLKOFF (new_sb , new_sum_blkoff ),
295- WRITE_LIFE_NONE );
296- else
297- ret = dev_write_block (zero_block ,
298- GET_SUM_NEW_BLKADDR (new_sb , new_sum_blkoff ),
299- WRITE_LIFE_NONE );
296+ } else {
297+ sum_blkaddr = GET_SUM_NEW_BLKADDR (new_sb , new_sum_blkoff );
298+ ASSERT (sum_blkaddr < get_newsb (main_blkaddr ));
299+ if (c .feature & F2FS_FEATURE_PACKED_SSA )
300+ ret = dev_write_4k_block (zero_block ,
301+ sum_blkaddr ,
302+ GET_SUM_NEW_BLKOFF (new_sb , new_sum_blkoff ),
303+ WRITE_LIFE_NONE );
304+ else
305+ ret = dev_write_block (zero_block ,
306+ sum_blkaddr ,
307+ WRITE_LIFE_NONE );
308+ DBG (1 , "Zero summary block: %x\n" , sum_blkaddr );
309+ }
300310 ASSERT (ret >= 0 );
301311 new_sum_blkoff -- ;
302312 }
0 commit comments