]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ext4: add extent status tree data structures
authorZheng Liu <wenqing.lz@taobao.com>
Wed, 19 Sep 2012 18:19:24 +0000 (14:19 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 19 Sep 2012 18:19:24 +0000 (14:19 -0400)
This patch adds two structures that supports status extent tree and
status_extent_info to inode_info.

Reviewed-by: Yongqiang Yang <xiaoqiangnk@gmail.com>
Reviewed-by: Allison Henderson <achender@linux.vnet.ibm.com>
Signed-off-by: Zheng Liu <wenqing.lz@taobao.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
fs/ext4/ext4.h
fs/ext4/extents_status.h [new file with mode: 0644]

index 8b6902c4d7bebbf46935352e24002e744fd716f3..fed591e0967311edf3bbcf02b5bc4078ea7357b6 100644 (file)
@@ -812,6 +812,8 @@ struct ext4_ext_cache {
        __u32           ec_len; /* must be 32bit to return holes */
 };
 
+#include "extents_status.h"
+
 /*
  * fourth extended file system inode data in memory
  */
@@ -889,6 +891,9 @@ struct ext4_inode_info {
        struct list_head i_prealloc_list;
        spinlock_t i_prealloc_lock;
 
+       /* extents status tree */
+       struct ext4_es_tree i_es_tree;
+
        /* ialloc */
        ext4_group_t    i_last_alloc_group;
 
diff --git a/fs/ext4/extents_status.h b/fs/ext4/extents_status.h
new file mode 100644 (file)
index 0000000..8be2ab9
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ *  fs/ext4/extents_status.h
+ *
+ * Written by Yongqiang Yang <xiaoqiangnk@gmail.com>
+ * Modified by
+ *     Allison Henderson <achender@linux.vnet.ibm.com>
+ *     Zheng Liu <wenqing.lz@taobao.com>
+ *
+ */
+
+#ifndef _EXT4_EXTENTS_STATUS_H
+#define _EXT4_EXTENTS_STATUS_H
+
+struct extent_status {
+       struct rb_node rb_node;
+       ext4_lblk_t start;      /* first block extent covers */
+       ext4_lblk_t len;        /* length of extent in block */
+};
+
+struct ext4_es_tree {
+       struct rb_root root;
+       struct extent_status *cache_es; /* recently accessed extent */
+};
+
+#endif /* _EXT4_EXTENTS_STATUS_H */