mirror of
https://github.com/kdave/btrfs-progs
synced 2025-03-05 02:07:51 +00:00
add generation to file extents
This commit is contained in:
parent
e6819928c8
commit
03b3655fb4
1
ctree.c
1
ctree.c
@ -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
21
ctree.h
@ -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)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user