1056
1056
agno = XFS_INO_TO_AGNO(mp, inode);
1057
1057
if (agno >= mp->m_sb.sb_agcount) {
1059
"xfs_difree: agno >= mp->m_sb.sb_agcount (%d >= %d) on %s. Returning EINVAL.",
1060
agno, mp->m_sb.sb_agcount, mp->m_fsname);
1058
xfs_warn(mp, "%s: agno >= mp->m_sb.sb_agcount (%d >= %d).",
1059
__func__, agno, mp->m_sb.sb_agcount);
1062
1061
return XFS_ERROR(EINVAL);
1064
1063
agino = XFS_INO_TO_AGINO(mp, inode);
1065
1064
if (inode != XFS_AGINO_TO_INO(mp, agno, agino)) {
1067
"xfs_difree: inode != XFS_AGINO_TO_INO() "
1068
"(%llu != %llu) on %s. Returning EINVAL.",
1069
(unsigned long long)inode,
1070
(unsigned long long)XFS_AGINO_TO_INO(mp, agno, agino),
1065
xfs_warn(mp, "%s: inode != XFS_AGINO_TO_INO() (%llu != %llu).",
1066
__func__, (unsigned long long)inode,
1067
(unsigned long long)XFS_AGINO_TO_INO(mp, agno, agino));
1073
1069
return XFS_ERROR(EINVAL);
1075
1071
agbno = XFS_AGINO_TO_AGBNO(mp, agino);
1076
1072
if (agbno >= mp->m_sb.sb_agblocks) {
1078
"xfs_difree: agbno >= mp->m_sb.sb_agblocks (%d >= %d) on %s. Returning EINVAL.",
1079
agbno, mp->m_sb.sb_agblocks, mp->m_fsname);
1073
xfs_warn(mp, "%s: agbno >= mp->m_sb.sb_agblocks (%d >= %d).",
1074
__func__, agbno, mp->m_sb.sb_agblocks);
1081
1076
return XFS_ERROR(EINVAL);
1086
1081
error = xfs_ialloc_read_agi(mp, tp, agno, &agbp);
1089
"xfs_difree: xfs_ialloc_read_agi() returned an error %d on %s. Returning error.",
1090
error, mp->m_fsname);
1083
xfs_warn(mp, "%s: xfs_ialloc_read_agi() returned error %d.",
1093
1087
agi = XFS_BUF_TO_AGI(agbp);
1106
1100
* Look for the entry describing this inode.
1108
1102
if ((error = xfs_inobt_lookup(cur, agino, XFS_LOOKUP_LE, &i))) {
1110
"xfs_difree: xfs_inobt_lookup returned() an error %d on %s. Returning error.",
1111
error, mp->m_fsname);
1103
xfs_warn(mp, "%s: xfs_inobt_lookup() returned error %d.",
1114
1107
XFS_WANT_CORRUPTED_GOTO(i == 1, error0);
1115
1108
error = xfs_inobt_get_rec(cur, &rec, &i);
1118
"xfs_difree: xfs_inobt_get_rec() returned an error %d on %s. Returning error.",
1119
error, mp->m_fsname);
1110
xfs_warn(mp, "%s: xfs_inobt_get_rec() returned error %d.",
1122
1114
XFS_WANT_CORRUPTED_GOTO(i == 1, error0);
1157
1149
xfs_trans_mod_sb(tp, XFS_TRANS_SB_IFREE, -(ilen - 1));
1159
1151
if ((error = xfs_btree_delete(cur, &i))) {
1160
cmn_err(CE_WARN, "xfs_difree: xfs_btree_delete returned an error %d on %s.\n",
1161
error, mp->m_fsname);
1152
xfs_warn(mp, "%s: xfs_btree_delete returned error %d.",
1171
1163
error = xfs_inobt_update(cur, &rec);
1174
"xfs_difree: xfs_inobt_update returned an error %d on %s.",
1175
error, mp->m_fsname);
1165
xfs_warn(mp, "%s: xfs_inobt_update returned error %d.",
1219
1210
error = xfs_ialloc_read_agi(mp, tp, agno, &agbp);
1221
xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: "
1222
"xfs_ialloc_read_agi() returned "
1223
"error %d, agno %d",
1213
"%s: xfs_ialloc_read_agi() returned error %d, agno %d",
1214
__func__, error, agno);
1299
1289
if (flags & XFS_IGET_UNTRUSTED)
1300
1290
return XFS_ERROR(EINVAL);
1301
1291
if (agno >= mp->m_sb.sb_agcount) {
1302
xfs_fs_cmn_err(CE_ALERT, mp,
1303
"xfs_imap: agno (%d) >= "
1304
"mp->m_sb.sb_agcount (%d)",
1305
agno, mp->m_sb.sb_agcount);
1293
"%s: agno (%d) >= mp->m_sb.sb_agcount (%d)",
1294
__func__, agno, mp->m_sb.sb_agcount);
1307
1296
if (agbno >= mp->m_sb.sb_agblocks) {
1308
xfs_fs_cmn_err(CE_ALERT, mp,
1309
"xfs_imap: agbno (0x%llx) >= "
1310
"mp->m_sb.sb_agblocks (0x%lx)",
1311
(unsigned long long) agbno,
1312
(unsigned long) mp->m_sb.sb_agblocks);
1298
"%s: agbno (0x%llx) >= mp->m_sb.sb_agblocks (0x%lx)",
1299
__func__, (unsigned long long)agbno,
1300
(unsigned long)mp->m_sb.sb_agblocks);
1314
1302
if (ino != XFS_AGINO_TO_INO(mp, agno, agino)) {
1315
xfs_fs_cmn_err(CE_ALERT, mp,
1316
"xfs_imap: ino (0x%llx) != "
1317
"XFS_AGINO_TO_INO(mp, agno, agino) "
1319
ino, XFS_AGINO_TO_INO(mp, agno, agino));
1304
"%s: ino (0x%llx) != XFS_AGINO_TO_INO() (0x%llx)",
1306
XFS_AGINO_TO_INO(mp, agno, agino));
1321
1308
xfs_stack_trace();
1322
1309
#endif /* DEBUG */
1389
1376
if ((imap->im_blkno + imap->im_len) >
1390
1377
XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks)) {
1391
xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: "
1392
"(imap->im_blkno (0x%llx) + imap->im_len (0x%llx)) > "
1393
" XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks) (0x%llx)",
1394
(unsigned long long) imap->im_blkno,
1379
"%s: (im_blkno (0x%llx) + im_len (0x%llx)) > sb_dblocks (0x%llx)",
1380
__func__, (unsigned long long) imap->im_blkno,
1395
1381
(unsigned long long) imap->im_len,
1396
1382
XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks));
1397
1383
return XFS_ERROR(EINVAL);