diff options
author | Tiger Yang <tiger.yang@oracle.com> | 2010-01-25 01:11:06 -0500 |
---|---|---|
committer | Joel Becker <joel.becker@oracle.com> | 2010-02-26 18:41:07 -0500 |
commit | b89c54282db0c8634a2d2dc200f196d571750ce5 (patch) | |
tree | fbb34a01b3f0b2f4af6aae9ede9f3f21ef2a378d /fs/ocfs2/super.c | |
parent | a5f28ae4df291d81d9d23066f88c55ca45e388d3 (diff) |
ocfs2: add extent block stealing for ocfs2 v5
This patch add extent block (metadata) stealing mechanism for
extent allocation. This mechanism is same as the inode stealing.
if no room in slot specific extent_alloc, we will try to
allocate extent block from the next slot.
Signed-off-by: Tiger Yang <tiger.yang@oracle.com>
Acked-by: Tao Ma <tao.ma@oracle.com>
Signed-off-by: Joel Becker <joel.becker@oracle.com>
Diffstat (limited to 'fs/ocfs2/super.c')
-rw-r--r-- | fs/ocfs2/super.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c index 755cd49a5ef3..dee03197a494 100644 --- a/fs/ocfs2/super.c +++ b/fs/ocfs2/super.c | |||
@@ -69,6 +69,7 @@ | |||
69 | #include "xattr.h" | 69 | #include "xattr.h" |
70 | #include "quota.h" | 70 | #include "quota.h" |
71 | #include "refcounttree.h" | 71 | #include "refcounttree.h" |
72 | #include "suballoc.h" | ||
72 | 73 | ||
73 | #include "buffer_head_io.h" | 74 | #include "buffer_head_io.h" |
74 | 75 | ||
@@ -301,9 +302,12 @@ static int ocfs2_osb_dump(struct ocfs2_super *osb, char *buf, int len) | |||
301 | 302 | ||
302 | spin_lock(&osb->osb_lock); | 303 | spin_lock(&osb->osb_lock); |
303 | out += snprintf(buf + out, len - out, | 304 | out += snprintf(buf + out, len - out, |
304 | "%10s => Slot: %d NumStolen: %d\n", "Steal", | 305 | "%10s => InodeSlot: %d StolenInodes: %d, " |
306 | "MetaSlot: %d StolenMeta: %d\n", "Steal", | ||
305 | osb->s_inode_steal_slot, | 307 | osb->s_inode_steal_slot, |
306 | atomic_read(&osb->s_num_inodes_stolen)); | 308 | atomic_read(&osb->s_num_inodes_stolen), |
309 | osb->s_meta_steal_slot, | ||
310 | atomic_read(&osb->s_num_meta_stolen)); | ||
307 | spin_unlock(&osb->osb_lock); | 311 | spin_unlock(&osb->osb_lock); |
308 | 312 | ||
309 | out += snprintf(buf + out, len - out, "OrphanScan => "); | 313 | out += snprintf(buf + out, len - out, "OrphanScan => "); |
@@ -1997,7 +2001,7 @@ static int ocfs2_initialize_super(struct super_block *sb, | |||
1997 | osb->blocked_lock_count = 0; | 2001 | osb->blocked_lock_count = 0; |
1998 | spin_lock_init(&osb->osb_lock); | 2002 | spin_lock_init(&osb->osb_lock); |
1999 | spin_lock_init(&osb->osb_xattr_lock); | 2003 | spin_lock_init(&osb->osb_xattr_lock); |
2000 | ocfs2_init_inode_steal_slot(osb); | 2004 | ocfs2_init_steal_slots(osb); |
2001 | 2005 | ||
2002 | atomic_set(&osb->alloc_stats.moves, 0); | 2006 | atomic_set(&osb->alloc_stats.moves, 0); |
2003 | atomic_set(&osb->alloc_stats.local_data, 0); | 2007 | atomic_set(&osb->alloc_stats.local_data, 0); |