Home | History | Annotate | Download | only in fsck

Lines Matching refs:sbi

135 static void migrate_main(struct f2fs_sb_info *sbi, unsigned int offset)
145 for (i = TOTAL_SEGS(sbi) - 1; i >= 0; i--) {
146 se = get_seg_entry(sbi, i);
150 for (j = sbi->blocks_per_seg - 1; j >= 0; j--) {
154 from = START_BLOCK(sbi, i) + j;
162 get_sum_entry(sbi, from, &sum);
165 update_data_blkaddr(sbi, le32_to_cpu(sum.nid),
168 update_nat_blkaddr(sbi, 0,
174 START_BLOCK(sbi, 0),
175 START_BLOCK(sbi, 0) + offset);
178 static void move_ssa(struct f2fs_sb_info *sbi, unsigned int segno,
184 sum_blk = get_sum_block(sbi, segno, &type);
191 type, segno, GET_SUM_BLKADDR(sbi, segno),
202 static void migrate_ssa(struct f2fs_sb_info *sbi,
205 struct f2fs_super_block *sb = F2FS_RAW_SUPER(sbi);
210 TOTAL_SEGS(sbi) - offset;
220 move_ssa(sbi, offset++, blkaddr++);
228 offset = TOTAL_SEGS(sbi) - 1;
234 move_ssa(sbi, offset--, blkaddr--);
244 static int shrink_nats(struct f2fs_sb_info *sbi,
247 struct f2fs_super_block *sb = F2FS_RAW_SUPER(sbi);
248 struct f2fs_nm_info *nm_i = NM_I(sbi);
268 seg_off = block_off >> sbi->log_blocks_per_seg;
270 (seg_off << sbi->log_blocks_per_seg << 1) +
271 (block_off & ((1 << sbi->log_blocks_per_seg) - 1)));
274 block_addr += sbi->blocks_per_seg;
292 static void migrate_nat(struct f2fs_sb_info *sbi,
295 struct f2fs_super_block *sb = F2FS_RAW_SUPER(sbi);
296 struct f2fs_nm_info *nm_i = NM_I(sbi);
311 seg_off = block_off >> sbi->log_blocks_per_seg;
313 (seg_off << sbi->log_blocks_per_seg << 1) +
314 (block_off & ((1 << sbi->log_blocks_per_seg) - 1)));
317 block_addr += sbi->blocks_per_seg;
323 (seg_off << sbi->log_blocks_per_seg << 1) +
324 (block_off & ((1 << sbi->log_blocks_per_seg) - 1)));
344 seg_off = block_off >> sbi->log_blocks_per_seg;
346 (seg_off << sbi->log_blocks_per_seg << 1) +
347 (block_off & ((1 << sbi->log_blocks_per_seg) - 1)));
356 static void migrate_sit(struct f2fs_sb_info *sbi,
359 struct sit_info *sit_i = SIT_I(sbi);
364 (sbi->log_blocks_per_seg - 1);
378 for (segno = 0; segno < TOTAL_SEGS(sbi); segno++) {
381 se = get_seg_entry(sbi, segno);
414 static void rebuild_checkpoint(struct f2fs_sb_info *sbi,
417 struct f2fs_checkpoint *cp = F2FS_CKPT(sbi);
420 struct f2fs_super_block *sb = F2FS_RAW_SUPER(sbi);
444 free_segment_count = get_free_segments(sbi);
453 orphan_blks = __start_sum_addr(sbi) - 1;
462 CURSEG_I(sbi, i)->segno - offset);
467 CURSEG_I(sbi, i)->segno - offset);
493 if (sbi->cur_cp == 2)
520 struct curseg_info *curseg = CURSEG_I(sbi, i);
532 write_nat_bits(sbi, new_sb, new_cp, sbi->cur_cp == 1 ? 2 : 1);
560 int f2fs_resize(struct f2fs_sb_info *sbi)
562 struct f2fs_super_block *sb = F2FS_RAW_SUPER(sbi);
571 flush_journal_entries(sbi);
573 memcpy(new_sb, F2FS_RAW_SUPER(sbi), sizeof(*new_sb));
579 err = shrink_nats(sbi, new_sb);
597 err = f2fs_defragment(sbi, old_main_blkaddr, offset,
605 migrate_main(sbi, offset);
607 migrate_ssa(sbi, new_sb, offset_seg);
608 migrate_nat(sbi, new_sb);
609 migrate_sit(sbi, new_sb, offset_seg);
610 rebuild_checkpoint(sbi, new_sb, offset_seg);