aboutsummaryrefslogtreecommitdiff
path: root/fs/xfs/scrub/attr.h
diff options
context:
space:
mode:
authorDarrick J. Wong <djwong@kernel.org>2023-04-11 19:00:30 -0700
committerDarrick J. Wong <djwong@kernel.org>2023-04-11 19:00:30 -0700
commit91781ff549379a867d8fbe588a4c95f6598b1fa9 (patch)
tree4d1b4728f3845c4db95ff4dddb348dc31a7d94a1 /fs/xfs/scrub/attr.h
parent4cb76025208925f697de66ac4d2d821cafabd367 (diff)
xfs: split freemap from xchk_xattr_buf.buf
Move the free space bitmap from somewhere in xchk_xattr_buf.buf[] to an explicit pointer. This is the start of removing the complex overloaded memory buffer that is the source of weird memory misuse bugs. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Dave Chinner <dchinner@redhat.com>
Diffstat (limited to 'fs/xfs/scrub/attr.h')
-rw-r--r--fs/xfs/scrub/attr.h15
1 files changed, 4 insertions, 11 deletions
diff --git a/fs/xfs/scrub/attr.h b/fs/xfs/scrub/attr.h
index daf354a581bb..341855b3201b 100644
--- a/fs/xfs/scrub/attr.h
+++ b/fs/xfs/scrub/attr.h
@@ -10,6 +10,9 @@
* Temporary storage for online scrub and repair of extended attributes.
*/
struct xchk_xattr_buf {
+ /* Bitmap of free space in xattr leaf blocks. */
+ unsigned long *freemap;
+
/* Size of @buf, in bytes. */
size_t sz;
@@ -20,8 +23,7 @@ struct xchk_xattr_buf {
*
* Each bitmap contains enough bits to track every byte in an attr
* block (rounded up to the size of an unsigned long). The attr block
- * used space bitmap starts at the beginning of the buffer; the free
- * space bitmap follows immediately after.
+ * used space bitmap starts at the beginning of the buffer.
*/
uint8_t buf[];
};
@@ -46,13 +48,4 @@ xchk_xattr_usedmap(
return (unsigned long *)ab->buf;
}
-/* A bitmap of free space computed by walking attr leaf block free info. */
-static inline unsigned long *
-xchk_xattr_freemap(
- struct xfs_scrub *sc)
-{
- return xchk_xattr_usedmap(sc) +
- BITS_TO_LONGS(sc->mp->m_attr_geo->blksize);
-}
-
#endif /* __XFS_SCRUB_ATTR_H__ */