Btrfs-progs: pretty print dir_item type

Instead of printing an integer, print a symbolic name which
is more human friendly. Particularly useful when using the
program btrfs-debug-tree.

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
This commit is contained in:
Filipe David Borba Manana 2013-06-10 20:51:34 +01:00 committed by David Sterba
parent 76dabfb64f
commit e4d53a0b19
1 changed files with 39 additions and 1 deletions

View File

@ -25,6 +25,42 @@
#include "disk-io.h"
#include "print-tree.h"
static void print_dir_item_type(struct extent_buffer *eb,
struct btrfs_dir_item *di)
{
u8 type = btrfs_dir_type(eb, di);
switch (type) {
case BTRFS_FT_REG_FILE:
printf("FILE");
break;
case BTRFS_FT_DIR:
printf("DIR");
break;
case BTRFS_FT_CHRDEV:
printf("CHRDEV");
break;
case BTRFS_FT_BLKDEV:
printf("BLKDEV");
break;
case BTRFS_FT_FIFO:
printf("FIFO");
break;
case BTRFS_FT_SOCK:
printf("SOCK");
break;
case BTRFS_FT_SYMLINK:
printf("SYMLINK");
break;
case BTRFS_FT_XATTR:
printf("XATTR");
break;
default:
printf("%u", type);
}
}
static int print_dir_item(struct extent_buffer *eb, struct btrfs_item *item,
struct btrfs_dir_item *di)
{
@ -41,7 +77,9 @@ static int print_dir_item(struct extent_buffer *eb, struct btrfs_item *item,
btrfs_dir_item_key(eb, di, &location);
printf("\t\tlocation ");
btrfs_print_key(&location);
printf(" type %u\n", btrfs_dir_type(eb, di));
printf(" type ");
print_dir_item_type(eb, di);
printf("\n");
name_len = btrfs_dir_name_len(eb, di);
data_len = btrfs_dir_data_len(eb, di);
len = (name_len <= sizeof(namebuf))? name_len: sizeof(namebuf);