]> git.karo-electronics.de Git - karo-tx-linux.git/commit
GFS2: Replace rgblk_search with gfs2_rbm_find
authorSteven Whitehouse <swhiteho@redhat.com>
Wed, 1 Aug 2012 19:35:05 +0000 (20:35 +0100)
committerSteven Whitehouse <swhiteho@redhat.com>
Fri, 3 Aug 2012 09:24:03 +0000 (10:24 +0100)
commit6dc26529c3f11e4f1cc3bd84a89392ac18f833bf
treee75bea20fb800129dda1e8990710a800a18b7f0e
parentcde7c325077bd72b83537d735e05e9b873d9cd57
GFS2: Replace rgblk_search with gfs2_rbm_find

This is part of a series of patches which are introducing the
gfs2_rbm structure throughout the block allocation code. The
main aim of this part is to create a search function which can
deal directly with struct gfs2_rbm. In this case it specifies
the initial position at which to start the search and also the
point at which the search terminates.

The net result of this is to clean up the search code and make
it rather more readable, and the various possible exceptions which
may occur during the search are partitioned into their own functions.

There are some bug fixes too. We should not be checking the reservations
while allocating extents - the time for that is when we are searching
for where to put the extent, not when we've already made that decision.

Also, rgblk_search had two uses, and in only one of those cases did
it make sense to check for reservations. This is fixed in the new
gfs2_rbm_find function, which has a cleaner interface.

The reservation checking has been improved by always checking for
contiguous reservations, and returning the first free block after
all contiguous reservations. This is done under the spin lock to
ensure consistancy of the tree.

The allocation of extents is now in all cases done by the existing
allocation code, and if there is an active reservation, that is updated
after the fact. Again this is done under the spin lock, since it entails
changing the lookup key for the reservation in question.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/gfs2/incore.h
fs/gfs2/rgrp.c