// SPDX-License-Identifier: GPL-2.0 /* * Copyright (c) 2000-2002,2005 Silicon Graphics, Inc. * Copyright (C) 2017 Oracle. * All Rights Reserved. */ #include "xfs.h" #include "xfs_fs.h" #include "xfs_format.h" #include "xfs_shared.h" #include "xfs_trans_resv.h" #include "xfs_bit.h" #include "xfs_mount.h" #include "xfs_ag.h" /* * Verify that an AG block number pointer neither points outside the AG * nor points at static metadata. */ static inline bool xfs_verify_agno_agbno( struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t agbno) { … } /* * Verify that an FS block number pointer neither points outside the * filesystem nor points at static AG metadata. */ inline bool xfs_verify_fsbno( struct xfs_mount *mp, xfs_fsblock_t fsbno) { … } /* * Verify that a data device extent is fully contained inside the filesystem, * does not cross an AG boundary, and does not point at static metadata. */ bool xfs_verify_fsbext( struct xfs_mount *mp, xfs_fsblock_t fsbno, xfs_fsblock_t len) { … } /* * Verify that an AG inode number pointer neither points outside the AG * nor points at static metadata. */ static inline bool xfs_verify_agno_agino( struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t agino) { … } /* * Verify that an FS inode number pointer neither points outside the * filesystem nor points at static AG metadata. */ inline bool xfs_verify_ino( struct xfs_mount *mp, xfs_ino_t ino) { … } /* Is this an internal inode number? */ inline bool xfs_internal_inum( struct xfs_mount *mp, xfs_ino_t ino) { … } /* * Verify that a directory entry's inode number doesn't point at an internal * inode, empty space, or static AG metadata. */ bool xfs_verify_dir_ino( struct xfs_mount *mp, xfs_ino_t ino) { … } /* * Verify that an realtime block number pointer doesn't point off the * end of the realtime device. */ inline bool xfs_verify_rtbno( struct xfs_mount *mp, xfs_rtblock_t rtbno) { … } /* Verify that a realtime device extent is fully contained inside the volume. */ bool xfs_verify_rtbext( struct xfs_mount *mp, xfs_rtblock_t rtbno, xfs_filblks_t len) { … } /* Calculate the range of valid icount values. */ inline void xfs_icount_range( struct xfs_mount *mp, unsigned long long *min, unsigned long long *max) { … } /* Sanity-checking of inode counts. */ bool xfs_verify_icount( struct xfs_mount *mp, unsigned long long icount) { … } /* Sanity-checking of dir/attr block offsets. */ bool xfs_verify_dablk( struct xfs_mount *mp, xfs_fileoff_t dabno) { … } /* Check that a file block offset does not exceed the maximum. */ bool xfs_verify_fileoff( struct xfs_mount *mp, xfs_fileoff_t off) { … } /* Check that a range of file block offsets do not exceed the maximum. */ bool xfs_verify_fileext( struct xfs_mount *mp, xfs_fileoff_t off, xfs_fileoff_t len) { … }