From 7d674fa4bfe635d70d4d7698a9ea60fc9e0f190d Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Mon, 29 Jan 2018 10:45:17 -0800 Subject: [PATCH] scoutfs-utils: remove size inode index items With the removal of the size index items we no longer have to print them or be able to walk the index. mkfs only needs to create a meta seq index item for the root inode. Signed-off-by: Zach Brown --- utils/src/format.h | 7 +++---- utils/src/ioctl.h | 3 +-- utils/src/key.c | 3 --- utils/src/mkfs.c | 33 ++++++++++++++------------------- utils/src/print.c | 2 +- utils/src/walk_inodes.c | 8 +++----- 6 files changed, 22 insertions(+), 34 deletions(-) diff --git a/utils/src/format.h b/utils/src/format.h index 03e49d7c..90d1d4c7 100644 --- a/utils/src/format.h +++ b/utils/src/format.h @@ -237,10 +237,9 @@ struct scoutfs_segment_block { #define SCOUTFS_MAX_ZONE 4 /* power of 2 is efficient */ /* inode index zone */ -#define SCOUTFS_INODE_INDEX_SIZE_TYPE 1 -#define SCOUTFS_INODE_INDEX_META_SEQ_TYPE 2 -#define SCOUTFS_INODE_INDEX_DATA_SEQ_TYPE 3 -#define SCOUTFS_INODE_INDEX_NR 4 /* don't forget to update */ +#define SCOUTFS_INODE_INDEX_META_SEQ_TYPE 1 +#define SCOUTFS_INODE_INDEX_DATA_SEQ_TYPE 2 +#define SCOUTFS_INODE_INDEX_NR 3 /* don't forget to update */ /* node zone */ #define SCOUTFS_FREE_BITS_SEGNO_TYPE 1 diff --git a/utils/src/ioctl.h b/utils/src/ioctl.h index e9a78db0..34917a34 100644 --- a/utils/src/ioctl.h +++ b/utils/src/ioctl.h @@ -51,8 +51,7 @@ struct scoutfs_ioctl_walk_inodes { } __packed; enum { - SCOUTFS_IOC_WALK_INODES_SIZE = 0, - SCOUTFS_IOC_WALK_INODES_META_SEQ, + SCOUTFS_IOC_WALK_INODES_META_SEQ = 0, SCOUTFS_IOC_WALK_INODES_DATA_SEQ, SCOUTFS_IOC_WALK_INODES_UNKNOWN, }; diff --git a/utils/src/key.c b/utils/src/key.c index 7588ea7f..268525c2 100644 --- a/utils/src/key.c +++ b/utils/src/key.c @@ -184,7 +184,6 @@ typedef int (*key_printer_t)(char *buf, struct scoutfs_key_buf *key, static int pr_ino_idx(char *buf, struct scoutfs_key_buf *key, size_t size) { static char *type_strings[] = { - [SCOUTFS_INODE_INDEX_SIZE_TYPE] = "siz", [SCOUTFS_INODE_INDEX_META_SEQ_TYPE] = "msq", [SCOUTFS_INODE_INDEX_DATA_SEQ_TYPE] = "dsq", }; @@ -302,8 +301,6 @@ static int pr_block_mapping(char *buf, struct scoutfs_key_buf *key, size_t size) } const static key_printer_t key_printers[SCOUTFS_MAX_ZONE][SCOUTFS_MAX_TYPE] = { - [SCOUTFS_INODE_INDEX_ZONE][SCOUTFS_INODE_INDEX_SIZE_TYPE] = - pr_ino_idx, [SCOUTFS_INODE_INDEX_ZONE][SCOUTFS_INODE_INDEX_META_SEQ_TYPE] = pr_ino_idx, [SCOUTFS_INODE_INDEX_ZONE][SCOUTFS_INODE_INDEX_DATA_SEQ_TYPE] = diff --git a/utils/src/mkfs.c b/utils/src/mkfs.c index 86543c10..96497e47 100644 --- a/utils/src/mkfs.c +++ b/utils/src/mkfs.c @@ -261,7 +261,7 @@ static int write_new_fs(char *path, int fd) mkey->level = 1; idx_key->zone = SCOUTFS_INODE_INDEX_ZONE; - idx_key->type = SCOUTFS_INODE_INDEX_SIZE_TYPE; + idx_key->type = SCOUTFS_INODE_INDEX_META_SEQ_TYPE; idx_key->major = 0; idx_key->minor = 0; idx_key->ino = cpu_to_be64(SCOUTFS_ROOT_INO); @@ -294,26 +294,21 @@ static int write_new_fs(char *path, int fd) *prev_link = cpu_to_le32((long)item -(long)sblk); prev_link = &item->skip_links[0]; - /* write the root inode index keys */ - for (i = SCOUTFS_INODE_INDEX_SIZE_TYPE; - i <= SCOUTFS_INODE_INDEX_META_SEQ_TYPE; i++) { + item->key_len = cpu_to_le16(sizeof(*idx_key)); + item->val_len = 0; + item->nr_links = 1; + le32_add_cpu(&sblk->nr_items, 1); - item->key_len = cpu_to_le16(sizeof(*idx_key)); - item->val_len = 0; - item->nr_links = 1; - le32_add_cpu(&sblk->nr_items, 1); + idx_key = (void *)&item->skip_links[1]; + idx_key->zone = SCOUTFS_INODE_INDEX_ZONE; + idx_key->type = SCOUTFS_INODE_INDEX_META_SEQ_TYPE; + idx_key->ino = cpu_to_be64(SCOUTFS_ROOT_INO); + idx_key->major = 0; + idx_key->minor = 0; - idx_key = (void *)&item->skip_links[1]; - idx_key->zone = SCOUTFS_INODE_INDEX_ZONE; - idx_key->type = i; - idx_key->ino = cpu_to_be64(SCOUTFS_ROOT_INO); - idx_key->major = 0; - idx_key->minor = 0; - - item = (void *)(idx_key + 1); - *prev_link = cpu_to_le32((long)item -(long)sblk); - prev_link = &item->skip_links[0]; - } + item = (void *)(idx_key + 1); + *prev_link = cpu_to_le32((long)item -(long)sblk); + prev_link = &item->skip_links[0]; sblk->last_item_off = cpu_to_le32((long)item - (long)sblk); diff --git a/utils/src/print.c b/utils/src/print.c index 6595c20c..a22caaaa 100644 --- a/utils/src/print.c +++ b/utils/src/print.c @@ -232,7 +232,7 @@ typedef void (*print_func_t)(void *key, int key_len, void *val, int val_len); static print_func_t find_printer(u8 zone, u8 type) { if (zone == SCOUTFS_INODE_INDEX_ZONE && - type >= SCOUTFS_INODE_INDEX_SIZE_TYPE && + type >= SCOUTFS_INODE_INDEX_META_SEQ_TYPE && type <= SCOUTFS_INODE_INDEX_DATA_SEQ_TYPE) return print_inode_index; diff --git a/utils/src/walk_inodes.c b/utils/src/walk_inodes.c index c6b0bc99..6cf36d5a 100644 --- a/utils/src/walk_inodes.c +++ b/utils/src/walk_inodes.c @@ -80,15 +80,13 @@ static int walk_inodes_cmd(int argc, char **argv) return -EINVAL; } - if (!strcasecmp(argv[1], "size")) - walk.index = SCOUTFS_IOC_WALK_INODES_SIZE; - else if (!strcasecmp(argv[1], "meta_seq")) + if (!strcasecmp(argv[1], "meta_seq")) walk.index = SCOUTFS_IOC_WALK_INODES_META_SEQ; else if (!strcasecmp(argv[1], "data_seq")) walk.index = SCOUTFS_IOC_WALK_INODES_DATA_SEQ; else { - fprintf(stderr, "unknown index '%s', try 'size', 'ctime, or " - "mtime'\n", argv[1]); + fprintf(stderr, "unknown index '%s', try 'meta_seq' or " + "'data_seq'\n", argv[1]); return -EINVAL; }