From nobody Mon Dec 1 22:04:02 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8D4983002DF for ; Fri, 28 Nov 2025 09:25:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764321938; cv=none; b=W/53sPULlUujJ5ya3SGwtOCweqiMAyZBHzrGgao9m7b0yBLN9F0QKjo8RovH5Rb8rjyCJYzXrJXB70j6jvUxA7RF2PYZWvcucO40m+nlsjDL7qlZcZEZChEk1Yf4NInewUwIn1j1MUh2AV5+/NS6R+cLgU4B7TvBtJFyf3bxAAs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764321938; c=relaxed/simple; bh=mgA4yrwSEg38nspzo0kjzEi/bHnlbcRuXglxuEvFoGg=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=GrEuUezzpf+3Q3UV1hrv/fPic6YNhnBuA7zl+WgHbHtIBpgezLKfGRgLF3RFUnoWkJi78MnQYgHTENDVBKm+UzrhAzxdKy5mlcETSyMvoznE5LnlSQPE6SwvSEL6bY76h7CWZOodcji3eVJLVd9LTspqsTr8xniAwNO/mEnFGxQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=TlNNRa6N; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="TlNNRa6N" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3316AC4CEF1; Fri, 28 Nov 2025 09:25:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1764321938; bh=mgA4yrwSEg38nspzo0kjzEi/bHnlbcRuXglxuEvFoGg=; h=From:To:Cc:Subject:Date:From; b=TlNNRa6Npt/oMm3kEVKsn5JHJ0DnV8V2PuvVyPO8AoFP9m+8Iv9Q/gQcSsZYrMILw pPf5a7yvlMVpFrYC6hyeiDiyZPMCusNBHVKk2IaZ+1YjFEChGr1tD0b4rr4kBb4qj3 HzF2YC/mK1fI8KT2+KVivK9FPTR11Vdw2p4chCLsF6RrqV85Jubc/ciqy2SCTUNZgw PVu6NVrg7QQ7QPu2helhk+KI4E0ri/HUV7JiMxrwMjZtT8bjqz2c5xpQD+Wgfz+gsH FM5i4jTn0VDPWL3bBcljRGgpZgSQUL29iOAf+sSE2s8ha96W8HQvXDs59dNvJ4SotB 2m8RialC27wtA== From: Chao Yu To: jaegeuk@kernel.org Cc: linux-f2fs-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org, Chao Yu Subject: [PATCH] f2fs: support to show curseg.next_blkoff in debugfs Date: Fri, 28 Nov 2025 17:25:34 +0800 Message-ID: <20251128092534.1607427-1-chao@kernel.org> X-Mailer: git-send-email 2.52.0.487.g5c8c507ade-goog Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 --- fs/f2fs/debug.c | 29 +++++++++++++++++++---------- fs/f2fs/f2fs.h | 1 + 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/fs/f2fs/debug.c b/fs/f2fs/debug.c index 43a83bbd3bc5..032683835569 100644 --- a/fs/f2fs/debug.c +++ b/fs/f2fs/debug.c @@ -251,6 +251,7 @@ static void update_general_status(struct f2fs_sb_info *= sbi) for (i =3D CURSEG_HOT_DATA; i < NO_CHECK_TYPE; i++) { struct curseg_info *curseg =3D CURSEG_I(sbi, i); =20 + si->blkoff[i] =3D curseg->next_blkoff; si->curseg[i] =3D curseg->segno; si->cursec[i] =3D GET_SEC_FROM_SEG(sbi, curseg->segno); si->curzone[i] =3D GET_ZONE_FROM_SEC(sbi, si->cursec[i]); @@ -508,55 +509,63 @@ static int stat_show(struct seq_file *s, void *v) seq_printf(s, "\nMain area: %d segs, %d secs %d zones\n", si->main_area_segs, si->main_area_sections, si->main_area_zones); - seq_printf(s, " TYPE %8s %8s %8s %10s %10s %10s\n", - "segno", "secno", "zoneno", "dirty_seg", "full_seg", "valid_blk"); - seq_printf(s, " - COLD data: %8d %8d %8d %10u %10u %10u\n", + seq_printf(s, " TYPE %8s %8s %8s %8s %10s %10s %10s\n", + "blkoff", "segno", "secno", "zoneno", "dirty_seg", "full_seg", "vali= d_blk"); + seq_printf(s, " - COLD data: %8d %8d %8d %8d %10u %10u %10u\n", + si->blkoff[CURSEG_COLD_DATA], si->curseg[CURSEG_COLD_DATA], si->cursec[CURSEG_COLD_DATA], si->curzone[CURSEG_COLD_DATA], si->dirty_seg[CURSEG_COLD_DATA], si->full_seg[CURSEG_COLD_DATA], si->valid_blks[CURSEG_COLD_DATA]); - seq_printf(s, " - WARM data: %8d %8d %8d %10u %10u %10u\n", + seq_printf(s, " - WARM data: %8d %8d %8d %8d %10u %10u %10u\n", + si->blkoff[CURSEG_WARM_DATA], si->curseg[CURSEG_WARM_DATA], si->cursec[CURSEG_WARM_DATA], si->curzone[CURSEG_WARM_DATA], si->dirty_seg[CURSEG_WARM_DATA], si->full_seg[CURSEG_WARM_DATA], si->valid_blks[CURSEG_WARM_DATA]); - seq_printf(s, " - HOT data: %8d %8d %8d %10u %10u %10u\n", + seq_printf(s, " - HOT data: %8d %8d %8d %8d %10u %10u %10u\n", + si->blkoff[CURSEG_HOT_DATA], si->curseg[CURSEG_HOT_DATA], si->cursec[CURSEG_HOT_DATA], si->curzone[CURSEG_HOT_DATA], si->dirty_seg[CURSEG_HOT_DATA], si->full_seg[CURSEG_HOT_DATA], si->valid_blks[CURSEG_HOT_DATA]); - seq_printf(s, " - Dir dnode: %8d %8d %8d %10u %10u %10u\n", + seq_printf(s, " - Dir dnode: %8d %8d %8d %8d %10u %10u %10u\n", + si->blkoff[CURSEG_HOT_NODE], si->curseg[CURSEG_HOT_NODE], si->cursec[CURSEG_HOT_NODE], si->curzone[CURSEG_HOT_NODE], si->dirty_seg[CURSEG_HOT_NODE], si->full_seg[CURSEG_HOT_NODE], si->valid_blks[CURSEG_HOT_NODE]); - seq_printf(s, " - File dnode: %8d %8d %8d %10u %10u %10u\n", + seq_printf(s, " - File dnode: %8d %8d %8d %8d %10u %10u %10u\n", + si->blkoff[CURSEG_WARM_NODE], si->curseg[CURSEG_WARM_NODE], si->cursec[CURSEG_WARM_NODE], si->curzone[CURSEG_WARM_NODE], si->dirty_seg[CURSEG_WARM_NODE], si->full_seg[CURSEG_WARM_NODE], si->valid_blks[CURSEG_WARM_NODE]); - seq_printf(s, " - Indir nodes: %8d %8d %8d %10u %10u %10u\n", + seq_printf(s, " - Indir nodes: %8d %8d %8d %8d %10u %10u %10u\n", + si->blkoff[CURSEG_COLD_NODE], si->curseg[CURSEG_COLD_NODE], si->cursec[CURSEG_COLD_NODE], si->curzone[CURSEG_COLD_NODE], si->dirty_seg[CURSEG_COLD_NODE], si->full_seg[CURSEG_COLD_NODE], si->valid_blks[CURSEG_COLD_NODE]); - seq_printf(s, " - Pinned file: %8d %8d %8d\n", + seq_printf(s, " - Pinned file: %8d %8d %8d %8d\n", + si->blkoff[CURSEG_COLD_DATA_PINNED], si->curseg[CURSEG_COLD_DATA_PINNED], si->cursec[CURSEG_COLD_DATA_PINNED], si->curzone[CURSEG_COLD_DATA_PINNED]); - seq_printf(s, " - ATGC data: %8d %8d %8d\n", + seq_printf(s, " - ATGC data: %8d %8d %8d %8d\n", + si->blkoff[CURSEG_ALL_DATA_ATGC], si->curseg[CURSEG_ALL_DATA_ATGC], si->cursec[CURSEG_ALL_DATA_ATGC], si->curzone[CURSEG_ALL_DATA_ATGC]); diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h index 71adfacaca45..b828cf653a72 100644 --- a/fs/f2fs/f2fs.h +++ b/fs/f2fs/f2fs.h @@ -4199,6 +4199,7 @@ struct f2fs_stat_info { int gc_secs[2][2]; int tot_blks, data_blks, node_blks; int bg_data_blks, bg_node_blks; + int blkoff[NR_CURSEG_TYPE]; int curseg[NR_CURSEG_TYPE]; int cursec[NR_CURSEG_TYPE]; int curzone[NR_CURSEG_TYPE]; --=20 2.49.0