+xfsprogs-current
+ - sync with recent kernel changes - this does not affect
+ userspace (libxfs), all affected code is removed by cpp.
+
xfsprogs-1.3.12 (17 October 2001)
- implement the -f (file) option to xfs_logprint
- rework the xlog code into libxlog for code sharing
*/
#define xfs_trans_reserve_blkquota(tp, ip, nblks) \
xfs_trans_reserve_quota_nblks(tp, ip, nblks, 0, XFS_QMOPT_RES_REGBLKS)
-
+
+#define xfs_trans_reserve_blkquota_force(tp, ip, nblks) \
+xfs_trans_reserve_quota_nblks(tp, ip, nblks, 0, \
+ XFS_QMOPT_RES_REGBLKS|XFS_QMOPT_FORCE_RES)
+
#define xfs_trans_unreserve_blkquota(tp, ip, nblks) \
xfs_trans_reserve_quota_nblks(tp, ip, -(nblks), 0, XFS_QMOPT_RES_REGBLKS)
if (XFS_TEST_ERROR(!agf_ok, mp, XFS_ERRTAG_ALLOC_READ_AGF,
XFS_RANDOM_ALLOC_READ_AGF)) {
xfs_trans_brelse(tp, bp);
+#ifdef __KERNEL__ /* additional, temporary, debugging code */
+ cmn_err(CE_NOTE,
+ "xfs_alloc_read_agf: error in <%s> AG %d",
+ mp->m_fsname, agno);
+ if (INT_GET(agf->agf_magicnum, ARCH_CONVERT) != XFS_AGF_MAGIC)
+ cmn_err(CE_NOTE, "bad agf_magicnum 0x%x",
+ INT_GET(agf->agf_magicnum, ARCH_CONVERT));
+ if (!XFS_AGF_GOOD_VERSION(INT_GET(agf->agf_versionnum, ARCH_CONVERT)))
+ cmn_err(CE_NOTE, "Bad version number 0x%x",
+ INT_GET(agf->agf_versionnum, ARCH_CONVERT));
+ if (!(INT_GET(agf->agf_freeblks, ARCH_CONVERT) <=
+ INT_GET(agf->agf_length, ARCH_CONVERT)))
+ cmn_err(CE_NOTE, "Bad freeblks %d %d",
+ INT_GET(agf->agf_freeblks, ARCH_CONVERT),
+ INT_GET(agf->agf_length, ARCH_CONVERT));
+ if (!(INT_GET(agf->agf_flfirst, ARCH_CONVERT) < XFS_AGFL_SIZE))
+ cmn_err(CE_NOTE, "Bad flfirst %d",
+ INT_GET(agf->agf_flfirst, ARCH_CONVERT));
+ if (!(INT_GET(agf->agf_fllast, ARCH_CONVERT) < XFS_AGFL_SIZE))
+ cmn_err(CE_NOTE, "Bad fllast %d",
+ INT_GET(agf->agf_fllast, ARCH_CONVERT));
+ if (!(INT_GET(agf->agf_flcount, ARCH_CONVERT) <= XFS_AGFL_SIZE))
+ cmn_err(CE_NOTE, "Bad flcount %d",
+ INT_GET(agf->agf_flcount, ARCH_CONVERT));
+#endif
return XFS_ERROR(EFSCORRUPTED);
}
pag = &mp->m_perag[agno];
break;
pp = XFS_BTREE_PTR_ADDR(mp->m_sb.sb_blocksize, xfs_bmbt, block,
1, mp->m_bmap_dmxr[1]);
- XFS_WANT_CORRUPTED_GOTO(XFS_FSB_SANITY_CHECK(mp, INT_GET(*pp, ARCH_CONVERT)), error0);
+#ifndef __KERNEL__
+ XFS_WANT_CORRUPTED_GOTO(
+ XFS_FSB_SANITY_CHECK(mp, INT_GET(*pp, ARCH_CONVERT)),
+ error0);
+#else /* additional, temporary, debugging code */
+ if (!(XFS_FSB_SANITY_CHECK(mp, INT_GET(*pp, ARCH_CONVERT)))) {
+ cmn_err(CE_NOTE,
+ "xfs_bmap_read_extents: FSB Sanity Check:");
+ if (!(XFS_FSB_TO_AGNO(mp, INT_GET(*pp, ARCH_CONVERT)) < mp->m_sb.sb_agcount))
+ cmn_err(CE_NOTE,
+ "bad AG count %d < agcount %d",
+ XFS_FSB_TO_AGNO(mp, INT_GET(*pp, ARCH_CONVERT)),
+ mp->m_sb.sb_agcount);
+ if (!(XFS_FSB_TO_AGBNO(mp, INT_GET(*pp, ARCH_CONVERT)) < mp->m_sb.sb_agblocks))
+ cmn_err(CE_NOTE,
+ "bad AG BNO %d < %d",
+ XFS_FSB_TO_AGBNO(mp, INT_GET(*pp, ARCH_CONVERT)),
+ mp->m_sb.sb_agblocks);
+ error = XFS_ERROR(EFSCORRUPTED);
+ goto error0;
+ }
+#endif
bno = INT_GET(*pp, ARCH_CONVERT);
xfs_trans_brelse(tp, bp);
}
(unsigned long long) ip->i_ino);
goto error0;
}
+#ifndef __KERNEL__
XFS_WANT_CORRUPTED_GOTO(
XFS_BMAP_SANITY_CHECK(mp, block, 0),
error0);
+#else /* additional, temporary, debugging code */
+ if (!(XFS_BMAP_SANITY_CHECK(mp, block, 0))) {
+ cmn_err(CE_NOTE,
+ "xfs_bmap_read_extents: BMAP Sanity Check:");
+ if (!(INT_GET(block->bb_magic, ARCH_CONVERT) == XFS_BMAP_MAGIC))
+ cmn_err(CE_NOTE,
+ "bb_magic 0x%x",
+ INT_GET(block->bb_magic, ARCH_CONVERT));
+ if (!(INT_GET(block->bb_level, ARCH_CONVERT) == level))
+ cmn_err(CE_NOTE,
+ "bb_level %d",
+ INT_GET(block->bb_level, ARCH_CONVERT));
+ if (!(INT_GET(block->bb_numrecs, ARCH_CONVERT) > 0))
+ cmn_err(CE_NOTE,
+ "bb_numrecs %d",
+ INT_GET(block->bb_numrecs, ARCH_CONVERT));
+ if (!(INT_GET(block->bb_numrecs, ARCH_CONVERT) <= (mp)->m_bmap_dmxr[(level) != 0]))
+ cmn_err(CE_NOTE,
+ "bb_numrecs %d < m_bmap_dmxr[] %d",
+ INT_GET(block->bb_numrecs, ARCH_CONVERT),
+ (mp)->m_bmap_dmxr[(level) != 0]);
+ error = XFS_ERROR(EFSCORRUPTED);
+ goto error0;
+ }
+#endif
/*
* Read-ahead the next leaf block, if any.
*/
XFS_ATTR_FORK : XFS_DATA_FORK;
if (XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS &&
XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE &&
- XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_LOCAL)
+ XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_LOCAL) {
+#ifdef __KERNEL__ /* additional, temporary, debugging code */
+ cmn_err(CE_NOTE,
+ "EFSCORRUPTED returned from file %s line %d",
+ __FILE__, __LINE__);
+#endif
return XFS_ERROR(EFSCORRUPTED);
+ }
mp = ip->i_mount;
if (XFS_FORCED_SHUTDOWN(mp))
return XFS_ERROR(EIO);
ifp = XFS_IFORK_PTR(ip, whichfork);
if (XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE &&
- XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS)
+ XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS) {
+#ifdef __KERNEL__ /* additional, temporary, debugging code */
+ cmn_err(CE_NOTE,
+ "EFSCORRUPTED returned from file %s line %d",
+ __FILE__, __LINE__);
+#endif
return XFS_ERROR(EFSCORRUPTED);
+ }
if (XFS_FORCED_SHUTDOWN(ip->i_mount))
return XFS_ERROR(EIO);
XFS_STATS_INC(xfsstats.xs_blk_mapr);
XFS_ATTR_FORK : XFS_DATA_FORK;
ifp = XFS_IFORK_PTR(ip, whichfork);
if (XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS &&
- XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE)
+ XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE) {
+#ifdef __KERNEL__ /* additional, temporary, debugging code */
+ cmn_err(CE_NOTE,
+ "EFSCORRUPTED returned from file %s line %d",
+ __FILE__, __LINE__);
+#endif
return XFS_ERROR(EFSCORRUPTED);
+ }
mp = ip->i_mount;
if (XFS_FORCED_SHUTDOWN(mp))
return XFS_ERROR(EIO);
XFS_RANDOM_BTREE_CHECK_LBLOCK)) {
if (bp)
xfs_buftrace("LBTREE ERROR", bp);
+#ifdef __KERNEL__ /* additional, temporary, debugging code */
+ cmn_err(CE_NOTE,
+ "EFSCORRUPTED returned from file %s line %d",
+ __FILE__, __LINE__);
+#endif
return XFS_ERROR(EFSCORRUPTED);
}
return 0;
XFS_RANDOM_BTREE_CHECK_SBLOCK)) {
if (bp)
xfs_buftrace("SBTREE ERROR", bp);
+#ifdef __KERNEL__ /* additional, temporary, debugging code */
+ cmn_err(CE_NOTE,
+ "xfs_btree_check_sblock: Not OK:");
+ cmn_err(CE_NOTE,
+ "magic 0x%x level %d numrecs %d leftsib %d rightsib %d",
+ INT_GET(block->bb_magic, ARCH_CONVERT),
+ INT_GET(block->bb_level, ARCH_CONVERT),
+ INT_GET(block->bb_numrecs, ARCH_CONVERT),
+ INT_GET(block->bb_leftsib, ARCH_CONVERT),
+ INT_GET(block->bb_rightsib, ARCH_CONVERT));
+#endif
return XFS_ERROR(EFSCORRUPTED);
}
return 0;
if (XFS_TEST_ERROR(!agi_ok, mp, XFS_ERRTAG_IALLOC_READ_AGI,
XFS_RANDOM_IALLOC_READ_AGI)) {
xfs_trans_brelse(tp, bp);
+#ifdef __KERNEL__ /* additional, temporary, debugging code */
+ cmn_err(CE_NOTE,
+ "EFSCORRUPTED returned from file %s line %d",
+ __FILE__, __LINE__);
+#endif
return XFS_ERROR(EFSCORRUPTED);
}
pag = &mp->m_perag[agno];