diff options
Diffstat (limited to 'fs/xfs/xfs_inode.c')
-rw-r--r-- | fs/xfs/xfs_inode.c | 129 |
1 files changed, 58 insertions, 71 deletions
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index be7cf625421f..da871f532236 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c | |||
@@ -110,8 +110,8 @@ xfs_inobp_check( | |||
110 | dip = (xfs_dinode_t *)xfs_buf_offset(bp, | 110 | dip = (xfs_dinode_t *)xfs_buf_offset(bp, |
111 | i * mp->m_sb.sb_inodesize); | 111 | i * mp->m_sb.sb_inodesize); |
112 | if (!dip->di_next_unlinked) { | 112 | if (!dip->di_next_unlinked) { |
113 | xfs_fs_cmn_err(CE_ALERT, mp, | 113 | xfs_alert(mp, |
114 | "Detected a bogus zero next_unlinked field in incore inode buffer 0x%p. About to pop an ASSERT.", | 114 | "Detected bogus zero next_unlinked field in incore inode buffer 0x%p.", |
115 | bp); | 115 | bp); |
116 | ASSERT(dip->di_next_unlinked); | 116 | ASSERT(dip->di_next_unlinked); |
117 | } | 117 | } |
@@ -142,10 +142,9 @@ xfs_imap_to_bp( | |||
142 | (int)imap->im_len, buf_flags, &bp); | 142 | (int)imap->im_len, buf_flags, &bp); |
143 | if (error) { | 143 | if (error) { |
144 | if (error != EAGAIN) { | 144 | if (error != EAGAIN) { |
145 | cmn_err(CE_WARN, | 145 | xfs_warn(mp, |
146 | "xfs_imap_to_bp: xfs_trans_read_buf()returned " | 146 | "%s: xfs_trans_read_buf() returned error %d.", |
147 | "an error %d on %s. Returning error.", | 147 | __func__, error); |
148 | error, mp->m_fsname); | ||
149 | } else { | 148 | } else { |
150 | ASSERT(buf_flags & XBF_TRYLOCK); | 149 | ASSERT(buf_flags & XBF_TRYLOCK); |
151 | } | 150 | } |
@@ -180,12 +179,11 @@ xfs_imap_to_bp( | |||
180 | XFS_CORRUPTION_ERROR("xfs_imap_to_bp", | 179 | XFS_CORRUPTION_ERROR("xfs_imap_to_bp", |
181 | XFS_ERRLEVEL_HIGH, mp, dip); | 180 | XFS_ERRLEVEL_HIGH, mp, dip); |
182 | #ifdef DEBUG | 181 | #ifdef DEBUG |
183 | cmn_err(CE_PANIC, | 182 | xfs_emerg(mp, |
184 | "Device %s - bad inode magic/vsn " | 183 | "bad inode magic/vsn daddr %lld #%d (magic=%x)", |
185 | "daddr %lld #%d (magic=%x)", | ||
186 | XFS_BUFTARG_NAME(mp->m_ddev_targp), | ||
187 | (unsigned long long)imap->im_blkno, i, | 184 | (unsigned long long)imap->im_blkno, i, |
188 | be16_to_cpu(dip->di_magic)); | 185 | be16_to_cpu(dip->di_magic)); |
186 | ASSERT(0); | ||
189 | #endif | 187 | #endif |
190 | xfs_trans_brelse(tp, bp); | 188 | xfs_trans_brelse(tp, bp); |
191 | return XFS_ERROR(EFSCORRUPTED); | 189 | return XFS_ERROR(EFSCORRUPTED); |
@@ -317,7 +315,7 @@ xfs_iformat( | |||
317 | if (unlikely(be32_to_cpu(dip->di_nextents) + | 315 | if (unlikely(be32_to_cpu(dip->di_nextents) + |
318 | be16_to_cpu(dip->di_anextents) > | 316 | be16_to_cpu(dip->di_anextents) > |
319 | be64_to_cpu(dip->di_nblocks))) { | 317 | be64_to_cpu(dip->di_nblocks))) { |
320 | xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, | 318 | xfs_warn(ip->i_mount, |
321 | "corrupt dinode %Lu, extent total = %d, nblocks = %Lu.", | 319 | "corrupt dinode %Lu, extent total = %d, nblocks = %Lu.", |
322 | (unsigned long long)ip->i_ino, | 320 | (unsigned long long)ip->i_ino, |
323 | (int)(be32_to_cpu(dip->di_nextents) + | 321 | (int)(be32_to_cpu(dip->di_nextents) + |
@@ -330,8 +328,7 @@ xfs_iformat( | |||
330 | } | 328 | } |
331 | 329 | ||
332 | if (unlikely(dip->di_forkoff > ip->i_mount->m_sb.sb_inodesize)) { | 330 | if (unlikely(dip->di_forkoff > ip->i_mount->m_sb.sb_inodesize)) { |
333 | xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, | 331 | xfs_warn(ip->i_mount, "corrupt dinode %Lu, forkoff = 0x%x.", |
334 | "corrupt dinode %Lu, forkoff = 0x%x.", | ||
335 | (unsigned long long)ip->i_ino, | 332 | (unsigned long long)ip->i_ino, |
336 | dip->di_forkoff); | 333 | dip->di_forkoff); |
337 | XFS_CORRUPTION_ERROR("xfs_iformat(2)", XFS_ERRLEVEL_LOW, | 334 | XFS_CORRUPTION_ERROR("xfs_iformat(2)", XFS_ERRLEVEL_LOW, |
@@ -341,7 +338,7 @@ xfs_iformat( | |||
341 | 338 | ||
342 | if (unlikely((ip->i_d.di_flags & XFS_DIFLAG_REALTIME) && | 339 | if (unlikely((ip->i_d.di_flags & XFS_DIFLAG_REALTIME) && |
343 | !ip->i_mount->m_rtdev_targp)) { | 340 | !ip->i_mount->m_rtdev_targp)) { |
344 | xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, | 341 | xfs_warn(ip->i_mount, |
345 | "corrupt dinode %Lu, has realtime flag set.", | 342 | "corrupt dinode %Lu, has realtime flag set.", |
346 | ip->i_ino); | 343 | ip->i_ino); |
347 | XFS_CORRUPTION_ERROR("xfs_iformat(realtime)", | 344 | XFS_CORRUPTION_ERROR("xfs_iformat(realtime)", |
@@ -373,9 +370,8 @@ xfs_iformat( | |||
373 | * no local regular files yet | 370 | * no local regular files yet |
374 | */ | 371 | */ |
375 | if (unlikely((be16_to_cpu(dip->di_mode) & S_IFMT) == S_IFREG)) { | 372 | if (unlikely((be16_to_cpu(dip->di_mode) & S_IFMT) == S_IFREG)) { |
376 | xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, | 373 | xfs_warn(ip->i_mount, |
377 | "corrupt inode %Lu " | 374 | "corrupt inode %Lu (local format for regular file).", |
378 | "(local format for regular file).", | ||
379 | (unsigned long long) ip->i_ino); | 375 | (unsigned long long) ip->i_ino); |
380 | XFS_CORRUPTION_ERROR("xfs_iformat(4)", | 376 | XFS_CORRUPTION_ERROR("xfs_iformat(4)", |
381 | XFS_ERRLEVEL_LOW, | 377 | XFS_ERRLEVEL_LOW, |
@@ -385,9 +381,8 @@ xfs_iformat( | |||
385 | 381 | ||
386 | di_size = be64_to_cpu(dip->di_size); | 382 | di_size = be64_to_cpu(dip->di_size); |
387 | if (unlikely(di_size > XFS_DFORK_DSIZE(dip, ip->i_mount))) { | 383 | if (unlikely(di_size > XFS_DFORK_DSIZE(dip, ip->i_mount))) { |
388 | xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, | 384 | xfs_warn(ip->i_mount, |
389 | "corrupt inode %Lu " | 385 | "corrupt inode %Lu (bad size %Ld for local inode).", |
390 | "(bad size %Ld for local inode).", | ||
391 | (unsigned long long) ip->i_ino, | 386 | (unsigned long long) ip->i_ino, |
392 | (long long) di_size); | 387 | (long long) di_size); |
393 | XFS_CORRUPTION_ERROR("xfs_iformat(5)", | 388 | XFS_CORRUPTION_ERROR("xfs_iformat(5)", |
@@ -431,9 +426,8 @@ xfs_iformat( | |||
431 | size = be16_to_cpu(atp->hdr.totsize); | 426 | size = be16_to_cpu(atp->hdr.totsize); |
432 | 427 | ||
433 | if (unlikely(size < sizeof(struct xfs_attr_sf_hdr))) { | 428 | if (unlikely(size < sizeof(struct xfs_attr_sf_hdr))) { |
434 | xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, | 429 | xfs_warn(ip->i_mount, |
435 | "corrupt inode %Lu " | 430 | "corrupt inode %Lu (bad attr fork size %Ld).", |
436 | "(bad attr fork size %Ld).", | ||
437 | (unsigned long long) ip->i_ino, | 431 | (unsigned long long) ip->i_ino, |
438 | (long long) size); | 432 | (long long) size); |
439 | XFS_CORRUPTION_ERROR("xfs_iformat(8)", | 433 | XFS_CORRUPTION_ERROR("xfs_iformat(8)", |
@@ -488,9 +482,8 @@ xfs_iformat_local( | |||
488 | * kmem_alloc() or memcpy() below. | 482 | * kmem_alloc() or memcpy() below. |
489 | */ | 483 | */ |
490 | if (unlikely(size > XFS_DFORK_SIZE(dip, ip->i_mount, whichfork))) { | 484 | if (unlikely(size > XFS_DFORK_SIZE(dip, ip->i_mount, whichfork))) { |
491 | xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, | 485 | xfs_warn(ip->i_mount, |
492 | "corrupt inode %Lu " | 486 | "corrupt inode %Lu (bad size %d for local fork, size = %d).", |
493 | "(bad size %d for local fork, size = %d).", | ||
494 | (unsigned long long) ip->i_ino, size, | 487 | (unsigned long long) ip->i_ino, size, |
495 | XFS_DFORK_SIZE(dip, ip->i_mount, whichfork)); | 488 | XFS_DFORK_SIZE(dip, ip->i_mount, whichfork)); |
496 | XFS_CORRUPTION_ERROR("xfs_iformat_local", XFS_ERRLEVEL_LOW, | 489 | XFS_CORRUPTION_ERROR("xfs_iformat_local", XFS_ERRLEVEL_LOW, |
@@ -547,8 +540,7 @@ xfs_iformat_extents( | |||
547 | * kmem_alloc() or memcpy() below. | 540 | * kmem_alloc() or memcpy() below. |
548 | */ | 541 | */ |
549 | if (unlikely(size < 0 || size > XFS_DFORK_SIZE(dip, ip->i_mount, whichfork))) { | 542 | if (unlikely(size < 0 || size > XFS_DFORK_SIZE(dip, ip->i_mount, whichfork))) { |
550 | xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, | 543 | xfs_warn(ip->i_mount, "corrupt inode %Lu ((a)extents = %d).", |
551 | "corrupt inode %Lu ((a)extents = %d).", | ||
552 | (unsigned long long) ip->i_ino, nex); | 544 | (unsigned long long) ip->i_ino, nex); |
553 | XFS_CORRUPTION_ERROR("xfs_iformat_extents(1)", XFS_ERRLEVEL_LOW, | 545 | XFS_CORRUPTION_ERROR("xfs_iformat_extents(1)", XFS_ERRLEVEL_LOW, |
554 | ip->i_mount, dip); | 546 | ip->i_mount, dip); |
@@ -623,11 +615,10 @@ xfs_iformat_btree( | |||
623 | || XFS_BMDR_SPACE_CALC(nrecs) > | 615 | || XFS_BMDR_SPACE_CALC(nrecs) > |
624 | XFS_DFORK_SIZE(dip, ip->i_mount, whichfork) | 616 | XFS_DFORK_SIZE(dip, ip->i_mount, whichfork) |
625 | || XFS_IFORK_NEXTENTS(ip, whichfork) > ip->i_d.di_nblocks)) { | 617 | || XFS_IFORK_NEXTENTS(ip, whichfork) > ip->i_d.di_nblocks)) { |
626 | xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, | 618 | xfs_warn(ip->i_mount, "corrupt inode %Lu (btree).", |
627 | "corrupt inode %Lu (btree).", | ||
628 | (unsigned long long) ip->i_ino); | 619 | (unsigned long long) ip->i_ino); |
629 | XFS_ERROR_REPORT("xfs_iformat_btree", XFS_ERRLEVEL_LOW, | 620 | XFS_CORRUPTION_ERROR("xfs_iformat_btree", XFS_ERRLEVEL_LOW, |
630 | ip->i_mount); | 621 | ip->i_mount, dip); |
631 | return XFS_ERROR(EFSCORRUPTED); | 622 | return XFS_ERROR(EFSCORRUPTED); |
632 | } | 623 | } |
633 | 624 | ||
@@ -813,11 +804,9 @@ xfs_iread( | |||
813 | */ | 804 | */ |
814 | if (be16_to_cpu(dip->di_magic) != XFS_DINODE_MAGIC) { | 805 | if (be16_to_cpu(dip->di_magic) != XFS_DINODE_MAGIC) { |
815 | #ifdef DEBUG | 806 | #ifdef DEBUG |
816 | xfs_fs_cmn_err(CE_ALERT, mp, "xfs_iread: " | 807 | xfs_alert(mp, |
817 | "dip->di_magic (0x%x) != " | 808 | "%s: dip->di_magic (0x%x) != XFS_DINODE_MAGIC (0x%x)", |
818 | "XFS_DINODE_MAGIC (0x%x)", | 809 | __func__, be16_to_cpu(dip->di_magic), XFS_DINODE_MAGIC); |
819 | be16_to_cpu(dip->di_magic), | ||
820 | XFS_DINODE_MAGIC); | ||
821 | #endif /* DEBUG */ | 810 | #endif /* DEBUG */ |
822 | error = XFS_ERROR(EINVAL); | 811 | error = XFS_ERROR(EINVAL); |
823 | goto out_brelse; | 812 | goto out_brelse; |
@@ -835,9 +824,8 @@ xfs_iread( | |||
835 | error = xfs_iformat(ip, dip); | 824 | error = xfs_iformat(ip, dip); |
836 | if (error) { | 825 | if (error) { |
837 | #ifdef DEBUG | 826 | #ifdef DEBUG |
838 | xfs_fs_cmn_err(CE_ALERT, mp, "xfs_iread: " | 827 | xfs_alert(mp, "%s: xfs_iformat() returned error %d", |
839 | "xfs_iformat() returned error %d", | 828 | __func__, error); |
840 | error); | ||
841 | #endif /* DEBUG */ | 829 | #endif /* DEBUG */ |
842 | goto out_brelse; | 830 | goto out_brelse; |
843 | } | 831 | } |
@@ -1016,8 +1004,8 @@ xfs_ialloc( | |||
1016 | * This is because we're setting fields here we need | 1004 | * This is because we're setting fields here we need |
1017 | * to prevent others from looking at until we're done. | 1005 | * to prevent others from looking at until we're done. |
1018 | */ | 1006 | */ |
1019 | error = xfs_trans_iget(tp->t_mountp, tp, ino, | 1007 | error = xfs_iget(tp->t_mountp, tp, ino, XFS_IGET_CREATE, |
1020 | XFS_IGET_CREATE, XFS_ILOCK_EXCL, &ip); | 1008 | XFS_ILOCK_EXCL, &ip); |
1021 | if (error) | 1009 | if (error) |
1022 | return error; | 1010 | return error; |
1023 | ASSERT(ip != NULL); | 1011 | ASSERT(ip != NULL); |
@@ -1166,6 +1154,7 @@ xfs_ialloc( | |||
1166 | /* | 1154 | /* |
1167 | * Log the new values stuffed into the inode. | 1155 | * Log the new values stuffed into the inode. |
1168 | */ | 1156 | */ |
1157 | xfs_trans_ijoin_ref(tp, ip, XFS_ILOCK_EXCL); | ||
1169 | xfs_trans_log_inode(tp, ip, flags); | 1158 | xfs_trans_log_inode(tp, ip, flags); |
1170 | 1159 | ||
1171 | /* now that we have an i_mode we can setup inode ops and unlock */ | 1160 | /* now that we have an i_mode we can setup inode ops and unlock */ |
@@ -1820,9 +1809,8 @@ xfs_iunlink_remove( | |||
1820 | */ | 1809 | */ |
1821 | error = xfs_itobp(mp, tp, ip, &dip, &ibp, XBF_LOCK); | 1810 | error = xfs_itobp(mp, tp, ip, &dip, &ibp, XBF_LOCK); |
1822 | if (error) { | 1811 | if (error) { |
1823 | cmn_err(CE_WARN, | 1812 | xfs_warn(mp, "%s: xfs_itobp() returned error %d.", |
1824 | "xfs_iunlink_remove: xfs_itobp() returned an error %d on %s. Returning error.", | 1813 | __func__, error); |
1825 | error, mp->m_fsname); | ||
1826 | return error; | 1814 | return error; |
1827 | } | 1815 | } |
1828 | next_agino = be32_to_cpu(dip->di_next_unlinked); | 1816 | next_agino = be32_to_cpu(dip->di_next_unlinked); |
@@ -1867,9 +1855,9 @@ xfs_iunlink_remove( | |||
1867 | error = xfs_inotobp(mp, tp, next_ino, &last_dip, | 1855 | error = xfs_inotobp(mp, tp, next_ino, &last_dip, |
1868 | &last_ibp, &last_offset, 0); | 1856 | &last_ibp, &last_offset, 0); |
1869 | if (error) { | 1857 | if (error) { |
1870 | cmn_err(CE_WARN, | 1858 | xfs_warn(mp, |
1871 | "xfs_iunlink_remove: xfs_inotobp() returned an error %d on %s. Returning error.", | 1859 | "%s: xfs_inotobp() returned error %d.", |
1872 | error, mp->m_fsname); | 1860 | __func__, error); |
1873 | return error; | 1861 | return error; |
1874 | } | 1862 | } |
1875 | next_agino = be32_to_cpu(last_dip->di_next_unlinked); | 1863 | next_agino = be32_to_cpu(last_dip->di_next_unlinked); |
@@ -1882,9 +1870,8 @@ xfs_iunlink_remove( | |||
1882 | */ | 1870 | */ |
1883 | error = xfs_itobp(mp, tp, ip, &dip, &ibp, XBF_LOCK); | 1871 | error = xfs_itobp(mp, tp, ip, &dip, &ibp, XBF_LOCK); |
1884 | if (error) { | 1872 | if (error) { |
1885 | cmn_err(CE_WARN, | 1873 | xfs_warn(mp, "%s: xfs_itobp(2) returned error %d.", |
1886 | "xfs_iunlink_remove: xfs_itobp() returned an error %d on %s. Returning error.", | 1874 | __func__, error); |
1887 | error, mp->m_fsname); | ||
1888 | return error; | 1875 | return error; |
1889 | } | 1876 | } |
1890 | next_agino = be32_to_cpu(dip->di_next_unlinked); | 1877 | next_agino = be32_to_cpu(dip->di_next_unlinked); |
@@ -2939,16 +2926,16 @@ xfs_iflush_int( | |||
2939 | 2926 | ||
2940 | if (XFS_TEST_ERROR(be16_to_cpu(dip->di_magic) != XFS_DINODE_MAGIC, | 2927 | if (XFS_TEST_ERROR(be16_to_cpu(dip->di_magic) != XFS_DINODE_MAGIC, |
2941 | mp, XFS_ERRTAG_IFLUSH_1, XFS_RANDOM_IFLUSH_1)) { | 2928 | mp, XFS_ERRTAG_IFLUSH_1, XFS_RANDOM_IFLUSH_1)) { |
2942 | xfs_cmn_err(XFS_PTAG_IFLUSH, CE_ALERT, mp, | 2929 | xfs_alert_tag(mp, XFS_PTAG_IFLUSH, |
2943 | "xfs_iflush: Bad inode %Lu magic number 0x%x, ptr 0x%p", | 2930 | "%s: Bad inode %Lu magic number 0x%x, ptr 0x%p", |
2944 | ip->i_ino, be16_to_cpu(dip->di_magic), dip); | 2931 | __func__, ip->i_ino, be16_to_cpu(dip->di_magic), dip); |
2945 | goto corrupt_out; | 2932 | goto corrupt_out; |
2946 | } | 2933 | } |
2947 | if (XFS_TEST_ERROR(ip->i_d.di_magic != XFS_DINODE_MAGIC, | 2934 | if (XFS_TEST_ERROR(ip->i_d.di_magic != XFS_DINODE_MAGIC, |
2948 | mp, XFS_ERRTAG_IFLUSH_2, XFS_RANDOM_IFLUSH_2)) { | 2935 | mp, XFS_ERRTAG_IFLUSH_2, XFS_RANDOM_IFLUSH_2)) { |
2949 | xfs_cmn_err(XFS_PTAG_IFLUSH, CE_ALERT, mp, | 2936 | xfs_alert_tag(mp, XFS_PTAG_IFLUSH, |
2950 | "xfs_iflush: Bad inode %Lu, ptr 0x%p, magic number 0x%x", | 2937 | "%s: Bad inode %Lu, ptr 0x%p, magic number 0x%x", |
2951 | ip->i_ino, ip, ip->i_d.di_magic); | 2938 | __func__, ip->i_ino, ip, ip->i_d.di_magic); |
2952 | goto corrupt_out; | 2939 | goto corrupt_out; |
2953 | } | 2940 | } |
2954 | if ((ip->i_d.di_mode & S_IFMT) == S_IFREG) { | 2941 | if ((ip->i_d.di_mode & S_IFMT) == S_IFREG) { |
@@ -2956,9 +2943,9 @@ xfs_iflush_int( | |||
2956 | (ip->i_d.di_format != XFS_DINODE_FMT_EXTENTS) && | 2943 | (ip->i_d.di_format != XFS_DINODE_FMT_EXTENTS) && |
2957 | (ip->i_d.di_format != XFS_DINODE_FMT_BTREE), | 2944 | (ip->i_d.di_format != XFS_DINODE_FMT_BTREE), |
2958 | mp, XFS_ERRTAG_IFLUSH_3, XFS_RANDOM_IFLUSH_3)) { | 2945 | mp, XFS_ERRTAG_IFLUSH_3, XFS_RANDOM_IFLUSH_3)) { |
2959 | xfs_cmn_err(XFS_PTAG_IFLUSH, CE_ALERT, mp, | 2946 | xfs_alert_tag(mp, XFS_PTAG_IFLUSH, |
2960 | "xfs_iflush: Bad regular inode %Lu, ptr 0x%p", | 2947 | "%s: Bad regular inode %Lu, ptr 0x%p", |
2961 | ip->i_ino, ip); | 2948 | __func__, ip->i_ino, ip); |
2962 | goto corrupt_out; | 2949 | goto corrupt_out; |
2963 | } | 2950 | } |
2964 | } else if ((ip->i_d.di_mode & S_IFMT) == S_IFDIR) { | 2951 | } else if ((ip->i_d.di_mode & S_IFMT) == S_IFDIR) { |
@@ -2967,28 +2954,28 @@ xfs_iflush_int( | |||
2967 | (ip->i_d.di_format != XFS_DINODE_FMT_BTREE) && | 2954 | (ip->i_d.di_format != XFS_DINODE_FMT_BTREE) && |
2968 | (ip->i_d.di_format != XFS_DINODE_FMT_LOCAL), | 2955 | (ip->i_d.di_format != XFS_DINODE_FMT_LOCAL), |
2969 | mp, XFS_ERRTAG_IFLUSH_4, XFS_RANDOM_IFLUSH_4)) { | 2956 | mp, XFS_ERRTAG_IFLUSH_4, XFS_RANDOM_IFLUSH_4)) { |
2970 | xfs_cmn_err(XFS_PTAG_IFLUSH, CE_ALERT, mp, | 2957 | xfs_alert_tag(mp, XFS_PTAG_IFLUSH, |
2971 | "xfs_iflush: Bad directory inode %Lu, ptr 0x%p", | 2958 | "%s: Bad directory inode %Lu, ptr 0x%p", |
2972 | ip->i_ino, ip); | 2959 | __func__, ip->i_ino, ip); |
2973 | goto corrupt_out; | 2960 | goto corrupt_out; |
2974 | } | 2961 | } |
2975 | } | 2962 | } |
2976 | if (XFS_TEST_ERROR(ip->i_d.di_nextents + ip->i_d.di_anextents > | 2963 | if (XFS_TEST_ERROR(ip->i_d.di_nextents + ip->i_d.di_anextents > |
2977 | ip->i_d.di_nblocks, mp, XFS_ERRTAG_IFLUSH_5, | 2964 | ip->i_d.di_nblocks, mp, XFS_ERRTAG_IFLUSH_5, |
2978 | XFS_RANDOM_IFLUSH_5)) { | 2965 | XFS_RANDOM_IFLUSH_5)) { |
2979 | xfs_cmn_err(XFS_PTAG_IFLUSH, CE_ALERT, mp, | 2966 | xfs_alert_tag(mp, XFS_PTAG_IFLUSH, |
2980 | "xfs_iflush: detected corrupt incore inode %Lu, total extents = %d, nblocks = %Ld, ptr 0x%p", | 2967 | "%s: detected corrupt incore inode %Lu, " |
2981 | ip->i_ino, | 2968 | "total extents = %d, nblocks = %Ld, ptr 0x%p", |
2969 | __func__, ip->i_ino, | ||
2982 | ip->i_d.di_nextents + ip->i_d.di_anextents, | 2970 | ip->i_d.di_nextents + ip->i_d.di_anextents, |
2983 | ip->i_d.di_nblocks, | 2971 | ip->i_d.di_nblocks, ip); |
2984 | ip); | ||
2985 | goto corrupt_out; | 2972 | goto corrupt_out; |
2986 | } | 2973 | } |
2987 | if (XFS_TEST_ERROR(ip->i_d.di_forkoff > mp->m_sb.sb_inodesize, | 2974 | if (XFS_TEST_ERROR(ip->i_d.di_forkoff > mp->m_sb.sb_inodesize, |
2988 | mp, XFS_ERRTAG_IFLUSH_6, XFS_RANDOM_IFLUSH_6)) { | 2975 | mp, XFS_ERRTAG_IFLUSH_6, XFS_RANDOM_IFLUSH_6)) { |
2989 | xfs_cmn_err(XFS_PTAG_IFLUSH, CE_ALERT, mp, | 2976 | xfs_alert_tag(mp, XFS_PTAG_IFLUSH, |
2990 | "xfs_iflush: bad inode %Lu, forkoff 0x%x, ptr 0x%p", | 2977 | "%s: bad inode %Lu, forkoff 0x%x, ptr 0x%p", |
2991 | ip->i_ino, ip->i_d.di_forkoff, ip); | 2978 | __func__, ip->i_ino, ip->i_d.di_forkoff, ip); |
2992 | goto corrupt_out; | 2979 | goto corrupt_out; |
2993 | } | 2980 | } |
2994 | /* | 2981 | /* |