Print extents instead of bmap items

Print the extent items now that we're not using bmap items any more.

Signed-off-by: Zach Brown <zab@versity.com>
This commit is contained in:
Zach Brown
2016-11-15 15:59:02 -08:00
parent c2cfb0227f
commit 22140c93d1
2 changed files with 20 additions and 33 deletions

View File

@@ -113,7 +113,7 @@ struct scoutfs_key {
#define SCOUTFS_DIRENT_KEY 5
#define SCOUTFS_LINK_BACKREF_KEY 6
#define SCOUTFS_SYMLINK_KEY 7
#define SCOUTFS_BMAP_KEY 8
#define SCOUTFS_EXTENT_KEY 8
#define SCOUTFS_ORPHAN_KEY 9
#define SCOUTFS_MAX_ITEM_LEN 512
@@ -259,11 +259,8 @@ struct scoutfs_dirent {
#define SCOUTFS_NAME_LEN 255
/*
* Just to keep sloppy (int) apps from being confused. 2^31 is good
* enough for everybody.
*/
#define SCOUTFS_LINK_MAX (1 << 31)
/* S32_MAX avoids the (int) sign bit and might avoid sloppy bugs */
#define SCOUTFS_LINK_MAX S32_MAX
/*
* We only use 31 bits for readdir positions so that we don't confuse
@@ -296,23 +293,13 @@ struct scoutfs_xattr {
__u8 name[0];
} __packed;
/*
* We use simple block map items to map a aligned fixed group of logical
* block offsets to physical blocks. We make them a decent size to
* reduce the item storage overhead per block referenced, but we don't
* want them so large that they start to take up an extraordinary amount
* of space for small files. 8 block items ranges from around 3% to .3%
* overhead for files that use only one or all of the blocks in the
* mapping item.
*/
#define SCOUTFS_BLOCK_MAP_SHIFT 3
#define SCOUTFS_BLOCK_MAP_COUNT (1 << SCOUTFS_BLOCK_MAP_SHIFT)
#define SCOUTFS_BLOCK_MAP_MASK (SCOUTFS_BLOCK_MAP_COUNT - 1)
struct scoutfs_file_extent {
__le64 blkno;
__le64 len;
__u8 flags;
} __packed;
struct scoutfs_block_map {
__le64 blkno[SCOUTFS_BLOCK_MAP_COUNT];
__le64 seq[SCOUTFS_BLOCK_MAP_COUNT];
};
#define SCOUTFS_EXTENT_FLAG_OFFLINE (1 << 0)
/*
* link backrefs give us a way to find all the hard links that refer

View File

@@ -122,16 +122,16 @@ static void print_symlink(char *str, unsigned int val_len)
printf(" symlink: %.*s\n", val_len, str);
}
static void print_block_map(struct scoutfs_block_map *map)
{
int i;
#define EXT_FLAG(f, flags, str) \
(flags & f) ? str : "", (flags & (f - 1)) ? "|" : ""
printf(" bmap:");
for (i = 0; i < SCOUTFS_BLOCK_MAP_COUNT; i++)
printf(" [%u] %llu:%llu",
i, le64_to_cpu(map->blkno[i]),
le64_to_cpu(map->seq[i]));
printf("\n");
static void print_extent(struct scoutfs_key *key,
struct scoutfs_file_extent *ext)
{
printf(" extent: (offest %llu) blkno %llu, len %llu flags %s%s\n",
le64_to_cpu(key->offset), le64_to_cpu(ext->blkno),
le64_to_cpu(ext->len),
EXT_FLAG(SCOUTFS_EXTENT_FLAG_OFFLINE, ext->flags, "OFF"));
}
static void print_block_ref(struct scoutfs_block_ref *ref)
@@ -168,8 +168,8 @@ static void print_btree_val(struct scoutfs_btree_item *item, u8 level)
case SCOUTFS_SYMLINK_KEY:
print_symlink((void *)item->val, le16_to_cpu(item->val_len));
break;
case SCOUTFS_BMAP_KEY:
print_block_map((void *)item->val);
case SCOUTFS_EXTENT_KEY:
print_extent(&item->key, (void *)item->val);
break;
}
}