add generation to file extents

master
Chris Mason 2007-03-27 09:15:24 -04:00 committed by David Woodhouse
parent e6819928c8
commit 03b3655fb4
2 changed files with 17 additions and 5 deletions

View File

@ -746,6 +746,7 @@ static int split_node(struct btrfs_trans_handle *trans, struct btrfs_root
split_buffer = btrfs_alloc_free_block(trans, root);
split = &split_buffer->node;
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->blocknr);
btrfs_set_header_parentid(&split->header,
btrfs_header_parentid(&root->node->node.header));

21
ctree.h
View File

@ -52,7 +52,7 @@ struct btrfs_header {
__le32 ham;
__le16 nritems;
__le16 flags;
/* generation flags to be added */
u8 level;
} __attribute__ ((__packed__));
#define BTRFS_MAX_LEVEL 8
@ -185,6 +185,7 @@ struct btrfs_root_item {
} __attribute__ ((__packed__));
struct btrfs_file_extent_item {
__le64 generation;
/*
* disk space consumed by the extent, checksum blocks are included
* in these numbers
@ -618,15 +619,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)
@ -736,6 +735,18 @@ static inline void btrfs_set_file_extent_disk_blocknr(struct
e->disk_blocknr = cpu_to_le64(val);
}
static inline u64 btrfs_file_extent_generation(struct btrfs_file_extent_item *e)
{
return le64_to_cpu(e->generation);
}
static inline void btrfs_set_file_extent_generation(struct
btrfs_file_extent_item *e,
u64 val)
{
e->generation = cpu_to_le64(val);
}
static inline u64 btrfs_file_extent_disk_num_blocks(struct
btrfs_file_extent_item *e)
{