GFS2: Take account of blockages when using reserved blocks
authorSteven Whitehouse <swhiteho@redhat.com>
Mon, 30 Jul 2012 10:06:08 +0000 (11:06 +0100)
committerSteven Whitehouse <swhiteho@redhat.com>
Thu, 13 Sep 2012 09:30:58 +0000 (10:30 +0100)
commit62e252eeefda62eb8cae9f4286270317ab8d5a42
treecc7f26be5373eeb7a9489d7d3a17f3a3a88a2f12
parent645b2ccc75d3d15928e3dbfc659659c2b8d4d9a6
GFS2: Take account of blockages when using reserved blocks

The claim_reserved_blks() function was not taking account of
the possibility of "blockages" while performing allocation.
This can be caused by another node allocating something in
the same extent which has been reserved locally.

This patch tests for this condition and then skips the remainder
of the reservation in this case. This is a relatively rare event,
so that it should not affect the general performance improvement
which the block reservations provide.

The claim_reserved_blks() function also appears not to be able
to deal with reservations which cross bitmap boundaries, but
that can be dealt with in a future patch since we don't generate
boundary crossing reservations currently.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Reported-by: David Teigland <teigland@redhat.com>
Cc: Bob Peterson <rpeterso@redhat.com>
fs/gfs2/rgrp.c