All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Arkadiusz Miśkiewicz" <a.miskiewicz@gmail.com>
To: "Darrick J. Wong" <darrick.wong@oracle.com>, sandeen@sandeen.net
Cc: linux-xfs@vger.kernel.org
Subject: Re: [PATCH 04/10] libxfs: retain ifork_ops when flushing inode
Date: Wed, 2 Oct 2019 08:00:21 +0200	[thread overview]
Message-ID: <585e5cf7-5800-20ae-118e-96386ccd5902@gmail.com> (raw)
In-Reply-To: <155594791533.115924.7540619376750686973.stgit@magnolia>

On 22/04/2019 17:45, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> Retain the ifork ops used to validate the inode so that we can use the
> same one to iflush it.  xfs_repair phase 6 can use multiple transactions
> to fix various inode problems, which means that the inode might not be
> fully fixed when each transaction commits.
> 
> This can be a particular problem if there's a shortform directory with
> both invalid directory entries and incorrect i8count.  Phase 3 will set
> the parent inode to "0" to signal to phase 6 that it needs to reset the
> parent and i8count, but phase 6 starts a transaction to junk the bad
> entries which fail to commit because the parent is invalid:
> 
> fixing i8count in inode 69022994673
> Invalid inode number 0x0
> xfs_dir_ino_validate: XFS_ERROR_REPORT
> Metadata corruption detected at 0x464eb0, inode 0x10121750f1 data fork
> xfs_repair: warning - iflush_int failed (-117)
> 
> And thus the inode fixes never get written out.


I just hit something similar again. xfsprogs from current for-next
(b94a69ac being latest commit in it)

[...]
bogus .. inode number (0) in directory inode 36510278809, clearing inode
number
[...]
entry "langs" in dir ino 34365014856 doesn't have a .. entry, will set
it in ino 36510278809.
[...]
setting .. in sf dir inode 36510278809 to 34365014856
Metadata corruption detected at 0x460e1c, inode 0x8802ea499 data fork
xfs_repair: warning - iflush_int failed (-117)
[...]
Phase 7 - verify and correct link counts...
Invalid inode number 0x0
xfs_dir_ino_validate: XFS_ERROR_REPORT
Metadata corruption detected at 0x460da8, inode 0x8802ea499 data fork

fatal error -- couldn't map inode 36510278809, err = 117


Full log output below:

