示例#1
0
文件: btree.c 项目: taysom/tau
void stat_block (dev_s *dev, u64 blkno, btree_stat_s *bs, int height)
{
	void	*data;

	data = bget(dev, blkno);
	if (!data) return;

	switch (type(data)) {
	case LEAF:	stat_leaf(data, bs);
			break;
	case BRANCH:	stat_branch(dev, data, bs, height + 1);
			break;
	default:	eprintf("Unknown block type %d\n", type(data));
			break;
	}
	if (height > bs->st_height) {
		bs->st_height = height;
	}
	bput(data);
}
示例#2
0
文件: mtree.c 项目: wtaysom/tau
void stat_node (
	void		*node,
	btree_stat_s	*bs,
	unint		height)
{
	head_s	*h = node;

	if (!h) return;

	switch (h->h_magic) {
	case LEAF:	stat_leaf(node, bs);
			break;
	case BRANCH:	stat_branch(node, bs, height + 1);
			break;
	default:	eprintf("Unknown block magic %x\n", h->h_magic);
			break;
	}
	if (height > bs->st_height) {
		bs->st_height = height;
	}
}
示例#3
0
static void stat_node (
	struct address_space	*mapping,
	u64			blknum,
	btree_stat_s		*bs,
	unint			height)
{
	head_s	*h;

	h = tau_bget(mapping, blknum);
	if (!h) return;

	switch (h->h_magic) {
	case LEAF:	stat_leaf((leaf_s *)h, bs);
			break;
	case BRANCH:	stat_branch(mapping, (branch_s *)h, bs, height + 1);
			break;
	default:	eprintk("Unknown block magic %x\n", h->h_magic);
			break;
	}
	if (height > bs->st_height) {
		bs->st_height = height;
	}
	tau_bput(h);
}