summaryrefslogtreecommitdiffstats
path: root/firmware/qlogic
diff options
context:
space:
mode:
authorBrian Foster <bfoster@redhat.com>2015-05-29 00:53:00 +0200
committerDave Chinner <david@fromorbit.com>2015-05-29 00:53:00 +0200
commitbfe46d4eb9258cb3340eaf77a07ecc45875b3b17 (patch)
treed7221c29fadd6a1271d2f7328e1e6f0140c88103 /firmware/qlogic
parentxfs: update free inode record logic to support sparse inode records (diff)
downloadlinux-bfe46d4eb9258cb3340eaf77a07ecc45875b3b17.tar.xz
linux-bfe46d4eb9258cb3340eaf77a07ecc45875b3b17.zip
xfs: support min/max agbno args in block allocator
The block allocator supports various arguments to tweak block allocation behavior and set allocation requirements. The sparse inode chunk feature introduces a new requirement not supported by the current arguments. Sparse inode allocations must convert or merge into an inode record that describes a fixed length chunk (64 inodes x inodesize). Full inode chunk allocations by definition always result in valid inode records. Sparse chunk allocations are smaller and the associated records can refer to blocks not owned by the inode chunk. This model can result in invalid inode records in certain cases. For example, if a sparse allocation occurs near the start of an AG, the aligned inode record for that chunk might refer to agbno 0. If an allocation occurs towards the end of the AG and the AG size is not aligned, the inode record could refer to blocks beyond the end of the AG. While neither of these scenarios directly result in corruption, they both insert invalid inode records and at minimum cause repair to complain, are unlikely to merge into full chunks over time and set land mines for other areas of code. To guarantee sparse inode chunk allocation creates valid inode records, support the ability to specify an agbno range limit for XFS_ALLOCTYPE_NEAR_BNO block allocations. The min/max agbno's are specified in the allocation arguments and limit the block allocation algorithms to that range. The starting 'agbno' hint is clamped to the range if the specified agbno is out of range. If no sufficient extent is available within the range, the allocation fails. For backwards compatibility, the min/max fields can be initialized to 0 to disable range limiting (e.g., equivalent to min=0,max=agsize). Signed-off-by: Brian Foster <bfoster@redhat.com> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
Diffstat (limited to 'firmware/qlogic')
0 files changed, 0 insertions, 0 deletions