> # /tmp/qq/sbin/xfs_repair -vvv -o bhash=256000 /dev/sdd1
> Phase 1 - find and verify superblock...
>         - reporting progress in intervals of 15 minutes
> Phase 2 - using internal log
>         - zero log...
> zero_log: head block 3022391 tail block 3022391
>         - scan filesystem freespace and inode maps...
>         - 14:26:44: scanning filesystem freespace - 39 of 39 allocation groups done
>         - found root inode chunk
> libxfs_bcache: 0xdb0900
> Max supported entries = 2048000
> Max utilized entries = 40516
> Active entries = 40516
> Hash table size = 256000
> Hits = 0
> Misses = 40517
> Hit ratio =  0.00
> MRU 0 entries =  40516 (100%)
> MRU 1 entries =      0 (  0%)
> MRU 2 entries =      0 (  0%)
> MRU 3 entries =      0 (  0%)
> MRU 4 entries =      0 (  0%)
> MRU 5 entries =      0 (  0%)
> MRU 6 entries =      0 (  0%)
> MRU 7 entries =      0 (  0%)
> MRU 8 entries =      0 (  0%)
> MRU 9 entries =      0 (  0%)
> MRU 10 entries =      0 (  0%)
> MRU 11 entries =      0 (  0%)
> MRU 12 entries =      0 (  0%)
> MRU 13 entries =      0 (  0%)
> MRU 14 entries =      0 (  0%)
> MRU 15 entries =      0 (  0%)
> Dirty MRU 16 entries =      0 (  0%)
> Hash buckets with   0 entries 218473 (  0%)
> Hash buckets with   1 entries  34691 ( 85%)
> Hash buckets with   2 entries   2690 ( 13%)
> Hash buckets with   3 entries    139 (  1%)
> Hash buckets with   4 entries      7 (  0%)
> Phase 3 - for each AG...
>         - scan and clear agi unlinked lists...
>         - 14:26:44: scanning agi unlinked lists - 39 of 39 allocation groups done
>         - process known inodes and perform inode discovery...
>         - agno = 15
>         - agno = 0
>         - agno = 30
>         - agno = 16
>         - agno = 31
>         - agno = 1
>         - agno = 17
>         - agno = 32
> bogus .. inode number (0) in directory inode 36510278809, clearing inode number
> bogus .. inode number (0) in directory inode 36512379414, clearing inode number
>         - agno = 18
>         - agno = 19
>         - agno = 33
>         - agno = 20
>         - agno = 34
>         - agno = 21
>         - agno = 35
>         - agno = 2
>         - agno = 22
>         - agno = 36
>         - agno = 23
>         - agno = 37
>         - agno = 24
>         - agno = 3
>         - agno = 38
>         - agno = 25
>         - agno = 4
>         - agno = 26
>         - agno = 5
>         - agno = 27
>         - agno = 6
>         - agno = 28
>         - agno = 7
>         - agno = 29
>         - agno = 8
>         - agno = 9
>         - agno = 10
>         - agno = 11
>         - agno = 12
>         - agno = 13
>         - agno = 14
>         - 17:27:19: process known inodes and inode discovery - 173158784 of 173158784 inodes done
>         - process newly discovered inodes...
>         - 17:27:19: process newly discovered inodes - 39 of 39 allocation groups done
> libxfs_bcache: 0xdb0900
> Max supported entries = 2048000
> Max utilized entries = 2048000
> Active entries = 2047963
> Hash table size = 256000
> Hits = 33258462
> Misses = 39986202
> Hit ratio = 45.41
> MRU 0 entries =  21826 (  1%)
> MRU 1 entries =      0 (  0%)
> MRU 2 entries =  43908 (  2%)
> MRU 3 entries = 218917 ( 10%)
> MRU 4 entries =  17304 (  0%)
> MRU 5 entries =  45429 (  2%)
> MRU 6 entries = 1097133 ( 53%)
> MRU 7 entries =  68828 (  3%)
> MRU 8 entries =      0 (  0%)
> MRU 9 entries =      0 (  0%)
> MRU 10 entries =      0 (  0%)
> MRU 11 entries = 318994 ( 15%)
> MRU 12 entries = 104225 (  5%)
> MRU 13 entries = 110173 (  5%)
> MRU 14 entries =   1226 (  0%)
> MRU 15 entries =      0 (  0%)
> Dirty MRU 16 entries =      0 (  0%)
> Hash buckets with   0 entries     75 (  0%)
> Hash buckets with   1 entries    669 (  0%)
> Hash buckets with   2 entries   2673 (  0%)
> Hash buckets with   3 entries   7083 (  1%)
> Hash buckets with   4 entries  14564 (  2%)
> Hash buckets with   5 entries  23510 (  5%)
> Hash buckets with   6 entries  31292 (  9%)
> Hash buckets with   7 entries  35847 ( 12%)
> Hash buckets with   8 entries  35808 ( 13%)
> Hash buckets with   9 entries  32245 ( 14%)
> Hash buckets with  10 entries  25460 ( 12%)
> Hash buckets with  11 entries  18399 (  9%)
> Hash buckets with  12 entries  12437 (  7%)
> Hash buckets with  13 entries   7502 (  4%)
> Hash buckets with  14 entries   4257 (  2%)
> Hash buckets with  15 entries   2172 (  1%)
> Hash buckets with  16 entries   1114 (  0%)
> Hash buckets with  17 entries    542 (  0%)
> Hash buckets with  18 entries    200 (  0%)
> Hash buckets with  19 entries     88 (  0%)
> Hash buckets with  20 entries     39 (  0%)
> Hash buckets with  21 entries     14 (  0%)
> Hash buckets with  22 entries      8 (  0%)
> Hash buckets with  23 entries      2 (  0%)
> Phase 4 - check for duplicate blocks...
>         - setting up duplicate extent list...
>         - 17:27:21: setting up duplicate extent list - 39 of 39 allocation groups done
>         - check for inodes claiming duplicate blocks...
>         - agno = 30
>         - agno = 15
>         - agno = 0
>         - agno = 16
>         - agno = 1
>         - agno = 31
>         - agno = 17
> bogus .. inode number (0) in directory inode 36510278809, clearing inode number
> bogus .. inode number (0) in directory inode 36512379414, clearing inode number
>         - agno = 18
>         - agno = 32
>         - agno = 19
>         - agno = 20
>         - agno = 33
>         - agno = 21
>         - agno = 34
>         - agno = 22
>         - agno = 35
>         - agno = 23
>         - agno = 36
>         - agno = 2
>         - agno = 37
>         - agno = 24
>         - agno = 25
>         - agno = 38
>         - agno = 26
>         - agno = 27
>         - agno = 28
>         - agno = 3
>         - agno = 29
>         - agno = 4
>         - agno = 5
>         - agno = 6
>         - agno = 7
>         - agno = 8
>         - agno = 9
>         - agno = 10
>         - agno = 11
>         - agno = 12
>         - agno = 13
>         - agno = 14
>         - 20:44:23: check for inodes claiming duplicate blocks - 173158784 of 173158784 inodes done
> libxfs_bcache: 0xdb0900
> Max supported entries = 2048000
> Max utilized entries = 2048000
> Active entries = 2047999
> Hash table size = 256000
> Hits = 64756246
> Misses = 82886582
> Hit ratio = 43.86
> MRU 0 entries =  19324 (  0%)
> MRU 1 entries =      0 (  0%)
> MRU 2 entries =  47524 (  2%)
> MRU 3 entries = 217973 ( 10%)
> MRU 4 entries =  16829 (  0%)
> MRU 5 entries =  45729 (  2%)
> MRU 6 entries = 1071173 ( 52%)
> MRU 7 entries =      0 (  0%)
> MRU 8 entries =      0 (  0%)
> MRU 9 entries =      0 (  0%)
> MRU 10 entries =      0 (  0%)
> MRU 11 entries = 400426 ( 19%)
> MRU 12 entries =  97317 (  4%)
> MRU 13 entries = 130545 (  6%)
> MRU 14 entries =   1159 (  0%)
> MRU 15 entries =      0 (  0%)
> Dirty MRU 16 entries =      0 (  0%)
> Hash buckets with   0 entries     73 (  0%)
> Hash buckets with   1 entries    664 (  0%)
> Hash buckets with   2 entries   2642 (  0%)
> Hash buckets with   3 entries   7175 (  1%)
> Hash buckets with   4 entries  14586 (  2%)
> Hash buckets with   5 entries  23505 (  5%)
> Hash buckets with   6 entries  31069 (  9%)
> Hash buckets with   7 entries  35990 ( 12%)
> Hash buckets with   8 entries  36151 ( 14%)
> Hash buckets with   9 entries  31999 ( 14%)
> Hash buckets with  10 entries  25381 ( 12%)
> Hash buckets with  11 entries  18361 (  9%)
> Hash buckets with  12 entries  12288 (  7%)
> Hash buckets with  13 entries   7494 (  4%)
> Hash buckets with  14 entries   4346 (  2%)
> Hash buckets with  15 entries   2285 (  1%)
> Hash buckets with  16 entries   1126 (  0%)
> Hash buckets with  17 entries    502 (  0%)
> Hash buckets with  18 entries    211 (  0%)
> Hash buckets with  19 entries     95 (  0%)
> Hash buckets with  20 entries     28 (  0%)
> Hash buckets with  21 entries     16 (  0%)
> Hash buckets with  22 entries     12 (  0%)
> Hash buckets with  23 entries      1 (  0%)
> Phase 5 - rebuild AG headers and trees...
>         - agno = 0
>         - agno = 1
>         - agno = 2
>         - agno = 3
>         - agno = 4
>         - agno = 5
>         - agno = 6
>         - agno = 7
>         - agno = 8
>         - agno = 9
>         - agno = 10
>         - agno = 11
>         - agno = 12
>         - agno = 13
>         - agno = 14
>         - agno = 15
>         - agno = 16
>         - agno = 17
>         - agno = 18
>         - agno = 19
>         - agno = 20
>         - agno = 21
>         - agno = 22
>         - agno = 23
>         - agno = 24
>         - agno = 25
>         - agno = 26
>         - agno = 27
>         - agno = 28
>         - agno = 29
>         - agno = 30
>         - agno = 31
>         - agno = 32
>         - agno = 33
>         - agno = 34
>         - agno = 35
>         - agno = 36
>         - agno = 37
>         - agno = 38
>         - 20:44:35: rebuild AG headers and trees - 39 of 39 allocation groups done
>         - reset superblock...
> libxfs_bcache: 0xdb0900
> Max supported entries = 2048000
> Max utilized entries = 2048000
> Active entries = 2047979
> Hash table size = 256000
> Hits = 64756472
> Misses = 82918282
> Hit ratio = 43.85
> MRU 0 entries =  19304 (  0%)
> MRU 1 entries =      0 (  0%)
> MRU 2 entries =  47524 (  2%)
> MRU 3 entries = 217973 ( 10%)
> MRU 4 entries =  16829 (  0%)
> MRU 5 entries =  45729 (  2%)
> MRU 6 entries = 1071173 ( 52%)
> MRU 7 entries =      0 (  0%)
> MRU 8 entries =      0 (  0%)
> MRU 9 entries =      0 (  0%)
> MRU 10 entries =      0 (  0%)
> MRU 11 entries = 400426 ( 19%)
> MRU 12 entries =  97317 (  4%)
> MRU 13 entries = 130545 (  6%)
> MRU 14 entries =   1159 (  0%)
> MRU 15 entries =      0 (  0%)
> Dirty MRU 16 entries =      0 (  0%)
> Hash buckets with   0 entries     73 (  0%)
> Hash buckets with   1 entries    678 (  0%)
> Hash buckets with   2 entries   2631 (  0%)
> Hash buckets with   3 entries   7189 (  1%)
> Hash buckets with   4 entries  14612 (  2%)
> Hash buckets with   5 entries  23535 (  5%)
> Hash buckets with   6 entries  31083 (  9%)
> Hash buckets with   7 entries  35948 ( 12%)
> Hash buckets with   8 entries  35995 ( 14%)
> Hash buckets with   9 entries  32122 ( 14%)
> Hash buckets with  10 entries  25412 ( 12%)
> Hash buckets with  11 entries  18278 (  9%)
> Hash buckets with  12 entries  12245 (  7%)
> Hash buckets with  13 entries   7570 (  4%)
> Hash buckets with  14 entries   4320 (  2%)
> Hash buckets with  15 entries   2299 (  1%)
> Hash buckets with  16 entries   1131 (  0%)
> Hash buckets with  17 entries    497 (  0%)
> Hash buckets with  18 entries    231 (  0%)
> Hash buckets with  19 entries     95 (  0%)
> Hash buckets with  20 entries     31 (  0%)
> Hash buckets with  21 entries     15 (  0%)
> Hash buckets with  22 entries      9 (  0%)
> Hash buckets with  23 entries      1 (  0%)
> Phase 6 - check inode connectivity...
>         - resetting contents of realtime bitmap and summary inodes
>         - traversing filesystem ...
>         - agno = 0
>         - agno = 1
>         - agno = 2
>         - agno = 3
>         - agno = 4
>         - agno = 5
>         - agno = 6
>         - agno = 7
>         - agno = 8
>         - agno = 9
>         - agno = 10
>         - agno = 11
>         - agno = 12
> entry "servmask" in dir ino 25777842447 doesn't have a .. entry, will set it in ino 36512379414.
>         - agno = 13
>         - agno = 14
>         - agno = 15
>         - agno = 16
> entry "langs" in dir ino 34365014856 doesn't have a .. entry, will set it in ino 36510278809.
>         - agno = 17
>         - agno = 18
>         - agno = 19
>         - agno = 20
>         - agno = 21
>         - agno = 22
>         - agno = 23
>         - agno = 24
>         - agno = 25
>         - agno = 26
>         - agno = 27
>         - agno = 28
>         - agno = 29
>         - agno = 30
>         - agno = 31
>         - agno = 32
>         - agno = 33
>         - agno = 34
>         - agno = 35
>         - agno = 36
>         - agno = 37
>         - agno = 38
> setting .. in sf dir inode 36512379414 to 25777842447
> Metadata corruption detected at 0x460e1c, inode 0x8804eb216 data fork
> xfs_repair: warning - iflush_int failed (-117)
> setting .. in sf dir inode 36510278809 to 34365014856
> Metadata corruption detected at 0x460e1c, inode 0x8802ea499 data fork
> xfs_repair: warning - iflush_int failed (-117)
>         - traversal finished ...
>         - moving disconnected inodes to lost+found ...
> libxfs_bcache: 0xdb0900
> Max supported entries = 2048000
> Max utilized entries = 2048000
> Active entries = 2047971
> Hash table size = 256000
> Hits = 167418187
> Misses = 119244070
> Hit ratio = 58.40
> MRU 0 entries =  80752 (  3%)
> MRU 1 entries =      0 (  0%)
> MRU 2 entries =   1830 (  0%)
> MRU 3 entries = 500840 ( 24%)
> MRU 4 entries =  18369 (  0%)
> MRU 5 entries =      0 (  0%)
> MRU 6 entries = 1110024 ( 54%)
> MRU 7 entries = 133410 (  6%)
> MRU 8 entries =      0 (  0%)
> MRU 9 entries =      0 (  0%)
> MRU 10 entries = 202746 (  9%)
> MRU 11 entries =      0 (  0%)
> MRU 12 entries =      0 (  0%)
> MRU 13 entries =      0 (  0%)
> MRU 14 entries =      0 (  0%)
> MRU 15 entries =      0 (  0%)
> Dirty MRU 16 entries =      0 (  0%)
> Hash buckets with   0 entries     72 (  0%)
> Hash buckets with   1 entries    655 (  0%)
> Hash buckets with   2 entries   2512 (  0%)
> Hash buckets with   3 entries   7015 (  1%)
> Hash buckets with   4 entries  14124 (  2%)
> Hash buckets with   5 entries  23498 (  5%)
> Hash buckets with   6 entries  31301 (  9%)
> Hash buckets with   7 entries  36059 ( 12%)
> Hash buckets with   8 entries  36530 ( 14%)
> Hash buckets with   9 entries  32219 ( 14%)
> Hash buckets with  10 entries  25732 ( 12%)
> Hash buckets with  11 entries  18590 (  9%)
> Hash buckets with  12 entries  12175 (  7%)
> Hash buckets with  13 entries   7484 (  4%)
> Hash buckets with  14 entries   4068 (  2%)
> Hash buckets with  15 entries   2087 (  1%)
> Hash buckets with  16 entries   1073 (  0%)
> Hash buckets with  17 entries    487 (  0%)
> Hash buckets with  18 entries    194 (  0%)
> Hash buckets with  19 entries     81 (  0%)
> Hash buckets with  20 entries     34 (  0%)
> Hash buckets with  21 entries      7 (  0%)
> Hash buckets with  22 entries      2 (  0%)
> Hash buckets with  23 entries      1 (  0%)
> Phase 7 - verify and correct link counts...
> Invalid inode number 0x0
> xfs_dir_ino_validate: XFS_ERROR_REPORT
> Metadata corruption detected at 0x460da8, inode 0x8802ea499 data fork
> 
> fatal error -- couldn't map inode 36510278809, err = 117
> 

