diff options
author | Christoph Hellwig <hch@infradead.org> | 2011-04-24 19:06:14 +0000 |
---|---|---|
committer | Alex Elder <aelder@sgi.com> | 2011-04-28 13:17:56 -0500 |
commit | a870acd9b2671de56514a430edfa7867823c31c9 (patch) | |
tree | e288e41227c35c251a675e4901f0be35e0c26aa1 /fs/xfs/xfs_alloc_btree.c | |
parent | 3eff1268994f72266b660782e87f215720c29639 (diff) | |
download | op-kernel-dev-a870acd9b2671de56514a430edfa7867823c31c9.zip op-kernel-dev-a870acd9b2671de56514a430edfa7867823c31c9.tar.gz |
xfs: optimize AGFL refills
While we need to make sure we do not reuse busy extents, there is no need
to force out busy extents when moving them between the AGFL and the
freespace btree as we still take care of that when doing the real allocation.
To avoid the log force when just moving extents from the different free
space tracking structures, move the busy search out of
xfs_alloc_get_freelist into the callers that need it, and move the busy
list insert from xfs_free_ag_extent which is used both by AGFL refills
and real allocation to xfs_free_extent, which is only used by the latter.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Alex Elder <aelder@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_alloc_btree.c')
-rw-r--r-- | fs/xfs/xfs_alloc_btree.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/xfs/xfs_alloc_btree.c b/fs/xfs/xfs_alloc_btree.c index 3916925..bcfe92f 100644 --- a/fs/xfs/xfs_alloc_btree.c +++ b/fs/xfs/xfs_alloc_btree.c @@ -94,6 +94,8 @@ xfs_allocbt_alloc_block( *stat = 0; return 0; } + if (xfs_alloc_busy_search(cur->bc_mp, cur->bc_private.a.agno, bno, 1)) + xfs_trans_set_sync(cur->bc_tp); xfs_trans_agbtree_delta(cur->bc_tp, 1); new->s = cpu_to_be32(bno); |