ext4: delalloc -- Adding per inode counters to store reserved blocks From: Mingming cao Add per-inode counters to store number of resreved data blocks and metadata blocks, due to delayed allocation. Signed-off-by: Mingming cao --- 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; }