|
@@ -397,6 +397,7 @@ xfs_dinode_verify(
|
|
|
xfs_ino_t ino,
|
|
|
struct xfs_dinode *dip)
|
|
|
{
|
|
|
+ xfs_failaddr_t fa;
|
|
|
uint16_t mode;
|
|
|
uint16_t flags;
|
|
|
uint64_t flags2;
|
|
@@ -513,6 +514,12 @@ xfs_dinode_verify(
|
|
|
return __this_address;
|
|
|
}
|
|
|
|
|
|
+ /* extent size hint validation */
|
|
|
+ fa = xfs_inode_validate_extsize(mp, be32_to_cpu(dip->di_extsize),
|
|
|
+ mode, flags);
|
|
|
+ if (fa)
|
|
|
+ return fa;
|
|
|
+
|
|
|
/* only version 3 or greater inodes are extensively verified here */
|
|
|
if (dip->di_version < 3)
|
|
|
return NULL;
|
|
@@ -521,7 +528,7 @@ xfs_dinode_verify(
|
|
|
|
|
|
/* don't allow reflink/cowextsize if we don't have reflink */
|
|
|
if ((flags2 & (XFS_DIFLAG2_REFLINK | XFS_DIFLAG2_COWEXTSIZE)) &&
|
|
|
- !xfs_sb_version_hasreflink(&mp->m_sb))
|
|
|
+ !xfs_sb_version_hasreflink(&mp->m_sb))
|
|
|
return __this_address;
|
|
|
|
|
|
/* only regular files get reflink */
|