ext4: let ext4 maintain extent status tree
This patch lets ext4 maintain extent status tree. Currently it only tracks delay extent status in extent status tree. When a delay allocation is issued, the related delay extent will be inserted into extent status tree. When a delay extent is written out or invalidated, it will be removed from this tree. 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>
This commit is contained in:
@@ -50,6 +50,7 @@
|
||||
#include "xattr.h"
|
||||
#include "acl.h"
|
||||
#include "mballoc.h"
|
||||
#include "ext4_extents.h"
|
||||
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include <trace/events/ext4.h>
|
||||
@@ -1033,6 +1034,7 @@ void ext4_clear_inode(struct inode *inode)
|
||||
clear_inode(inode);
|
||||
dquot_drop(inode);
|
||||
ext4_discard_preallocations(inode);
|
||||
ext4_es_remove_extent(inode, 0, EXT_MAX_BLOCKS);
|
||||
if (EXT4_I(inode)->jinode) {
|
||||
jbd2_journal_release_jbd_inode(EXT4_JOURNAL(inode),
|
||||
EXT4_I(inode)->jinode);
|
||||
@@ -5296,9 +5298,14 @@ static int __init ext4_init_fs(void)
|
||||
init_waitqueue_head(&ext4__ioend_wq[i]);
|
||||
}
|
||||
|
||||
err = ext4_init_pageio();
|
||||
err = ext4_init_es();
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = ext4_init_pageio();
|
||||
if (err)
|
||||
goto out7;
|
||||
|
||||
err = ext4_init_system_zone();
|
||||
if (err)
|
||||
goto out6;
|
||||
@@ -5348,6 +5355,9 @@ out5:
|
||||
ext4_exit_system_zone();
|
||||
out6:
|
||||
ext4_exit_pageio();
|
||||
out7:
|
||||
ext4_exit_es();
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user