f2fs: support to show curseg.next_blkoff in debugfs

cat /sys/kernel/debug/f2fs/status

Main area: 17 segs, 17 secs 17 zones
TYPE blkoff segno secno zoneno dirty_seg full_seg valid_blk
- COLD data: 0 4 4 4 0 0 0
- WARM data: 0 7 7 7 0 0 0
- HOT data: 1 5 5 5 2 0 512
- Dir dnode: 3 0 0 0 1 0 2
- File dnode: 0 1 1 1 0 0 0
- Indir nodes: 0 2 2 2 0 0 0
- Pinned file: 0 -1 -1 -1
- ATGC data: 0 -1 -1 -1

Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>

authored by Chao Yu and committed by Jaegeuk Kim 8f11fe52 fbc0774b

+20 -10
+19 -10
fs/f2fs/debug.c
··· 251 for (i = CURSEG_HOT_DATA; i < NO_CHECK_TYPE; i++) { 252 struct curseg_info *curseg = CURSEG_I(sbi, i); 253 254 si->curseg[i] = curseg->segno; 255 si->cursec[i] = GET_SEC_FROM_SEG(sbi, curseg->segno); 256 si->curzone[i] = GET_ZONE_FROM_SEC(sbi, si->cursec[i]); ··· 509 seq_printf(s, "\nMain area: %d segs, %d secs %d zones\n", 510 si->main_area_segs, si->main_area_sections, 511 si->main_area_zones); 512 - seq_printf(s, " TYPE %8s %8s %8s %10s %10s %10s\n", 513 - "segno", "secno", "zoneno", "dirty_seg", "full_seg", "valid_blk"); 514 - seq_printf(s, " - COLD data: %8d %8d %8d %10u %10u %10u\n", 515 si->curseg[CURSEG_COLD_DATA], 516 si->cursec[CURSEG_COLD_DATA], 517 si->curzone[CURSEG_COLD_DATA], 518 si->dirty_seg[CURSEG_COLD_DATA], 519 si->full_seg[CURSEG_COLD_DATA], 520 si->valid_blks[CURSEG_COLD_DATA]); 521 - seq_printf(s, " - WARM data: %8d %8d %8d %10u %10u %10u\n", 522 si->curseg[CURSEG_WARM_DATA], 523 si->cursec[CURSEG_WARM_DATA], 524 si->curzone[CURSEG_WARM_DATA], 525 si->dirty_seg[CURSEG_WARM_DATA], 526 si->full_seg[CURSEG_WARM_DATA], 527 si->valid_blks[CURSEG_WARM_DATA]); 528 - seq_printf(s, " - HOT data: %8d %8d %8d %10u %10u %10u\n", 529 si->curseg[CURSEG_HOT_DATA], 530 si->cursec[CURSEG_HOT_DATA], 531 si->curzone[CURSEG_HOT_DATA], 532 si->dirty_seg[CURSEG_HOT_DATA], 533 si->full_seg[CURSEG_HOT_DATA], 534 si->valid_blks[CURSEG_HOT_DATA]); 535 - seq_printf(s, " - Dir dnode: %8d %8d %8d %10u %10u %10u\n", 536 si->curseg[CURSEG_HOT_NODE], 537 si->cursec[CURSEG_HOT_NODE], 538 si->curzone[CURSEG_HOT_NODE], 539 si->dirty_seg[CURSEG_HOT_NODE], 540 si->full_seg[CURSEG_HOT_NODE], 541 si->valid_blks[CURSEG_HOT_NODE]); 542 - seq_printf(s, " - File dnode: %8d %8d %8d %10u %10u %10u\n", 543 si->curseg[CURSEG_WARM_NODE], 544 si->cursec[CURSEG_WARM_NODE], 545 si->curzone[CURSEG_WARM_NODE], 546 si->dirty_seg[CURSEG_WARM_NODE], 547 si->full_seg[CURSEG_WARM_NODE], 548 si->valid_blks[CURSEG_WARM_NODE]); 549 - seq_printf(s, " - Indir nodes: %8d %8d %8d %10u %10u %10u\n", 550 si->curseg[CURSEG_COLD_NODE], 551 si->cursec[CURSEG_COLD_NODE], 552 si->curzone[CURSEG_COLD_NODE], 553 si->dirty_seg[CURSEG_COLD_NODE], 554 si->full_seg[CURSEG_COLD_NODE], 555 si->valid_blks[CURSEG_COLD_NODE]); 556 - seq_printf(s, " - Pinned file: %8d %8d %8d\n", 557 si->curseg[CURSEG_COLD_DATA_PINNED], 558 si->cursec[CURSEG_COLD_DATA_PINNED], 559 si->curzone[CURSEG_COLD_DATA_PINNED]); 560 - seq_printf(s, " - ATGC data: %8d %8d %8d\n", 561 si->curseg[CURSEG_ALL_DATA_ATGC], 562 si->cursec[CURSEG_ALL_DATA_ATGC], 563 si->curzone[CURSEG_ALL_DATA_ATGC]);
··· 251 for (i = CURSEG_HOT_DATA; i < NO_CHECK_TYPE; i++) { 252 struct curseg_info *curseg = CURSEG_I(sbi, i); 253 254 + si->blkoff[i] = curseg->next_blkoff; 255 si->curseg[i] = curseg->segno; 256 si->cursec[i] = GET_SEC_FROM_SEG(sbi, curseg->segno); 257 si->curzone[i] = GET_ZONE_FROM_SEC(sbi, si->cursec[i]); ··· 508 seq_printf(s, "\nMain area: %d segs, %d secs %d zones\n", 509 si->main_area_segs, si->main_area_sections, 510 si->main_area_zones); 511 + seq_printf(s, " TYPE %8s %8s %8s %8s %10s %10s %10s\n", 512 + "blkoff", "segno", "secno", "zoneno", "dirty_seg", "full_seg", "valid_blk"); 513 + seq_printf(s, " - COLD data: %8d %8d %8d %8d %10u %10u %10u\n", 514 + si->blkoff[CURSEG_COLD_DATA], 515 si->curseg[CURSEG_COLD_DATA], 516 si->cursec[CURSEG_COLD_DATA], 517 si->curzone[CURSEG_COLD_DATA], 518 si->dirty_seg[CURSEG_COLD_DATA], 519 si->full_seg[CURSEG_COLD_DATA], 520 si->valid_blks[CURSEG_COLD_DATA]); 521 + seq_printf(s, " - WARM data: %8d %8d %8d %8d %10u %10u %10u\n", 522 + si->blkoff[CURSEG_WARM_DATA], 523 si->curseg[CURSEG_WARM_DATA], 524 si->cursec[CURSEG_WARM_DATA], 525 si->curzone[CURSEG_WARM_DATA], 526 si->dirty_seg[CURSEG_WARM_DATA], 527 si->full_seg[CURSEG_WARM_DATA], 528 si->valid_blks[CURSEG_WARM_DATA]); 529 + seq_printf(s, " - HOT data: %8d %8d %8d %8d %10u %10u %10u\n", 530 + si->blkoff[CURSEG_HOT_DATA], 531 si->curseg[CURSEG_HOT_DATA], 532 si->cursec[CURSEG_HOT_DATA], 533 si->curzone[CURSEG_HOT_DATA], 534 si->dirty_seg[CURSEG_HOT_DATA], 535 si->full_seg[CURSEG_HOT_DATA], 536 si->valid_blks[CURSEG_HOT_DATA]); 537 + seq_printf(s, " - Dir dnode: %8d %8d %8d %8d %10u %10u %10u\n", 538 + si->blkoff[CURSEG_HOT_NODE], 539 si->curseg[CURSEG_HOT_NODE], 540 si->cursec[CURSEG_HOT_NODE], 541 si->curzone[CURSEG_HOT_NODE], 542 si->dirty_seg[CURSEG_HOT_NODE], 543 si->full_seg[CURSEG_HOT_NODE], 544 si->valid_blks[CURSEG_HOT_NODE]); 545 + seq_printf(s, " - File dnode: %8d %8d %8d %8d %10u %10u %10u\n", 546 + si->blkoff[CURSEG_WARM_NODE], 547 si->curseg[CURSEG_WARM_NODE], 548 si->cursec[CURSEG_WARM_NODE], 549 si->curzone[CURSEG_WARM_NODE], 550 si->dirty_seg[CURSEG_WARM_NODE], 551 si->full_seg[CURSEG_WARM_NODE], 552 si->valid_blks[CURSEG_WARM_NODE]); 553 + seq_printf(s, " - Indir nodes: %8d %8d %8d %8d %10u %10u %10u\n", 554 + si->blkoff[CURSEG_COLD_NODE], 555 si->curseg[CURSEG_COLD_NODE], 556 si->cursec[CURSEG_COLD_NODE], 557 si->curzone[CURSEG_COLD_NODE], 558 si->dirty_seg[CURSEG_COLD_NODE], 559 si->full_seg[CURSEG_COLD_NODE], 560 si->valid_blks[CURSEG_COLD_NODE]); 561 + seq_printf(s, " - Pinned file: %8d %8d %8d %8d\n", 562 + si->blkoff[CURSEG_COLD_DATA_PINNED], 563 si->curseg[CURSEG_COLD_DATA_PINNED], 564 si->cursec[CURSEG_COLD_DATA_PINNED], 565 si->curzone[CURSEG_COLD_DATA_PINNED]); 566 + seq_printf(s, " - ATGC data: %8d %8d %8d %8d\n", 567 + si->blkoff[CURSEG_ALL_DATA_ATGC], 568 si->curseg[CURSEG_ALL_DATA_ATGC], 569 si->cursec[CURSEG_ALL_DATA_ATGC], 570 si->curzone[CURSEG_ALL_DATA_ATGC]);
+1
fs/f2fs/f2fs.h
··· 4188 int gc_secs[2][2]; 4189 int tot_blks, data_blks, node_blks; 4190 int bg_data_blks, bg_node_blks; 4191 int curseg[NR_CURSEG_TYPE]; 4192 int cursec[NR_CURSEG_TYPE]; 4193 int curzone[NR_CURSEG_TYPE];
··· 4188 int gc_secs[2][2]; 4189 int tot_blks, data_blks, node_blks; 4190 int bg_data_blks, bg_node_blks; 4191 + int blkoff[NR_CURSEG_TYPE]; 4192 int curseg[NR_CURSEG_TYPE]; 4193 int cursec[NR_CURSEG_TYPE]; 4194 int curzone[NR_CURSEG_TYPE];