[PATCH v4 1/2] btrfs-progs: export util functions about file extent items
From: Sidong Yang <hidden>
Date: 2021-07-18 06:47:47
Subsystem:
the rest · Maintainer:
Linus Torvalds
This patch export two functions that convert enum about file extents to string. It can be used in other code like inspect-internal command. And this patch also make compress_type_to_str() function more safe by using strncpy() than strcpy(). Signed-off-by: Sidong Yang <redacted> --- kernel-shared/print-tree.c | 18 +++++++++--------- kernel-shared/print-tree.h | 5 +++++ 2 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/kernel-shared/print-tree.c b/kernel-shared/print-tree.c
index e5d4b453..ce1c0ed3 100644
--- a/kernel-shared/print-tree.c
+++ b/kernel-shared/print-tree.c@@ -338,27 +338,27 @@ static void print_uuids(struct extent_buffer *eb) printf("fs uuid %s\nchunk uuid %s\n", fs_uuid, chunk_uuid); } -static void compress_type_to_str(u8 compress_type, char *ret) +void btrfs_compress_type_to_str(u8 compress_type, char *ret) { switch (compress_type) { case BTRFS_COMPRESS_NONE: - strcpy(ret, "none"); + strncpy(ret, "none", BTRFS_COMPRESS_STR_LEN); break; case BTRFS_COMPRESS_ZLIB: - strcpy(ret, "zlib"); + strncpy(ret, "zlib", BTRFS_COMPRESS_STR_LEN); break; case BTRFS_COMPRESS_LZO: - strcpy(ret, "lzo"); + strncpy(ret, "lzo", BTRFS_COMPRESS_STR_LEN); break; case BTRFS_COMPRESS_ZSTD: - strcpy(ret, "zstd"); + strncpy(ret, "zstd", BTRFS_COMPRESS_STR_LEN); break; default: - sprintf(ret, "UNKNOWN.%d", compress_type); + snprintf(ret, BTRFS_COMPRESS_STR_LEN, "UNKNOWN.%d", compress_type); } } -static const char* file_extent_type_to_str(u8 type) +const char* btrfs_file_extent_type_to_str(u8 type) { switch (type) { case BTRFS_FILE_EXTENT_INLINE: return "inline";
@@ -376,12 +376,12 @@ static void print_file_extent_item(struct extent_buffer *eb, unsigned char extent_type = btrfs_file_extent_type(eb, fi); char compress_str[16]; - compress_type_to_str(btrfs_file_extent_compression(eb, fi), + btrfs_compress_type_to_str(btrfs_file_extent_compression(eb, fi), compress_str); printf("\t\tgeneration %llu type %hhu (%s)\n", btrfs_file_extent_generation(eb, fi), - extent_type, file_extent_type_to_str(extent_type)); + extent_type, btrfs_file_extent_type_to_str(extent_type)); if (extent_type == BTRFS_FILE_EXTENT_INLINE) { printf("\t\tinline extent data size %u ram_bytes %llu compression %hhu (%s)\n",
diff --git a/kernel-shared/print-tree.h b/kernel-shared/print-tree.h
index 80fb6ef7..3b96e89d 100644
--- a/kernel-shared/print-tree.h
+++ b/kernel-shared/print-tree.h@@ -33,6 +33,8 @@ enum { BTRFS_PRINT_TREE_DEFAULT = BTRFS_PRINT_TREE_BFS, }; +#define BTRFS_COMPRESS_STR_LEN 12 + void btrfs_print_tree(struct extent_buffer *eb, unsigned int mode); void btrfs_print_leaf(struct extent_buffer *eb, unsigned int mode);
@@ -43,4 +45,7 @@ void print_objectid(FILE *stream, u64 objectid, u8 type); void print_key_type(FILE *stream, u64 objectid, u8 type); void btrfs_print_superblock(struct btrfs_super_block *sb, int full); +void btrfs_compress_type_to_str(u8 compress_type, char *ret); +const char* btrfs_file_extent_type_to_str(u8 type); + #endif
--
2.25.1