mirror of https://gitee.com/openkylin/linux.git
xfs: check minimum block size for CRC filesystems
Check the minimum block size on v5 filesystems. [dchinner: cleaned up XFS_MIN_CRC_BLOCKSIZE check] Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
parent
4fd29ec472
commit
bec9d48d7a
|
@ -262,6 +262,12 @@ xfs_mount_validate_sb(
|
|||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
if (xfs_sb_version_hascrc(&mp->m_sb) &&
|
||||
sbp->sb_blocksize < XFS_MIN_CRC_BLOCKSIZE) {
|
||||
xfs_notice(mp, "v5 SB sanity check failed");
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* Until this is fixed only page-sized or smaller data blocks work.
|
||||
*/
|
||||
|
|
|
@ -75,11 +75,14 @@ typedef __int64_t xfs_sfiloff_t; /* signed block number in a file */
|
|||
* Minimum and maximum blocksize and sectorsize.
|
||||
* The blocksize upper limit is pretty much arbitrary.
|
||||
* The sectorsize upper limit is due to sizeof(sb_sectsize).
|
||||
* CRC enable filesystems use 512 byte inodes, meaning 512 byte block sizes
|
||||
* cannot be used.
|
||||
*/
|
||||
#define XFS_MIN_BLOCKSIZE_LOG 9 /* i.e. 512 bytes */
|
||||
#define XFS_MAX_BLOCKSIZE_LOG 16 /* i.e. 65536 bytes */
|
||||
#define XFS_MIN_BLOCKSIZE (1 << XFS_MIN_BLOCKSIZE_LOG)
|
||||
#define XFS_MAX_BLOCKSIZE (1 << XFS_MAX_BLOCKSIZE_LOG)
|
||||
#define XFS_MIN_CRC_BLOCKSIZE (1 << (XFS_MIN_BLOCKSIZE_LOG + 1))
|
||||
#define XFS_MIN_SECTORSIZE_LOG 9 /* i.e. 512 bytes */
|
||||
#define XFS_MAX_SECTORSIZE_LOG 15 /* i.e. 32768 bytes */
|
||||
#define XFS_MIN_SECTORSIZE (1 << XFS_MIN_SECTORSIZE_LOG)
|
||||
|
|
Loading…
Reference in New Issue