Skip to content

Commit

Permalink
Btrfs: split out level field in struct header
Browse files Browse the repository at this point in the history
Signed-off-by: Chris Mason <chris.mason@oracle.com>
  • Loading branch information
Chris Mason authored and David Woodhouse committed Mar 27, 2007
1 parent 6407bf6 commit 9a6f11e
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 10 deletions.
5 changes: 0 additions & 5 deletions fs/btrfs/TODO
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
* 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
Expand Down
1 change: 1 addition & 0 deletions fs/btrfs/ctree.c
Original file line number Diff line number Diff line change
Expand Up @@ -753,6 +753,7 @@ static int split_node(struct btrfs_trans_handle *trans, struct btrfs_root
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,
Expand Down
8 changes: 3 additions & 5 deletions fs/btrfs/ctree.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ struct btrfs_header {
__le32 ham;
__le16 nritems;
__le16 flags;
/* generation flags to be added */
u8 level;
} __attribute__ ((__packed__));

#define BTRFS_MAX_LEVEL 8
Expand Down Expand Up @@ -648,15 +648,13 @@ static inline void btrfs_set_header_flags(struct btrfs_header *h, u16 val)

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)
Expand Down

0 comments on commit 9a6f11e

Please sign in to comment.