Explorar o código

Btrfs: add generation field to file extent

Signed-off-by: Chris Mason <chris.mason@oracle.com>
Chris Mason %!s(int64=18) %!d(string=hai) anos
pai
achega
71951f35a6
Modificáronse 2 ficheiros con 14 adicións e 0 borrados
  1. 13 0
      fs/btrfs/ctree.h
  2. 1 0
      fs/btrfs/file-item.c

+ 13 - 0
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)
 {

+ 1 - 0
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);