Btrfs: split out level field in struct header
Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
parent
6407bf6d7c
commit
9a6f11ed8f
@ -1,12 +1,7 @@
|
|||||||
* cleanup, add more error checking, get rid of BUG_ONs
|
* cleanup, add more error checking, get rid of BUG_ONs
|
||||||
* Make IO functions look more like the page cache
|
|
||||||
* Fix ENOSPC handling
|
* Fix ENOSPC handling
|
||||||
* make a real mkfs and superblock
|
|
||||||
* Do checksumming
|
* 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 block mapping tree (simple dm layer)
|
||||||
* Add simple tree locking (semaphore per tree)
|
|
||||||
* Make allocator smarter
|
* Make allocator smarter
|
||||||
* make level a field in header
|
* make level a field in header
|
||||||
* add a block group to struct inode
|
* add a block group to struct inode
|
||||||
|
@ -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_buffer = btrfs_alloc_free_block(trans, root);
|
||||||
split = btrfs_buffer_node(split_buffer);
|
split = btrfs_buffer_node(split_buffer);
|
||||||
btrfs_set_header_flags(&split->header, btrfs_header_flags(&c->header));
|
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_blocknr(&split->header, split_buffer->b_blocknr);
|
||||||
btrfs_set_header_generation(&split->header, trans->transid);
|
btrfs_set_header_generation(&split->header, trans->transid);
|
||||||
btrfs_set_header_parentid(&split->header,
|
btrfs_set_header_parentid(&split->header,
|
||||||
|
@ -59,7 +59,7 @@ struct btrfs_header {
|
|||||||
__le32 ham;
|
__le32 ham;
|
||||||
__le16 nritems;
|
__le16 nritems;
|
||||||
__le16 flags;
|
__le16 flags;
|
||||||
/* generation flags to be added */
|
u8 level;
|
||||||
} __attribute__ ((__packed__));
|
} __attribute__ ((__packed__));
|
||||||
|
|
||||||
#define BTRFS_MAX_LEVEL 8
|
#define BTRFS_MAX_LEVEL 8
|
||||||
@ -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)
|
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)
|
static inline void btrfs_set_header_level(struct btrfs_header *h, int level)
|
||||||
{
|
{
|
||||||
u16 flags;
|
|
||||||
BUG_ON(level > BTRFS_MAX_LEVEL);
|
BUG_ON(level > BTRFS_MAX_LEVEL);
|
||||||
flags = btrfs_header_flags(h) & ~(BTRFS_MAX_LEVEL - 1);
|
h->level = level;
|
||||||
btrfs_set_header_flags(h, flags | level);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int btrfs_is_leaf(struct btrfs_node *n)
|
static inline int btrfs_is_leaf(struct btrfs_node *n)
|
||||||
|
Loading…
Reference in New Issue
Block a user