-- 
Arkadiusz Miśkiewicz, arekm / ( maven.pl | pld-linux.org )

  parent reply	other threads:[~2019-10-02  6:00 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-22 15:44 [PATCH v3 00/10] xfsprogs-5.0: fix various problems Darrick J. Wong
2019-04-22 15:44 ` [PATCH 01/10] scrub: fix Makefile targets which depend on builddefs Darrick J. Wong
2019-04-22 18:27   ` Eric Sandeen
2019-04-22 18:28   ` Bill O'Donnell
2019-04-22 15:45 ` [PATCH 02/10] xfs_info: use findmnt to handle mounted block devices Darrick J. Wong
2019-04-22 18:35   ` Eric Sandeen
2019-04-22 19:27   ` Bill O'Donnell
2019-04-22 15:45 ` [PATCH 03/10] xfs_repair: correctly account for free space btree shrinks when fixing freelist Darrick J. Wong
2019-04-22 19:24   ` Eric Sandeen
2019-04-22 19:36   ` Bill O'Donnell
2019-04-22 15:45 ` [PATCH 04/10] libxfs: retain ifork_ops when flushing inode Darrick J. Wong
2019-04-22 19:40   ` Bill O'Donnell
2019-04-22 19:45   ` Eric Sandeen
2019-10-02  6:00   ` Arkadiusz Miśkiewicz [this message]
2019-04-22 15:45 ` [PATCH 05/10] libxfs: drop the ifork_ops parameter from _inode_verify_forks Darrick J. Wong
2019-04-22 19:43   ` Bill O'Donnell
2019-04-22 20:49   ` Eric Sandeen
2019-04-22 15:45 ` [PATCH 06/10] misc: fix strncpy length complaints Darrick J. Wong
2019-04-22 20:48   ` Eric Sandeen
2019-04-22 20:57     ` Darrick J. Wong
2019-04-22 21:04       ` Eric Sandeen
2019-04-22 21:07   ` Eric Sandeen
2019-04-23 15:07   ` Bill O'Donnell
2019-04-22 15:45 ` [PATCH 07/10] libxfs: refactor buffer item release code Darrick J. Wong
2019-04-22 21:26   ` Eric Sandeen
2019-04-22 21:35     ` Darrick J. Wong
2019-04-22 21:40       ` Eric Sandeen
2019-04-23 20:51   ` [PATCH v2 " Darrick J. Wong
2019-04-23 20:56     ` Bill O'Donnell
2019-04-22 15:45 ` [PATCH 08/10] libxfs: don't touch buffer log item pointer when flushing inode log item Darrick J. Wong
2019-04-23 17:56   ` Eric Sandeen
2019-04-23 20:52   ` Bill O'Donnell
2019-04-22 15:45 ` [PATCH 09/10] libxfs: fix buffer log item lifetime weirdness Darrick J. Wong
2019-04-23 21:15   ` Bill O'Donnell
2019-04-22 15:45 ` [PATCH 10/10] libxfs: shorten inode item lifetime Darrick J. Wong
2019-04-23 21:22   ` Bill O'Donnell
2019-04-23 21:04 ` [PATCH 11/10] libfrog: fix memory leak in bitmap_free Darrick J. Wong
2019-04-23 21:23   ` Bill O'Donnell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=585e5cf7-5800-20ae-118e-96386ccd5902@gmail.com \
    --to=a.miskiewicz@gmail.com \
    --cc=darrick.wong@oracle.com \
    --cc=linux-xfs@vger.kernel.org \
    --cc=sandeen@sandeen.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.