ext4: delalloc -- Adding per inode counters to store reserved blocks
From: Mingming cao <[email protected]>
Add per-inode counters to store number of resreved data blocks
and metadata blocks, due to delayed allocation.
Signed-off-by: Mingming cao <[email protected]>
---
fs/ext4/ext4_i.h | 4 ++++
fs/ext4/super.c | 2 ++
2 files changed, 6 insertions(+)
Index: linux-2.6.26-rc4/fs/ext4/ext4_i.h
===================================================================
--- linux-2.6.26-rc4.orig/fs/ext4/ext4_i.h 2008-06-01 13:06:25.000000000 -0700
+++ linux-2.6.26-rc4/fs/ext4/ext4_i.h 2008-06-01 14:26:14.000000000 -0700
@@ -162,6 +162,10 @@ struct ext4_inode_info {
/* mballoc */
struct list_head i_prealloc_list;
spinlock_t i_prealloc_lock;
+
+ /* allocation reservation info for delalloc */
+ unsigned long i_reserved_data_blocks;
+ unsigned long i_reserved_meta_blocks;
};
#endif /* _EXT4_I */
Index: linux-2.6.26-rc4/fs/ext4/super.c
===================================================================
--- linux-2.6.26-rc4.orig/fs/ext4/super.c 2008-06-01 14:22:03.000000000 -0700
+++ linux-2.6.26-rc4/fs/ext4/super.c 2008-06-01 14:26:14.000000000 -0700
@@ -572,6 +572,8 @@ static struct inode *ext4_alloc_inode(st
memset(&ei->i_cached_extent, 0, sizeof(struct ext4_ext_cache));
INIT_LIST_HEAD(&ei->i_prealloc_list);
spin_lock_init(&ei->i_prealloc_lock);
+ ei->i_reserved_data_blocks = 0;
+ ei->i_reserved_meta_blocks = 0;
return &ei->vfs_inode;
}