* cleanup, add more error checking, get rid of BUG_ONs
-* Make IO functions look more like the page cache
 * Fix ENOSPC handling
-* make a real mkfs and superblock
 * Do checksumming
-* Use a real check instead of mark_buffer_dirty
-* Define FS objects in terms of different item types
 * Add block mapping tree (simple dm layer)
-* Add simple tree locking (semaphore per tree)
 * Make allocator smarter
 * make level a field in header
 * add a block group to struct inode
 
        split_buffer = btrfs_alloc_free_block(trans, root);
        split = btrfs_buffer_node(split_buffer);
        btrfs_set_header_flags(&split->header, btrfs_header_flags(&c->header));
+       btrfs_set_header_level(&split->header, btrfs_header_level(&c->header));
        btrfs_set_header_blocknr(&split->header, split_buffer->b_blocknr);
        btrfs_set_header_generation(&split->header, trans->transid);
        btrfs_set_header_parentid(&split->header,
 
        __le32 ham;
        __le16 nritems;
        __le16 flags;
-       /* generation flags to be added */
+       u8 level;
 } __attribute__ ((__packed__));
 
 #define BTRFS_MAX_LEVEL 8
 
 static inline int btrfs_header_level(struct btrfs_header *h)
 {
-       return btrfs_header_flags(h) & (BTRFS_MAX_LEVEL - 1);
+       return h->level;
 }
 
 static inline void btrfs_set_header_level(struct btrfs_header *h, int level)
 {
-       u16 flags;
        BUG_ON(level > BTRFS_MAX_LEVEL);
-       flags = btrfs_header_flags(h) & ~(BTRFS_MAX_LEVEL - 1);
-       btrfs_set_header_flags(h, flags | level);
+       h->level = level;
 }
 
 static inline int btrfs_is_leaf(struct btrfs_node *n)