summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/btrfs/ctree.h13
-rw-r--r--fs/btrfs/file-item.c1
2 files changed, 14 insertions, 0 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index a4ad39b58a4b..c3fa12a6b59e 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -192,6 +192,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
@@ -764,6 +765,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)
{
diff --git a/fs/btrfs/file-item.c b/fs/btrfs/file-item.c
index 4a0367d702b7..09de270c5a52 100644
--- a/fs/btrfs/file-item.c
+++ b/fs/btrfs/file-item.c
@@ -32,6 +32,7 @@ int btrfs_alloc_file_extent(struct btrfs_trans_handle *trans,
btrfs_set_file_extent_disk_num_blocks(item, ins.offset);
btrfs_set_file_extent_offset(item, 0);
btrfs_set_file_extent_num_blocks(item, ins.offset);
+ btrfs_set_file_extent_generation(item, trans->transid);
mark_buffer_dirty(path.nodes[0]);
*result = ins.objectid;
btrfs_release_path(root, &path);