changelog shortlog tags files raw

changeset: The "Jon Corbet" patch. Get rid of SB and BTREE macros, spell it like it is.

changeset 580: 05354dc10bec
parent 579:84f78bf68220
child 581:8eb99e3d9904
author: daniel@moonbase.phunq.net
date: Tue Dec 02 23:12:28 2008 -0800 (20 months ago)
files: user/btree.c user/dleaf.c user/filemap.c user/iattr.c user/ileaf.c user/inode.c user/kernel/balloc.c user/kernel/btree.c user/kernel/dleaf.c user/kernel/ileaf.c user/kernel/inode.c user/kernel/super.c user/kernel/tux3.h user/kernel/xattr.c user/super.c user/tux3.h user/tux3graph.c user/xattr.c
description: The "Jon Corbet" patch. Get rid of SB and BTREE macros, spell it like it is.
       1--- a/user/btree.c	Wed Dec 03 12:59:43 2008 +0900
       2+++ b/user/btree.c	Tue Dec 02 23:12:28 2008 -0800
       3@@ -33,28 +33,28 @@ static inline struct uleaf *to_uleaf(vle
       4 	return leaf;
       5 }
       6 
       7-int uleaf_sniff(BTREE, vleaf *leaf)
       8+int uleaf_sniff(struct btree *btree, vleaf *leaf)
       9 {
      10 	return to_uleaf(leaf)->magic == 0xc0de;
      11 }
      12 
      13-int uleaf_init(BTREE, vleaf *leaf)
      14+int uleaf_init(struct btree *btree, vleaf *leaf)
      15 {
      16 	*to_uleaf(leaf) = (struct uleaf){ .magic = 0xc0de };
      17 	return 0;
      18 }
      19 
      20-unsigned uleaf_need(BTREE, vleaf *leaf)
      21+unsigned uleaf_need(struct btree *btree, vleaf *leaf)
      22 {
      23 	return to_uleaf(leaf)->count;
      24 }
      25 
      26-unsigned uleaf_free(BTREE, vleaf *leaf)
      27+unsigned uleaf_free(struct btree *btree, vleaf *leaf)
      28 {
      29 	return btree->entries_per_leaf - to_uleaf(leaf)->count;
      30 }
      31 
      32-void uleaf_dump(BTREE, vleaf *data)
      33+void uleaf_dump(struct btree *btree, vleaf *data)
      34 {
      35 	struct uleaf *leaf = data;
      36 	printf("leaf %p/%i", leaf, leaf->count);
      37@@ -64,7 +64,7 @@ void uleaf_dump(BTREE, vleaf *data)
      38 	printf(" (%x free)\n", uleaf_free(btree, leaf));
      39 }
      40 
      41-tuxkey_t uleaf_split(BTREE, tuxkey_t key, vleaf *from, vleaf *into)
      42+tuxkey_t uleaf_split(struct btree *btree, tuxkey_t key, vleaf *from, vleaf *into)
      43 {
      44 	assert(uleaf_sniff(btree, from));
      45 	struct uleaf *leaf = from;
      46@@ -79,7 +79,7 @@ tuxkey_t uleaf_split(BTREE, tuxkey_t key
      47 	return at < leaf->count ? to_uleaf(into)->entries[0].key : key;
      48 }
      49 
      50-unsigned uleaf_seek(BTREE, tuxkey_t key, struct uleaf *leaf)
      51+unsigned uleaf_seek(struct btree *btree, tuxkey_t key, struct uleaf *leaf)
      52 {
      53 	unsigned at = 0;
      54 	while (at < leaf->count && leaf->entries[at].key < key)
      55@@ -87,7 +87,7 @@ unsigned uleaf_seek(BTREE, tuxkey_t key,
      56 	return at;
      57 }
      58 
      59-int uleaf_chop(BTREE, tuxkey_t key, vleaf *vleaf)
      60+int uleaf_chop(struct btree *btree, tuxkey_t key, vleaf *vleaf)
      61 {
      62 	struct uleaf *leaf = vleaf;
      63 	unsigned at = uleaf_seek(btree, key, leaf);
      64@@ -95,7 +95,7 @@ int uleaf_chop(BTREE, tuxkey_t key, vlea
      65 	return 1;
      66 }
      67 
      68-void *uleaf_resize(BTREE, tuxkey_t key, vleaf *data, unsigned one)
      69+void *uleaf_resize(struct btree *btree, tuxkey_t key, vleaf *data, unsigned one)
      70 {
      71 	assert(uleaf_sniff(btree, data));
      72 	struct uleaf *leaf = data;
      73@@ -107,7 +107,7 @@ void *uleaf_resize(BTREE, tuxkey_t key, 
      74 	return leaf->entries + at;
      75 }
      76 
      77-void uleaf_merge(BTREE, vleaf *into, vleaf *from)
      78+void uleaf_merge(struct btree *btree, vleaf *into, vleaf *from)
      79 {
      80 }
      81 
      82@@ -124,13 +124,13 @@ struct btree_ops ops = {
      83 	.balloc = balloc,
      84 };
      85 
      86-block_t balloc(SB)
      87+block_t balloc(struct sb *sb)
      88 {
      89 	printf("-> %Lx\n", (L)sb->nextalloc);
      90 	return sb->nextalloc++;
      91 }
      92 
      93-int uleaf_insert(BTREE, struct uleaf *leaf, unsigned key, unsigned val)
      94+int uleaf_insert(struct btree *btree, struct uleaf *leaf, unsigned key, unsigned val)
      95 {
      96 	printf("insert 0x%x -> 0x%x\n", key, val);
      97 	struct uentry *entry = uleaf_resize(btree, key, leaf, 1);
      98@@ -145,7 +145,7 @@ int main(int argc, char *argv[])
      99 {
     100 	struct dev *dev = &(struct dev){ .bits = 6 };
     101 	map_t *map = new_map(dev, NULL);
     102-	SB = &(struct sb){ .devmap = map, .blocksize = 1 << dev->bits };
     103+	struct sb *sb = &(struct sb){ .devmap = map, .blocksize = 1 << dev->bits };
     104 	map->inode = &(struct inode){ .i_sb = sb, .map = map };
     105 	init_buffers(dev, 1 << 20);
     106 	sb->entries_per_node = (sb->blocksize - offsetof(struct bnode, entries)) / sizeof(struct index_entry);
     1.1--- a/user/dleaf.c	Wed Dec 03 12:59:43 2008 +0900
     1.2+++ b/user/dleaf.c	Tue Dec 02 23:12:28 2008 -0800
     1.3@@ -23,30 +23,30 @@
     1.4 #include "kernel/dleaf.c"
     1.5 
     1.6 #ifndef main
     1.7-block_t balloc(SB)
     1.8+block_t balloc(struct sb *sb)
     1.9 {
    1.10 	return sb->nextalloc++;
    1.11 }
    1.12 
    1.13-void bfree(SB, block_t block)
    1.14+void bfree(struct sb *sb, block_t block)
    1.15 {
    1.16 	printf(" free %Lx\n", (L)block);
    1.17 }
    1.18 
    1.19-struct dleaf *dleaf_create(BTREE)
    1.20+struct dleaf *dleaf_create(struct btree *btree)
    1.21 {
    1.22 	struct dleaf *leaf = malloc(btree->sb->blocksize);
    1.23 	dleaf_init(btree, leaf);
    1.24 	return leaf;
    1.25 }
    1.26 
    1.27-void dleaf_destroy(BTREE, struct dleaf *leaf)
    1.28+void dleaf_destroy(struct btree *btree, struct dleaf *leaf)
    1.29 {
    1.30 	assert(dleaf_sniff(btree, leaf));
    1.31 	free(leaf);
    1.32 }
    1.33 
    1.34-void *dleaf_lookup(BTREE, struct dleaf *leaf, tuxkey_t index, unsigned *count)
    1.35+void *dleaf_lookup(struct btree *btree, struct dleaf *leaf, tuxkey_t index, unsigned *count)
    1.36 {
    1.37 	struct group *groups = (void *)leaf + btree->sb->blocksize, *grbase = groups - dleaf_groups(leaf);
    1.38 	struct entry *entries = (void *)grbase;
    1.39@@ -73,7 +73,7 @@ int main(int argc, char *argv[])
    1.40 int main(int argc, char *argv[])
    1.41 {
    1.42 	printf("--- leaf test ---\n");
    1.43-	SB = &(struct sb){ .blocksize = 1 << 10 };
    1.44+	struct sb *sb = &(struct sb){ .blocksize = 1 << 10 };
    1.45 	struct btree *btree = &(struct btree){ .sb = sb, .ops = &dtree_ops };
    1.46 	struct dleaf *leaf = dleaf_create(btree);
    1.47 	dleaf_chop(btree, 0x14014LL, leaf);
     2.1--- a/user/filemap.c	Wed Dec 03 12:59:43 2008 +0900
     2.2+++ b/user/filemap.c	Tue Dec 02 23:12:28 2008 -0800
     2.3@@ -57,7 +57,7 @@ int main(int argc, char *argv[])
     2.4 	if (fdsize64(fd, &size))
     2.5 		error("fdsize64 failed for '%s' (%s)", name, strerror(errno));
     2.6 	struct dev *dev = &(struct dev){ fd, .bits = 8 };
     2.7-	SB = &(struct sb){
     2.8+	struct sb *sb = &(struct sb){
     2.9 		.max_inodes_per_block = 64,
    2.10 		.entries_per_node = 20,
    2.11 		.devmap = new_map(dev, NULL),
     3.1--- a/user/iattr.c	Wed Dec 03 12:59:43 2008 +0900
     3.2+++ b/user/iattr.c	Tue Dec 02 23:12:28 2008 -0800
     3.3@@ -29,7 +29,7 @@ int main(int argc, char *argv[])
     3.4 int main(int argc, char *argv[])
     3.5 {
     3.6 	unsigned abits = DATA_BTREE_BIT|CTIME_SIZE_BIT|MODE_OWNER_BIT|LINK_COUNT_BIT|MTIME_BIT;
     3.7-	SB = &(struct sb){ .version = 0, .blocksize = 1 << 9, };
     3.8+	struct sb *sb = &(struct sb){ .version = 0, .blocksize = 1 << 9, };
     3.9 	struct inode *inode = &(struct inode){ .i_sb = sb,
    3.10 		.present = abits, .i_mode = 0x666, .i_uid = 0x12121212, .i_gid = 0x34343434,
    3.11 		.btree = { .root = { .block = 0xcaba1f00dULL, .depth = 3 } },
     4.1--- a/user/ileaf.c	Wed Dec 03 12:59:43 2008 +0900
     4.2+++ b/user/ileaf.c	Tue Dec 02 23:12:28 2008 -0800
     4.3@@ -26,20 +26,20 @@
     4.4 #include "kernel/ileaf.c"
     4.5 
     4.6 #ifndef main
     4.7-struct ileaf *ileaf_create(BTREE)
     4.8+struct ileaf *ileaf_create(struct btree *btree)
     4.9 {
    4.10 	struct ileaf *leaf = malloc(btree->sb->blocksize);
    4.11 	ileaf_init(btree, leaf);
    4.12 	return leaf;
    4.13 }
    4.14 
    4.15-void ileaf_destroy(BTREE, struct ileaf *leaf)
    4.16+void ileaf_destroy(struct btree *btree, struct ileaf *leaf)
    4.17 {
    4.18 	assert(ileaf_sniff(btree, leaf));
    4.19 	free(leaf);
    4.20 }
    4.21 
    4.22-void test_append(BTREE, struct ileaf *leaf, inum_t inum, int more, char fill)
    4.23+void test_append(struct btree *btree, struct ileaf *leaf, inum_t inum, int more, char fill)
    4.24 {
    4.25 	unsigned size = 0;
    4.26 	char *attrs = ileaf_lookup(btree, inum, leaf, &size);
    4.27@@ -48,7 +48,7 @@ void test_append(BTREE, struct ileaf *le
    4.28 	memset(attrs + size, fill, more);
    4.29 }
    4.30 
    4.31-void test_remove(BTREE, struct ileaf *leaf, inum_t inum, int less)
    4.32+void test_remove(struct btree *btree, struct ileaf *leaf, inum_t inum, int less)
    4.33 {
    4.34 	unsigned size = 0;
    4.35 	char *attrs = ileaf_lookup(btree, inum, leaf, &size);
    4.36@@ -56,7 +56,7 @@ void test_remove(BTREE, struct ileaf *le
    4.37 	attrs = ileaf_resize(btree, inum, leaf, size - less);
    4.38 }
    4.39 
    4.40-block_t balloc(SB)
    4.41+block_t balloc(struct sb *sb)
    4.42 {
    4.43 	return sb->nextalloc++;
    4.44 }
    4.45@@ -64,7 +64,7 @@ int main(int argc, char *argv[])
    4.46 int main(int argc, char *argv[])
    4.47 {
    4.48 	printf("--- test inode table leaf methods ---\n");
    4.49-	SB = &(struct sb){ .blocksize = 4096 };
    4.50+	struct sb *sb = &(struct sb){ .blocksize = 4096 };
    4.51 	struct btree *btree = &(struct btree){ .sb = sb, .ops = &itable_ops };
    4.52 	btree->entries_per_leaf = 64; // !!! should depend on blocksize
    4.53 	struct ileaf *leaf = ileaf_create(btree);
     5.1--- a/user/inode.c	Wed Dec 03 12:59:43 2008 +0900
     5.2+++ b/user/inode.c	Tue Dec 02 23:12:28 2008 -0800
     5.3@@ -19,7 +19,7 @@
     5.4 #include "filemap.c"
     5.5 #undef main
     5.6 
     5.7-struct inode *new_inode(SB, inum_t inum)
     5.8+struct inode *new_inode(struct sb *sb, inum_t inum)
     5.9 {
    5.10 	map_t *map = new_map(sb->devmap->dev, &filemap_ops);
    5.11 	if (!map)
    5.12@@ -183,7 +183,7 @@ int main(int argc, char *argv[])
    5.13 		error("fdsize64 failed for '%s' (%s)", name, strerror(errno));
    5.14 	struct dev *dev = &(struct dev){ fd, .bits = 12 };
    5.15 	init_buffers(dev, 1 << 20);
    5.16-	SB = &(struct sb){
    5.17+	struct sb *sb = &(struct sb){
    5.18 		.max_inodes_per_block = 64,
    5.19 		.entries_per_node = 20,
    5.20 		.devmap = new_map(dev, NULL),
     6.1--- a/user/kernel/balloc.c	Wed Dec 03 12:59:43 2008 +0900
     6.2+++ b/user/kernel/balloc.c	Tue Dec 02 23:12:28 2008 -0800
     6.3@@ -225,7 +225,7 @@ block_t balloc_from_range(struct inode *
     6.4 	return balloc_extent_from_range(inode, start, count, 1);
     6.5 }
     6.6 
     6.7-block_t balloc(SB)
     6.8+block_t balloc(struct sb *sb)
     6.9 {
    6.10 	trace_off("balloc block at goal %Lx", (L)sb->nextalloc);
    6.11 	block_t goal = sb->nextalloc, total = sb->volblocks, block;
    6.12@@ -239,7 +239,7 @@ found:
    6.13 	return block;
    6.14 }
    6.15 
    6.16-block_t balloc_extent(SB, unsigned blocks)
    6.17+block_t balloc_extent(struct sb *sb, unsigned blocks)
    6.18 {
    6.19 	trace_off("balloc %x blocks at goal %Lx", blocks, (L)sb->nextalloc);
    6.20 	block_t goal = sb->nextalloc, total = sb->volblocks, block;
    6.21@@ -253,7 +253,7 @@ found:
    6.22 	return block;
    6.23 }
    6.24 
    6.25-void bfree_extent(SB, block_t start, unsigned count)
    6.26+void bfree_extent(struct sb *sb, block_t start, unsigned count)
    6.27 {
    6.28 	unsigned mapshift = sb->blockbits + 3;
    6.29 	unsigned mapmask = (1 << mapshift) - 1;
    6.30@@ -277,7 +277,7 @@ eek:
    6.31 	warn("extent 0x%Lx %s!\n", (L)start, why);
    6.32 }
    6.33 
    6.34-void bfree(SB, block_t block)
    6.35+void bfree(struct sb *sb, block_t block)
    6.36 {
    6.37 	bfree_extent(sb, block, 1);
    6.38 }
     7.1--- a/user/kernel/btree.c	Wed Dec 03 12:59:43 2008 +0900
     7.2+++ b/user/kernel/btree.c	Tue Dec 02 23:12:28 2008 -0800
     7.3@@ -34,7 +34,7 @@ static inline unsigned bcount(struct bno
     7.4 	return from_be_u32(node->count);
     7.5 }
     7.6 
     7.7-static void free_block(SB, block_t block)
     7.8+static void free_block(struct sb *sb, block_t block)
     7.9 {
    7.10 }
    7.11 
    7.12@@ -171,7 +171,7 @@ void free_cursor(struct cursor *cursor)
    7.13 	free(cursor);
    7.14 }
    7.15 
    7.16-int probe(BTREE, tuxkey_t key, struct cursor *cursor)
    7.17+int probe(struct btree *btree, tuxkey_t key, struct cursor *cursor)
    7.18 {
    7.19 	unsigned i, depth = btree->root.depth;
    7.20 	struct buffer_head *buffer = sb_bread(vfs_sb(btree->sb), btree->root.block);
    7.21@@ -205,7 +205,7 @@ static inline int level_finished(struct 
    7.22 }
    7.23 // also write level_beginning!!!
    7.24 
    7.25-int advance(BTREE, struct cursor *cursor)
    7.26+int advance(struct btree *btree, struct cursor *cursor)
    7.27 {
    7.28 	int depth = btree->root.depth, level = depth;
    7.29 	struct buffer_head *buffer = cursor->path[level].buffer;
    7.30@@ -250,7 +250,7 @@ tuxkey_t next_key(struct cursor *cursor,
    7.31 }
    7.32 // also write this_key!!!
    7.33 
    7.34-void show_tree_range(BTREE, tuxkey_t start, unsigned count)
    7.35+void show_tree_range(struct btree *btree, tuxkey_t start, unsigned count)
    7.36 {
    7.37 	printf("%i level btree at %Li:\n", btree->root.depth, (L)btree->root.block);
    7.38 	struct cursor *cursor = alloc_cursor(btree->root.depth + 1);
    7.39@@ -271,7 +271,7 @@ void show_tree_range(BTREE, tuxkey_t sta
    7.40 
    7.41 /* Deletion */
    7.42 
    7.43-static void brelse_free(SB, struct buffer_head *buffer)
    7.44+static void brelse_free(struct sb *sb, struct buffer_head *buffer)
    7.45 {
    7.46 	brelse(buffer);
    7.47 	if (bufcount(buffer)) {
    7.48@@ -320,12 +320,12 @@ static void merge_nodes(struct bnode *no
    7.49 	node->count = to_be_u32(bcount(node) + bcount(node2));
    7.50 }
    7.51 
    7.52-int delete_from_leaf(BTREE, vleaf *leaf, struct delete_info *info)
    7.53+int delete_from_leaf(struct btree *btree, vleaf *leaf, struct delete_info *info)
    7.54 {
    7.55 	return (btree->ops->leaf_chop)(btree, info->key, leaf);
    7.56 }
    7.57 
    7.58-int tree_chop(BTREE, struct delete_info *info, millisecond_t deadline)
    7.59+int tree_chop(struct btree *btree, struct delete_info *info, millisecond_t deadline)
    7.60 {
    7.61 	int depth = btree->root.depth, level = depth - 1, suspend = 0;
    7.62 	struct cursor *cursor;
    7.63@@ -565,7 +565,7 @@ void *tree_expand(struct btree *btree, t
    7.64 	return NULL;
    7.65 }
    7.66 
    7.67-struct btree new_btree(SB, struct btree_ops *ops)
    7.68+struct btree new_btree(struct sb *sb, struct btree_ops *ops)
    7.69 {
    7.70 	struct btree btree = { .sb = sb, .ops = ops };
    7.71 	struct buffer_head *rootbuf = new_node(&btree);
     8.1--- a/user/kernel/dleaf.c	Wed Dec 03 12:59:43 2008 +0900
     8.2+++ b/user/kernel/dleaf.c	Tue Dec 02 23:12:28 2008 -0800
     8.3@@ -68,7 +68,7 @@ static inline struct dleaf *to_dleaf(vle
     8.4 	return leaf;
     8.5 }
     8.6 
     8.7-int dleaf_init(BTREE, vleaf *leaf)
     8.8+int dleaf_init(struct btree *btree, vleaf *leaf)
     8.9 {
    8.10 	if (!leaf)
    8.11 		return -1;
    8.12@@ -79,22 +79,22 @@ int dleaf_init(BTREE, vleaf *leaf)
    8.13 	return 0;
    8.14 }
    8.15 
    8.16-int dleaf_sniff(BTREE, vleaf *leaf)
    8.17+int dleaf_sniff(struct btree *btree, vleaf *leaf)
    8.18 {
    8.19 	return from_be_u16(to_dleaf(leaf)->magic) == 0x1eaf;
    8.20 }
    8.21 
    8.22-unsigned dleaf_free(BTREE, vleaf *leaf)
    8.23+unsigned dleaf_free(struct btree *btree, vleaf *leaf)
    8.24 {
    8.25 	return from_be_u16(to_dleaf(leaf)->used) - from_be_u16(to_dleaf(leaf)->free);
    8.26 }
    8.27 
    8.28-unsigned dleaf_need(BTREE, struct dleaf *leaf)
    8.29+unsigned dleaf_need(struct btree *btree, struct dleaf *leaf)
    8.30 {
    8.31 	return btree->sb->blocksize - dleaf_free(btree, leaf) - sizeof(struct dleaf);
    8.32 }
    8.33 
    8.34-int dleaf_free2(BTREE, void *vleaf)
    8.35+int dleaf_free2(struct btree *btree, void *vleaf)
    8.36 {
    8.37 	struct dleaf *leaf = vleaf;
    8.38 	struct group *gdict = (void *)leaf + btree->sb->blocksize, *gstop = gdict - dleaf_groups(leaf);
    8.39@@ -105,7 +105,7 @@ int dleaf_free2(BTREE, void *vleaf)
    8.40 	return (void *)entry - (void *)extents;
    8.41 }
    8.42 
    8.43-void dleaf_dump(BTREE, vleaf *vleaf)
    8.44+void dleaf_dump(struct btree *btree, vleaf *vleaf)
    8.45 {
    8.46 	unsigned blocksize = btree->sb->blocksize;
    8.47 	struct dleaf *leaf = vleaf;
    8.48@@ -159,7 +159,7 @@ void dleaf_dump(BTREE, vleaf *vleaf)
    8.49  * But it does truncate so it is getting checked in just for now.
    8.50  */
    8.51 
    8.52-int dleaf_chop(BTREE, tuxkey_t chop, vleaf *vleaf)
    8.53+int dleaf_chop(struct btree *btree, tuxkey_t chop, vleaf *vleaf)
    8.54 {
    8.55 	struct dleaf *leaf = vleaf;
    8.56 	struct group *gdict = (void *)leaf + btree->sb->blocksize, *group = gdict;
    8.57@@ -208,7 +208,7 @@ int dleaf_chop(BTREE, tuxkey_t chop, vle
    8.58 	return 1;
    8.59 }
    8.60 
    8.61-int dleaf_check(BTREE, struct dleaf *leaf)
    8.62+int dleaf_check(struct btree *btree, struct dleaf *leaf)
    8.63 {
    8.64 	struct group *gdict = (void *)leaf + btree->sb->blocksize, *gstop = gdict - dleaf_groups(leaf);
    8.65 	struct entry *edict = (void *)gstop, *entry = edict;
    8.66@@ -238,7 +238,7 @@ eek:
    8.67 	return -1;
    8.68 }
    8.69 
    8.70-tuxkey_t dleaf_split(BTREE, tuxkey_t key, vleaf *from, vleaf *into)
    8.71+tuxkey_t dleaf_split(struct btree *btree, tuxkey_t key, vleaf *from, vleaf *into)
    8.72 {
    8.73 	assert(dleaf_sniff(btree, from));
    8.74 	struct dleaf *leaf = from, *dest = into;
    8.75@@ -299,7 +299,7 @@ tuxkey_t dleaf_split(BTREE, tuxkey_t key
    8.76 	return get_index(destgroups - 1, destentries - 1);
    8.77 }
    8.78 
    8.79-void dleaf_merge(BTREE, struct dleaf *leaf, struct dleaf *from)
    8.80+void dleaf_merge(struct btree *btree, struct dleaf *leaf, struct dleaf *from)
    8.81 {
    8.82 	struct group *groups = (void *)leaf + btree->sb->blocksize, *grbase = groups - dleaf_groups(leaf);
    8.83 	struct entry *entries = (void *)grbase;
     9.1--- a/user/kernel/ileaf.c	Wed Dec 03 12:59:43 2008 +0900
     9.2+++ b/user/kernel/ileaf.c	Tue Dec 02 23:12:28 2008 -0800
     9.3@@ -41,33 +41,33 @@ static inline tuxkey_t ibase(struct ilea
     9.4 	return from_be_u64(leaf->ibase);
     9.5 }
     9.6 
     9.7-int ileaf_init(BTREE, vleaf *leaf)
     9.8+int ileaf_init(struct btree *btree, vleaf *leaf)
     9.9 {
    9.10 	printf("initialize inode leaf %p\n", leaf);
    9.11 	*(struct ileaf *)leaf = (struct ileaf){ to_be_u16(0x90de) };
    9.12 	return 0;
    9.13 }
    9.14 
    9.15-int ileaf_sniff(BTREE, vleaf *leaf)
    9.16+int ileaf_sniff(struct btree *btree, vleaf *leaf)
    9.17 {
    9.18 	return ((struct ileaf *)leaf)->magic == to_be_u16(0x90de);
    9.19 }
    9.20 
    9.21-unsigned ileaf_need(BTREE, vleaf *vleaf)
    9.22+unsigned ileaf_need(struct btree *btree, vleaf *vleaf)
    9.23 {
    9.24 	be_u16 *dict = vleaf + btree->sb->blocksize;
    9.25 	unsigned count = icount(to_ileaf(vleaf));
    9.26 	return atdict(dict, count) + count * sizeof(*dict);
    9.27 }
    9.28 
    9.29-unsigned ileaf_free(BTREE, vleaf *leaf)
    9.30+unsigned ileaf_free(struct btree *btree, vleaf *leaf)
    9.31 {
    9.32 	return btree->sb->blocksize - ileaf_need(btree, leaf) - sizeof(struct ileaf);
    9.33 }
    9.34 
    9.35-void ileaf_dump(BTREE, vleaf *vleaf)
    9.36+void ileaf_dump(struct btree *btree, vleaf *vleaf)
    9.37 {
    9.38-	SB = btree->sb;
    9.39+	struct sb *sb = btree->sb;
    9.40 	struct ileaf *leaf = vleaf;
    9.41 	inum_t inum = ibase(leaf);
    9.42 	be_u16 *dict = vleaf + sb->blocksize;
    9.43@@ -99,7 +99,7 @@ void ileaf_dump(BTREE, vleaf *vleaf)
    9.44 	}
    9.45 }
    9.46 
    9.47-void *ileaf_lookup(BTREE, inum_t inum, struct ileaf *leaf, unsigned *result)
    9.48+void *ileaf_lookup(struct btree *btree, inum_t inum, struct ileaf *leaf, unsigned *result)
    9.49 {
    9.50 	assert(inum >= ibase(leaf));
    9.51 	assert(inum < ibase(leaf) + btree->entries_per_leaf);
    9.52@@ -116,7 +116,7 @@ void *ileaf_lookup(BTREE, inum_t inum, s
    9.53 	return attrs;
    9.54 }
    9.55 
    9.56-int isinorder(BTREE, struct ileaf *leaf)
    9.57+int isinorder(struct btree *btree, struct ileaf *leaf)
    9.58 {
    9.59 	be_u16 *dict = (void *)leaf + btree->sb->blocksize;
    9.60 	for (int i = 0, offset = 0, limit; --i >= -icount(leaf); offset = limit)
    9.61@@ -125,7 +125,7 @@ int isinorder(BTREE, struct ileaf *leaf)
    9.62 	return 1;
    9.63 }
    9.64 
    9.65-int ileaf_check(BTREE, struct ileaf *leaf)
    9.66+int ileaf_check(struct btree *btree, struct ileaf *leaf)
    9.67 {
    9.68 	char *why;
    9.69 	why = "not an inode table leaf";
    9.70@@ -140,7 +140,7 @@ eek:
    9.71 	return -1;
    9.72 }
    9.73 
    9.74-void ileaf_trim(BTREE, struct ileaf *leaf) {
    9.75+void ileaf_trim(struct btree *btree, struct ileaf *leaf) {
    9.76 	be_u16 *dict = (void *)leaf + btree->sb->blocksize;
    9.77 	while (icount(leaf) > 1 && *(dict - icount(leaf)) == *(dict - icount(leaf) + 1))
    9.78 		leaf->count = to_be_u16(from_be_u16(leaf->count) - 1);
    9.79@@ -150,7 +150,7 @@ void ileaf_trim(BTREE, struct ileaf *lea
    9.80 
    9.81 #define SPLIT_AT_INUM
    9.82 
    9.83-tuxkey_t ileaf_split(BTREE, tuxkey_t inum, vleaf *from, vleaf *into)
    9.84+tuxkey_t ileaf_split(struct btree *btree, tuxkey_t inum, vleaf *from, vleaf *into)
    9.85 {
    9.86 	assert(ileaf_sniff(btree, from));
    9.87 	struct ileaf *leaf = from, *dest = into;
    9.88@@ -194,7 +194,7 @@ tuxkey_t ileaf_split(BTREE, tuxkey_t inu
    9.89 	return ibase(dest);
    9.90 }
    9.91 
    9.92-void ileaf_merge(BTREE, struct ileaf *leaf, struct ileaf *from)
    9.93+void ileaf_merge(struct btree *btree, struct ileaf *leaf, struct ileaf *from)
    9.94 {
    9.95 	if (!icount(from))
    9.96 		return;
    9.97@@ -209,7 +209,7 @@ void ileaf_merge(BTREE, struct ileaf *le
    9.98 		add_idict(dict - i, from_be_u16(*(dict - at)));
    9.99 }
   9.100 
   9.101-void *ileaf_resize(BTREE, tuxkey_t inum, vleaf *base, unsigned newsize)
   9.102+void *ileaf_resize(struct btree *btree, tuxkey_t inum, vleaf *base, unsigned newsize)
   9.103 {
   9.104 	assert(ileaf_sniff(btree, base));
   9.105 	struct ileaf *leaf = base;
   9.106@@ -240,7 +240,7 @@ void *ileaf_resize(BTREE, tuxkey_t inum,
   9.107 	return attrs;
   9.108 }
   9.109 
   9.110-inum_t find_empty_inode(BTREE, struct ileaf *leaf, inum_t goal)
   9.111+inum_t find_empty_inode(struct btree *btree, struct ileaf *leaf, inum_t goal)
   9.112 {
   9.113 	assert(goal >= ibase(leaf));
   9.114 	goal -= ibase(leaf);
   9.115@@ -256,7 +256,7 @@ inum_t find_empty_inode(BTREE, struct il
   9.116 	return i + ibase(leaf);
   9.117 }
   9.118 
   9.119-int ileaf_purge(BTREE, inum_t inum, struct ileaf *leaf)
   9.120+int ileaf_purge(struct btree *btree, inum_t inum, struct ileaf *leaf)
   9.121 {
   9.122 	if (inum < ibase(leaf) || inum - ibase(leaf) >= btree->entries_per_leaf)
   9.123 		return -EINVAL;
    10.1--- a/user/kernel/inode.c	Wed Dec 03 12:59:43 2008 +0900
    10.2+++ b/user/kernel/inode.c	Tue Dec 02 23:12:28 2008 -0800
    10.3@@ -53,7 +53,7 @@ int store_attrs(struct inode *inode, str
    10.4 
    10.5 int make_inode(struct inode *inode, struct tux_iattr *iattr)
    10.6 {
    10.7-	SB = tux_sb(inode->i_sb);
    10.8+	struct sb *sb = tux_sb(inode->i_sb);
    10.9 	int err = -ENOENT, depth = sb->itable.root.depth;
   10.10 	struct cursor *cursor = alloc_cursor(depth + 2); /* +1 for now depth */
   10.11 	if (!cursor)
   10.12@@ -111,7 +111,7 @@ errout:
   10.13 
   10.14 static int open_inode(struct inode *inode)
   10.15 {
   10.16-	SB = tux_sb(inode->i_sb);
   10.17+	struct sb *sb = tux_sb(inode->i_sb);
   10.18 	int err, depth = sb->itable.root.depth;
   10.19 	struct cursor *cursor = alloc_cursor(depth + 1);
   10.20 	if (!cursor)
   10.21@@ -148,7 +148,7 @@ int save_inode(struct inode *inode)
   10.22 int save_inode(struct inode *inode)
   10.23 {
   10.24 	trace("save inode 0x%Lx", (L)tux_inode(inode)->inum);
   10.25-	SB = tux_sb(inode->i_sb);
   10.26+	struct sb *sb = tux_sb(inode->i_sb);
   10.27 	int err, depth = sb->itable.root.depth;
   10.28 	struct cursor *cursor = alloc_cursor(depth + 2); /* +1 for new depth */
   10.29 	if (!cursor)
   10.30@@ -171,7 +171,7 @@ error:
   10.31 	return err;
   10.32 }
   10.33 
   10.34-int purge_inum(BTREE, inum_t inum)
   10.35+int purge_inum(struct btree *btree, inum_t inum)
   10.36 {
   10.37 	int err = -ENOENT, depth = btree->root.depth;
   10.38 	struct cursor *cursor = alloc_cursor(depth + 1);
    11.1--- a/user/kernel/super.c	Wed Dec 03 12:59:43 2008 +0900
    11.2+++ b/user/kernel/super.c	Tue Dec 02 23:12:28 2008 -0800
    11.3@@ -15,7 +15,7 @@
    11.4 
    11.5 #include "tux3.h"
    11.6 
    11.7-static int unpack_sb(SB, struct disksuper *super, int silent)
    11.8+static int unpack_sb(struct sb *sb, struct disksuper *super, int silent)
    11.9 {
   11.10 	if (memcmp(super->magic, (char[])SB_MAGIC, sizeof(super->magic))) {
   11.11 		if (!silent)
   11.12@@ -51,7 +51,7 @@ static int unpack_sb(SB, struct disksupe
   11.13 	return 0;
   11.14 }
   11.15 
   11.16-static void pack_sb(SB, struct disksuper *super)
   11.17+static void pack_sb(struct sb *sb, struct disksuper *super)
   11.18 {
   11.19 	super->blockbits = to_be_u16(sb->blockbits);
   11.20 	super->volblocks = to_be_u64(sb->volblocks);
    12.1--- a/user/kernel/tux3.h	Wed Dec 03 12:59:43 2008 +0900
    12.2+++ b/user/kernel/tux3.h	Tue Dec 02 23:12:28 2008 -0800
    12.3@@ -146,7 +146,7 @@ static inline void *decode48(void *at, u
    12.4 }
    12.5 
    12.6 /* Tux3 disk format */
    12.7-#define SB_MAGIC_SIZE	8
    12.8+#define SB_MAGIC_SIZE 8
    12.9 #define SB_MAGIC { 't', 'u', 'x', '3', 0xdd, 0x08, 0x09, 0x06 } /* date of latest incompatible sb format */
   12.10 /*
   12.11  * disk format revision history
   12.12@@ -162,7 +162,6 @@ static inline void *decode48(void *at, u
   12.13 #define MAX_FILESIZE (1LL << MAX_FILESIZE_BITS)
   12.14 #define MAX_EXTENT (1 << 6)
   12.15 #define SB_LOC (1 << 12)
   12.16-#define SB struct sb *sb
   12.17 
   12.18 /* Special inode numbers */
   12.19 #define TUX_BITMAP_INO		0
   12.20@@ -444,21 +443,19 @@ static inline void inc_dleaf_groups(stru
   12.21 
   12.22 typedef void vleaf;
   12.23 
   12.24-#define BTREE struct btree *btree
   12.25-
   12.26 struct btree_ops {
   12.27-	int (*leaf_sniff)(BTREE, vleaf *leaf);
   12.28-	int (*leaf_init)(BTREE, vleaf *leaf);
   12.29-	tuxkey_t (*leaf_split)(BTREE, tuxkey_t key, vleaf *from, vleaf *into);
   12.30-	void *(*leaf_resize)(BTREE, tuxkey_t key, vleaf *leaf, unsigned size);
   12.31-	void (*leaf_dump)(BTREE, vleaf *leaf);
   12.32-	unsigned (*leaf_need)(BTREE, vleaf *leaf);
   12.33-	unsigned (*leaf_free)(BTREE, vleaf *leaf);
   12.34+	int (*leaf_sniff)(struct btree *btree, vleaf *leaf);
   12.35+	int (*leaf_init)(struct btree *btree, vleaf *leaf);
   12.36+	tuxkey_t (*leaf_split)(struct btree *btree, tuxkey_t key, vleaf *from, vleaf *into);
   12.37+	void *(*leaf_resize)(struct btree *btree, tuxkey_t key, vleaf *leaf, unsigned size);
   12.38+	void (*leaf_dump)(struct btree *btree, vleaf *leaf);
   12.39+	unsigned (*leaf_need)(struct btree *btree, vleaf *leaf);
   12.40+	unsigned (*leaf_free)(struct btree *btree, vleaf *leaf);
   12.41 	/* return value: 1 - modified, 0 - not modified, < 0 - error */
   12.42-	int (*leaf_chop)(BTREE, tuxkey_t key, vleaf *leaf);
   12.43-	void (*leaf_merge)(BTREE, vleaf *into, vleaf *from);
   12.44-	block_t (*balloc)(SB);
   12.45-	void (*bfree)(SB, block_t block);
   12.46+	int (*leaf_chop)(struct btree *btree, tuxkey_t key, vleaf *leaf);
   12.47+	void (*leaf_merge)(struct btree *btree, vleaf *into, vleaf *from);
   12.48+	block_t (*balloc)(struct sb *sb);
   12.49+	void (*bfree)(struct sb *sb, block_t block);
   12.50 };
   12.51 
   12.52 /*
   12.53@@ -506,8 +503,8 @@ struct tux_iattr {
   12.54 };
   12.55 
   12.56 void hexdump(void *data, unsigned size);
   12.57-block_t balloc(SB);
   12.58-void bfree(SB, block_t block);
   12.59+block_t balloc(struct sb *sb);
   12.60+void bfree(struct sb *sb, block_t block);
   12.61 
   12.62 enum atkind {
   12.63 	MIN_ATTR = 6,
   12.64@@ -604,20 +601,20 @@ static inline struct inode *buffer_inode
   12.65 }
   12.66 
   12.67 /* balloc.c */
   12.68-block_t balloc_extent(SB, unsigned blocks);
   12.69+block_t balloc_extent(struct sb *sb, unsigned blocks);
   12.70 
   12.71 /* btree.c */
   12.72 void release_cursor(struct cursor *cursor);
   12.73 struct cursor *alloc_cursor(int);
   12.74 void free_cursor(struct cursor *cursor);
   12.75-int probe(BTREE, tuxkey_t key, struct cursor *cursor);
   12.76-int advance(BTREE, struct cursor *cursor);
   12.77+int probe(struct btree *btree, tuxkey_t key, struct cursor *cursor);
   12.78+int advance(struct btree *btree, struct cursor *cursor);
   12.79 tuxkey_t next_key(struct cursor *cursor, int depth);
   12.80-void show_tree_range(BTREE, tuxkey_t start, unsigned count);
   12.81-int tree_chop(BTREE, struct delete_info *info, millisecond_t deadline);
   12.82+void show_tree_range(struct btree *btree, tuxkey_t start, unsigned count);
   12.83+int tree_chop(struct btree *btree, struct delete_info *info, millisecond_t deadline);
   12.84 int btree_leaf_split(struct btree *btree, struct cursor *cursor, tuxkey_t key);
   12.85 void *tree_expand(struct btree *btree, tuxkey_t key, unsigned newsize, struct cursor *cursor);
   12.86-struct btree new_btree(SB, struct btree_ops *ops);
   12.87+struct btree new_btree(struct sb *sb, struct btree_ops *ops);
   12.88 
   12.89 /* dir.c */
   12.90 loff_t tux_create_entry(struct inode *dir, const char *name, int len, inum_t inum, unsigned mode);
   12.91@@ -627,8 +624,8 @@ extern const struct inode_operations tux
   12.92 extern const struct inode_operations tux_dir_iops;
   12.93 
   12.94 /* dtree.c */
   12.95-unsigned dleaf_free(BTREE, vleaf *leaf);
   12.96-void dleaf_dump(BTREE, vleaf *vleaf);
   12.97+unsigned dleaf_free(struct btree *btree, vleaf *leaf);
   12.98+void dleaf_dump(struct btree *btree, vleaf *vleaf);
   12.99 extern struct btree_ops dtree_ops;
  12.100 int dwalk_probe(struct dleaf *leaf, unsigned blocksize, struct dwalk *walk, tuxkey_t key);
  12.101 tuxkey_t dwalk_index(struct dwalk *walk);
  12.102@@ -649,9 +646,9 @@ void *decode_attrs(struct inode *inode, 
  12.103 void *decode_attrs(struct inode *inode, void *attrs, unsigned size);
  12.104 
  12.105 /* ileaf.c */
  12.106-void *ileaf_lookup(BTREE, inum_t inum, struct ileaf *leaf, unsigned *result);
  12.107-inum_t find_empty_inode(BTREE, struct ileaf *leaf, inum_t goal);
  12.108-int ileaf_purge(BTREE, inum_t inum, struct ileaf *leaf);
  12.109+void *ileaf_lookup(struct btree *btree, inum_t inum, struct ileaf *leaf, unsigned *result);
  12.110+inum_t find_empty_inode(struct btree *btree, struct ileaf *leaf, inum_t goal);
  12.111+int ileaf_purge(struct btree *btree, inum_t inum, struct ileaf *leaf);
  12.112 extern struct btree_ops itable_ops;
  12.113 
  12.114 /* inode.c */
    13.1--- a/user/kernel/xattr.c	Wed Dec 03 12:59:43 2008 +0900
    13.2+++ b/user/kernel/xattr.c	Tue Dec 02 23:12:28 2008 -0800
    13.3@@ -55,7 +55,7 @@ static int unatom(struct inode *atable, 
    13.4 static int unatom(struct inode *atable, atom_t atom, char *name, unsigned size)
    13.5 {
    13.6 	unsigned offset;
    13.7-	SB = tux_sb(atable->i_sb);
    13.8+	struct sb *sb = tux_sb(atable->i_sb);
    13.9 	struct buffer_head *buffer = blockread_unatom(atable, atom, &offset);
   13.10 	if (!buffer)
   13.11 		return -ENOMEM;
   13.12@@ -83,7 +83,7 @@ static int unatom(struct inode *atable, 
   13.13 
   13.14 void dump_atoms(struct inode *atable)
   13.15 {
   13.16-	SB = tux_sb(atable->i_sb);
   13.17+	struct sb *sb = tux_sb(atable->i_sb);
   13.18 	unsigned blocks = (sb->atomgen + (sb->blockmask >> 1)) >> (sb->blockbits - 1);
   13.19 	for (unsigned j = 0; j < blocks; j++) {
   13.20 		unsigned block = sb->atomref_base + 2 * j;
   13.21@@ -113,7 +113,7 @@ eek:
   13.22 	return;
   13.23 }
   13.24 
   13.25-void show_freeatoms(SB)
   13.26+void show_freeatoms(struct sb *sb)
   13.27 {
   13.28 	struct inode *atable = sb->atable;
   13.29 	atom_t atom = sb->freeatom;
   13.30@@ -136,7 +136,7 @@ eek:
   13.31 
   13.32 atom_t get_freeatom(struct inode *atable)
   13.33 {
   13.34-	SB = tux_sb(atable->i_sb);
   13.35+	struct sb *sb = tux_sb(atable->i_sb);
   13.36 	atom_t atom = sb->freeatom;
   13.37 	if (!atom)
   13.38 		return sb->atomgen++;
   13.39@@ -157,7 +157,7 @@ eek:
   13.40 
   13.41 int use_atom(struct inode *atable, atom_t atom, int use)
   13.42 {
   13.43-	SB = tux_sb(atable->i_sb);
   13.44+	struct sb *sb = tux_sb(atable->i_sb);
   13.45 	unsigned shift = sb->blockbits - 1;
   13.46 	unsigned block = sb->atomref_base + 2 * (atom >> shift);
   13.47 	unsigned offset = atom & ~(-1 << shift), kill = 0;
   13.48@@ -439,7 +439,7 @@ void *encode_xattrs(struct inode *inode,
   13.49 
   13.50 unsigned decode_xsize(struct inode *inode, void *attrs, unsigned size)
   13.51 {
   13.52-	SB = tux_sb(inode->i_sb);
   13.53+	struct sb *sb = tux_sb(inode->i_sb);
   13.54 	unsigned total = 0, bytes;
   13.55 	void *limit = attrs + size;
   13.56 	while (attrs < limit - 1) {
    14.1--- a/user/super.c	Wed Dec 03 12:59:43 2008 +0900
    14.2+++ b/user/super.c	Tue Dec 02 23:12:28 2008 -0800
    14.3@@ -17,7 +17,7 @@
    14.4 
    14.5 #include "kernel/super.c"
    14.6 
    14.7-int load_sb(SB)
    14.8+int load_sb(struct sb *sb)
    14.9 {
   14.10 	struct disksuper *super = &sb->super;
   14.11 	int err = diskread(sb->devmap->dev->fd, super, sizeof(*super), SB_LOC);
   14.12@@ -29,14 +29,14 @@ int load_sb(SB)
   14.13 	return 0;
   14.14 }
   14.15 
   14.16-int save_sb(SB)
   14.17+int save_sb(struct sb *sb)
   14.18 {
   14.19 	struct disksuper *super = &sb->super;
   14.20 	pack_sb(sb, super);
   14.21 	return diskwrite(sb->devmap->dev->fd, super, sizeof(*super), SB_LOC);
   14.22 }
   14.23 
   14.24-int sync_super(SB)
   14.25+int sync_super(struct sb *sb)
   14.26 {
   14.27 	int err;
   14.28 	printf("sync bitmap\n");
   14.29@@ -57,7 +57,7 @@ int sync_super(SB)
   14.30 	return 0;
   14.31 }
   14.32 
   14.33-int make_tux3(SB, int fd)
   14.34+int make_tux3(struct sb *sb, int fd)
   14.35 {
   14.36 	int err = 0;
   14.37 	trace("create bitmap");
    15.1--- a/user/tux3.h	Wed Dec 03 12:59:43 2008 +0900
    15.2+++ b/user/tux3.h	Tue Dec 02 23:12:28 2008 -0800
    15.3@@ -56,12 +56,12 @@ static inline void reset_bit(unsigned ch
    15.4 #include "kernel/tux3.h"
    15.5 
    15.6 /* wrappers for buffer cache */
    15.7-static inline struct buffer_head *sb_getblk(SB, block_t block)
    15.8+static inline struct buffer_head *sb_getblk(struct sb *sb, block_t block)
    15.9 {
   15.10 	return blockget(sb->devmap, block);
   15.11 }
   15.12 
   15.13-static inline struct buffer_head *sb_bread(SB, block_t block)
   15.14+static inline struct buffer_head *sb_bread(struct sb *sb, block_t block)
   15.15 {
   15.16 	return blockread(sb->devmap, block);
   15.17 }
    16.1--- a/user/tux3graph.c	Wed Dec 03 12:59:43 2008 +0900
    16.2+++ b/user/tux3graph.c	Tue Dec 02 23:12:28 2008 -0800
    16.3@@ -90,7 +90,7 @@ static void write_link(struct graph_info
    16.4 	}
    16.5 }
    16.6 
    16.7-typedef void (*draw_leaf_t)(struct graph_info *, BTREE, struct buffer_head *);
    16.8+typedef void (*draw_leaf_t)(struct graph_info *, struct btree *btree, struct buffer_head *);
    16.9 
   16.10 static void draw_sb(struct graph_info *gi, struct sb *sb)
   16.11 {
   16.12@@ -168,7 +168,7 @@ static void draw_bnode(struct graph_info
   16.13 	}
   16.14 }
   16.15 
   16.16-static void draw_cursor(struct graph_info *gi, BTREE, struct cursor *cursor)
   16.17+static void draw_cursor(struct graph_info *gi, struct btree *btree, struct cursor *cursor)
   16.18 {
   16.19 	int level;
   16.20 	for (level = 0; level < btree->root.depth; level++)
   16.21@@ -201,7 +201,7 @@ eek:
   16.22 	return -EIO;
   16.23 }
   16.24 
   16.25-static void draw_tree(struct graph_info *gi, BTREE, draw_leaf_t draw_leaf)
   16.26+static void draw_tree(struct graph_info *gi, struct btree *btree, draw_leaf_t draw_leaf)
   16.27 {
   16.28 	struct cursor *cursor;
   16.29 	struct buffer_head *buffer;
   16.30@@ -234,9 +234,9 @@ static void draw_tree(struct graph_info 
   16.31 	write_link(gi);
   16.32 }
   16.33 
   16.34-typedef void (*draw_data_t)(struct graph_info *, BTREE);
   16.35+typedef void (*draw_data_t)(struct graph_info *, struct btree *btree);
   16.36 
   16.37-static void draw_bitmap(struct graph_info *gi, BTREE)
   16.38+static void draw_bitmap(struct graph_info *gi, struct btree *btree)
   16.39 {
   16.40 	fprintf(gi->f,
   16.41 		"subgraph cluster_%s {\n"
   16.42@@ -250,7 +250,7 @@ static void draw_bitmap(struct graph_inf
   16.43 		gi->lname, gi->lname, gi->lname);
   16.44 }
   16.45 
   16.46-static void draw_vtable(struct graph_info *gi, BTREE)
   16.47+static void draw_vtable(struct graph_info *gi, struct btree *btree)
   16.48 {
   16.49 	fprintf(gi->f,
   16.50 		"subgraph cluster_%s {\n"
   16.51@@ -262,7 +262,7 @@ static void draw_vtable(struct graph_inf
   16.52 		gi->lname, gi->lname, gi->lname);
   16.53 }
   16.54 
   16.55-static void draw_atable(struct graph_info *gi, BTREE)
   16.56+static void draw_atable(struct graph_info *gi, struct btree *btree)
   16.57 {
   16.58 	fprintf(gi->f,
   16.59 		"subgraph cluster_%s {\n"
   16.60@@ -274,7 +274,7 @@ static void draw_atable(struct graph_inf
   16.61 		gi->lname, gi->lname, gi->lname);
   16.62 }
   16.63 
   16.64-static void draw_dir(struct graph_info *gi, BTREE)
   16.65+static void draw_dir(struct graph_info *gi, struct btree *btree)
   16.66 {
   16.67 	fprintf(gi->f,
   16.68 		"subgraph cluster_%s {\n"
   16.69@@ -289,7 +289,7 @@ static void draw_dir(struct graph_info *
   16.70 		gi->lname, gi->lname, gi->lname);
   16.71 }
   16.72 
   16.73-static void draw_file(struct graph_info *gi, BTREE)
   16.74+static void draw_file(struct graph_info *gi, struct btree *btree)
   16.75 {
   16.76 	fprintf(gi->f,
   16.77 		"subgraph cluster_%s {\n"
   16.78@@ -301,7 +301,7 @@ static void draw_file(struct graph_info 
   16.79 		gi->lname, gi->lname, gi->lname);
   16.80 }
   16.81 
   16.82-static inline struct group *dleaf_groups_ptr(BTREE, struct dleaf *dleaf)
   16.83+static inline struct group *dleaf_groups_ptr(struct btree *btree, struct dleaf *dleaf)
   16.84 {
   16.85 	return (void *)dleaf + btree->sb->blocksize;
   16.86 }
   16.87@@ -357,7 +357,7 @@ static inline struct diskextent *dleaf_e
   16.88 	return extents + ex;
   16.89 }
   16.90 
   16.91-static void draw_dleaf(struct graph_info *gi, BTREE, struct buffer_head *buffer)
   16.92+static void draw_dleaf(struct graph_info *gi, struct btree *btree, struct buffer_head *buffer)
   16.93 {
   16.94 	struct dleaf *leaf = bufdata(buffer);
   16.95 	block_t blocknr = buffer->index;
   16.96@@ -455,7 +455,7 @@ static void draw_dleaf(struct graph_info
   16.97 		 dleaf_name, gi->filedata, gi->subgraph, gi->filedata);
   16.98 }
   16.99 
  16.100-static inline be_u16 *ileaf_dict(BTREE, struct ileaf *ileaf)
  16.101+static inline be_u16 *ileaf_dict(struct btree *btree, struct ileaf *ileaf)
  16.102 {
  16.103 	return (void *)ileaf + btree->sb->blocksize;
  16.104 }
  16.105@@ -473,7 +473,7 @@ static inline u16 ileaf_attr_size(be_u16
  16.106 	return size;
  16.107 }
  16.108 
  16.109-static void draw_ileaf(struct graph_info *gi, BTREE, struct buffer_head *buffer)
  16.110+static void draw_ileaf(struct graph_info *gi, struct btree *btree, struct buffer_head *buffer)
  16.111 {
  16.112 	struct ileaf *ileaf = bufdata(buffer);
  16.113 	block_t blocknr = buffer->index;
    17.1--- a/user/xattr.c	Wed Dec 03 12:59:43 2008 +0900
    17.2+++ b/user/xattr.c	Tue Dec 02 23:12:28 2008 -0800
    17.3@@ -42,7 +42,7 @@ int main(int argc, char *argv[])
    17.4 	ftruncate(dev->fd, 1 << 24);
    17.5 	map_t *map = new_map(dev, NULL);
    17.6 	init_buffers(dev, 1 << 20);
    17.7-	SB = &(struct sb){
    17.8+	struct sb *sb = &(struct sb){
    17.9 		.version = 0, .atable = map->inode,
   17.10 		.blockbits = dev->bits, 
   17.11 		.blocksize = 1 << dev->bits,