Skip to content

Commit 8314bca

Browse files
author
Chandan Babu R
committed
xfs: Replace numbered inode recovery error messages with descriptive ones
This commit also prints inode fields with invalid values instead of printing addresses of inode and buffer instances. Reviewed-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Darrick J. Wong <djwong@kernel.org> Signed-off-by: Chandan Babu R <chandan.babu@oracle.com> Suggested-by: Dave Chinner <dchinner@redhat.com>
1 parent df9ad5c commit 8314bca

1 file changed

Lines changed: 22 additions & 30 deletions

File tree

fs/xfs/xfs_inode_item_recover.c

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -324,63 +324,55 @@ xlog_recover_inode_commit_pass2(
324324
if (unlikely(S_ISREG(ldip->di_mode))) {
325325
if ((ldip->di_format != XFS_DINODE_FMT_EXTENTS) &&
326326
(ldip->di_format != XFS_DINODE_FMT_BTREE)) {
327-
XFS_CORRUPTION_ERROR("xlog_recover_inode_pass2(3)",
328-
XFS_ERRLEVEL_LOW, mp, ldip,
329-
sizeof(*ldip));
327+
XFS_CORRUPTION_ERROR(
328+
"Bad log dinode data fork format for regular file",
329+
XFS_ERRLEVEL_LOW, mp, ldip, sizeof(*ldip));
330330
xfs_alert(mp,
331-
"%s: Bad regular inode log record, rec ptr "PTR_FMT", "
332-
"ino ptr = "PTR_FMT", ino bp = "PTR_FMT", ino %Ld",
333-
__func__, item, dip, bp, in_f->ilf_ino);
331+
"Bad inode 0x%llx, data fork format 0x%x",
332+
in_f->ilf_ino, ldip->di_format);
334333
error = -EFSCORRUPTED;
335334
goto out_release;
336335
}
337336
} else if (unlikely(S_ISDIR(ldip->di_mode))) {
338337
if ((ldip->di_format != XFS_DINODE_FMT_EXTENTS) &&
339338
(ldip->di_format != XFS_DINODE_FMT_BTREE) &&
340339
(ldip->di_format != XFS_DINODE_FMT_LOCAL)) {
341-
XFS_CORRUPTION_ERROR("xlog_recover_inode_pass2(4)",
342-
XFS_ERRLEVEL_LOW, mp, ldip,
343-
sizeof(*ldip));
340+
XFS_CORRUPTION_ERROR(
341+
"Bad log dinode data fork format for directory",
342+
XFS_ERRLEVEL_LOW, mp, ldip, sizeof(*ldip));
344343
xfs_alert(mp,
345-
"%s: Bad dir inode log record, rec ptr "PTR_FMT", "
346-
"ino ptr = "PTR_FMT", ino bp = "PTR_FMT", ino %Ld",
347-
__func__, item, dip, bp, in_f->ilf_ino);
344+
"Bad inode 0x%llx, data fork format 0x%x",
345+
in_f->ilf_ino, ldip->di_format);
348346
error = -EFSCORRUPTED;
349347
goto out_release;
350348
}
351349
}
352350
if (unlikely(ldip->di_nextents + ldip->di_anextents > ldip->di_nblocks)){
353-
XFS_CORRUPTION_ERROR("xlog_recover_inode_pass2(5)",
354-
XFS_ERRLEVEL_LOW, mp, ldip,
355-
sizeof(*ldip));
351+
XFS_CORRUPTION_ERROR("Bad log dinode extent counts",
352+
XFS_ERRLEVEL_LOW, mp, ldip, sizeof(*ldip));
356353
xfs_alert(mp,
357-
"%s: Bad inode log record, rec ptr "PTR_FMT", dino ptr "PTR_FMT", "
358-
"dino bp "PTR_FMT", ino %Ld, total extents = %d, nblocks = %Ld",
359-
__func__, item, dip, bp, in_f->ilf_ino,
360-
ldip->di_nextents + ldip->di_anextents,
354+
"Bad inode 0x%llx, nextents 0x%x, anextents 0x%x, nblocks 0x%llx",
355+
in_f->ilf_ino, ldip->di_nextents, ldip->di_anextents,
361356
ldip->di_nblocks);
362357
error = -EFSCORRUPTED;
363358
goto out_release;
364359
}
365360
if (unlikely(ldip->di_forkoff > mp->m_sb.sb_inodesize)) {
366-
XFS_CORRUPTION_ERROR("xlog_recover_inode_pass2(6)",
367-
XFS_ERRLEVEL_LOW, mp, ldip,
368-
sizeof(*ldip));
361+
XFS_CORRUPTION_ERROR("Bad log dinode fork offset",
362+
XFS_ERRLEVEL_LOW, mp, ldip, sizeof(*ldip));
369363
xfs_alert(mp,
370-
"%s: Bad inode log record, rec ptr "PTR_FMT", dino ptr "PTR_FMT", "
371-
"dino bp "PTR_FMT", ino %Ld, forkoff 0x%x", __func__,
372-
item, dip, bp, in_f->ilf_ino, ldip->di_forkoff);
364+
"Bad inode 0x%llx, di_forkoff 0x%x",
365+
in_f->ilf_ino, ldip->di_forkoff);
373366
error = -EFSCORRUPTED;
374367
goto out_release;
375368
}
376369
isize = xfs_log_dinode_size(mp);
377370
if (unlikely(item->ri_buf[1].i_len > isize)) {
378-
XFS_CORRUPTION_ERROR("xlog_recover_inode_pass2(7)",
379-
XFS_ERRLEVEL_LOW, mp, ldip,
380-
sizeof(*ldip));
371+
XFS_CORRUPTION_ERROR("Bad log dinode size", XFS_ERRLEVEL_LOW,
372+
mp, ldip, sizeof(*ldip));
381373
xfs_alert(mp,
382-
"%s: Bad inode log record length %d, rec ptr "PTR_FMT,
383-
__func__, item->ri_buf[1].i_len, item);
374+
"Bad inode 0x%llx log dinode size 0x%x",
375+
in_f->ilf_ino, item->ri_buf[1].i_len);
384376
error = -EFSCORRUPTED;
385377
goto out_release;
386378
}

0 commit comments

Comments
 (0)