diff mbox series

[f2fs-dev] dump.f2fs: support dump version_bitmap and chksum in checkpoint

Message ID 20250414023954.582146-1-chao@kernel.org (mailing list archive)
State Superseded
Headers show
Series [f2fs-dev] dump.f2fs: support dump version_bitmap and chksum in checkpoint | expand

Commit Message

Chao Yu April 14, 2025, 2:39 a.m. UTC
dump.f2fs -d 1 img

...
checksum                      		[0x829fb462 : 2191504482]
nat_version_bitmap[0]         		[0x       0 : 0]
nat_version_bitmap[1]         		[0x       0 : 0]
nat_version_bitmap[2]         		[0x       0 : 0]
...
nat_version_bitmap[463]       		[0x       0 : 0]
sit_version_bitmap[0]         		[0x       0 : 0]
sit_version_bitmap[1]         		[0x       0 : 0]
sit_version_bitmap[2]         		[0x       0 : 0]
sit_version_bitmap[3]         		[0x       0 : 0]
...
sit_version_bitmap[47]        		[0x       0 : 0]

Signed-off-by: Chao Yu <chao@kernel.org>
---
 fsck/mount.c | 31 ++++++++++++++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

Comments

Jaegeuk Kim April 14, 2025, 10:36 p.m. UTC | #1
external/f2fs-tools/fsck/mount.c:584:4: error: 'snprintf' will always overflow; destination buffer has size 30, but size argument is 31 [-Werror,-Wbuiltin-memcpy-chk-size]
  584 |                         snprintf(str, 31, "%s[%d]", i == NAT_BITMAP ?


On 04/14, Chao Yu wrote:
> dump.f2fs -d 1 img
> 
> ...
> checksum                      		[0x829fb462 : 2191504482]
> nat_version_bitmap[0]         		[0x       0 : 0]
> nat_version_bitmap[1]         		[0x       0 : 0]
> nat_version_bitmap[2]         		[0x       0 : 0]
> ...
> nat_version_bitmap[463]       		[0x       0 : 0]
> sit_version_bitmap[0]         		[0x       0 : 0]
> sit_version_bitmap[1]         		[0x       0 : 0]
> sit_version_bitmap[2]         		[0x       0 : 0]
> sit_version_bitmap[3]         		[0x       0 : 0]
> ...
> sit_version_bitmap[47]        		[0x       0 : 0]
> 
> Signed-off-by: Chao Yu <chao@kernel.org>
> ---
>  fsck/mount.c | 31 ++++++++++++++++++++++++++++++-
>  1 file changed, 30 insertions(+), 1 deletion(-)
> 
> diff --git a/fsck/mount.c b/fsck/mount.c
> index e7c4069..6648c69 100644
> --- a/fsck/mount.c
> +++ b/fsck/mount.c
> @@ -563,6 +563,33 @@ printout:
>  	printf("\n");
>  }
>  
> +void print_chksum(struct f2fs_checkpoint *cp)
> +{
> +	unsigned int crc = le32_to_cpu(*(__le32 *)((unsigned char *)cp +
> +						get_cp(checksum_offset)));
> +
> +	printf("%-30s" "\t\t[0x%8x : %u]\n", "checksum", crc, crc);
> +}
> +
> +void print_version_bitmap(struct f2fs_sb_info *sbi)
> +{
> +	char str[30];
> +	int i, j;
> +
> +	for (i = NAT_BITMAP; i <= SIT_BITMAP; i++) {
> +		unsigned int *bitmap = __bitmap_ptr(sbi, i);
> +		unsigned int size = round_up(__bitmap_size(sbi, i), 4);
> +
> +		for (j = 0; j < size; j++) {
> +			snprintf(str, 31, "%s[%d]", i == NAT_BITMAP ?
> +						"nat_version_bitmap" :
> +						"sit_version_bitmap", j);
> +			printf("%-30s" "\t\t[0x%8x : %u]\n", str,
> +						bitmap[i], bitmap[i]);
> +		}
> +	}
> +}
> +
>  void print_ckpt_info(struct f2fs_sb_info *sbi)
>  {
>  	struct f2fs_checkpoint *cp = F2FS_CKPT(sbi);
> @@ -618,7 +645,9 @@ printout:
>  	DISP_u32(cp, checksum_offset);
>  	DISP_u64(cp, elapsed_time);
>  
> -	DISP_u32(cp, sit_nat_version_bitmap[0]);
> +	print_chksum(cp);
> +	print_version_bitmap(sbi);
> +
>  	printf("\n\n");
>  }
>  
> -- 
> 2.49.0
diff mbox series

Patch

diff --git a/fsck/mount.c b/fsck/mount.c
index e7c4069..6648c69 100644
--- a/fsck/mount.c
+++ b/fsck/mount.c
@@ -563,6 +563,33 @@  printout:
 	printf("\n");
 }
 
+void print_chksum(struct f2fs_checkpoint *cp)
+{
+	unsigned int crc = le32_to_cpu(*(__le32 *)((unsigned char *)cp +
+						get_cp(checksum_offset)));
+
+	printf("%-30s" "\t\t[0x%8x : %u]\n", "checksum", crc, crc);
+}
+
+void print_version_bitmap(struct f2fs_sb_info *sbi)
+{
+	char str[30];
+	int i, j;
+
+	for (i = NAT_BITMAP; i <= SIT_BITMAP; i++) {
+		unsigned int *bitmap = __bitmap_ptr(sbi, i);
+		unsigned int size = round_up(__bitmap_size(sbi, i), 4);
+
+		for (j = 0; j < size; j++) {
+			snprintf(str, 31, "%s[%d]", i == NAT_BITMAP ?
+						"nat_version_bitmap" :
+						"sit_version_bitmap", j);
+			printf("%-30s" "\t\t[0x%8x : %u]\n", str,
+						bitmap[i], bitmap[i]);
+		}
+	}
+}
+
 void print_ckpt_info(struct f2fs_sb_info *sbi)
 {
 	struct f2fs_checkpoint *cp = F2FS_CKPT(sbi);
@@ -618,7 +645,9 @@  printout:
 	DISP_u32(cp, checksum_offset);
 	DISP_u64(cp, elapsed_time);
 
-	DISP_u32(cp, sit_nat_version_bitmap[0]);
+	print_chksum(cp);
+	print_version_bitmap(sbi);
+
 	printf("\n\n");
 }