2008-06-01 23:35:41

by Mingming Cao

[permalink] [raw]
Subject: [RFC][PATCH 1/6] delalloc ENOSPC: Add per-inode counters to store reserved blocks

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;
}