xfs: fix off-by-one error when the last rt extent is in use
authorDarrick J. Wong <djwong@kernel.org>
Wed, 11 Aug 2021 00:00:31 +0000 (17:00 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Thu, 19 Aug 2021 01:46:00 +0000 (18:46 -0700)
commit9ab72f22277487d2a3ffc8dd20fc918e186bb2b3
tree47b56231c0a590417d851c0d5bf8964ec57b0aa9
parentc02f6529864a4f5f91d216d324bac4ba75415d19
xfs: fix off-by-one error when the last rt extent is in use

The fsmap implementation for realtime devices uses the gap between
info->next_daddr and a free rtextent reported by xfs_rtalloc_query_range
to feed userspace fsmap records with an "unknown" owner.  We use this
trick to report to userspace when the last rtextent in the filesystem is
in use by synthesizing a null rmap record starting at the next block
after the query range.

Unfortunately, there's a minor accounting bug in the way that we
construct the null rmap record.  Originally, ahigh.ar_startext contains
the last rtextent for which the user wants records.  It's entirely
possible that number is beyond the end of the rt volume, so the location
synthesized rmap record /must/ be constrained to the minimum of the high
key and the number of extents in the rt volume.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Chandan Babu R <chandanrlinux@gmail.com>
fs/xfs/xfs_fsmap.c