Skip to content

Commit

Permalink
ext4: add data structures for the extent status tree
Browse files Browse the repository at this point in the history
This patch adds two structures that supports extent status tree, extent_status
and ext4_es_tree.  Currently extent_status is used to track a delay extent for
an inode, which record the start block and the length of the delay extent.
ext4_es_tree is used to store all extent_status for an inode in memory.

Signed-off-by: Yongqiang Yang <xiaoqiangnk@gmail.com>
Signed-off-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>
  • Loading branch information
Zheng Liu authored and Theodore Ts'o committed Nov 8, 2012
1 parent 07aa2ea commit c0677e6
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
6 changes: 6 additions & 0 deletions fs/ext4/ext4.h
Original file line number Diff line number Diff line change
Expand Up @@ -811,6 +811,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
*/
Expand Down Expand Up @@ -888,6 +890,10 @@ 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;
rwlock_t i_es_lock;

/* ialloc */
ext4_group_t i_last_alloc_group;

Expand Down
25 changes: 25 additions & 0 deletions fs/ext4/extents_status.h
Original file line number Diff line number Diff line change
@@ -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 */

0 comments on commit c0677e6

Please sign in to comment.