All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Monnerie <michael.monnerie@is.it-management.at>
To: xfs@oss.sgi.com
Subject: Re: bad fs - xfs_repair 3.01 crashes on it
Date: Mon, 31 Aug 2009 08:40:35 +0200	[thread overview]
Message-ID: <200908310840.40778@zmi.at> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 16457 bytes --]

On Sonntag 12 Juli 2009 Eric Sandeen wrote:
> If you do want to try deleting that one file or other such tricks,
> you can do it on a sparse metadata image of the fs as a dry run:
>
> # xfs_metadump -o /dev/whatever metadump.img
> # xfs_mdrestore metadump.img filesystem.img
> # mount -o loop filesystem.img mnt/
> # <fiddle as you please>
> # umount mnt/
> # xfs_repair filesystem.img
> # mount -o loop filesystem.img mnt/
>
> and see what happens...

To warm up the old thread, I did this now:

* make metadump
* mount it
* remove unneeded files/dirs
This already produced lots of errors, where files/dirs couldn't be 
deleted. I made a metadump of this again, it's on 
http://zmi.at/xfs.metadump-brokenonly.bz2

Then I tried with v3.0.1:
# xfs_repair xfs.img 
Phase 1 - find and verify superblock...      
Phase 2 - using internal log                 
        - zero log...                        
        - scan filesystem freespace and inode maps...
        - found root inode chunk                     
Phase 3 - for each AG...                             
        - scan and clear agi unlinked lists...       
        - process known inodes and perform inode discovery...
        - 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                                          
local inode 3857051697 attr too small (size = 3, min size = 4)
bad attribute fork in inode 3857051697, clearing attr fork    
clearing inode 3857051697 attributes                          
cleared inode 3857051697                                      
        - 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                                           
        - agno = 39                                           
        - process newly discovered inodes...                  
Phase 4 - check for duplicate blocks...                       
        - setting up duplicate extent list...                 
        - check for inodes claiming duplicate blocks...       
        - 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                                           
data fork in regular inode 3857051697 claims used block 537546384
        - agno = 19                                              
xfs_repair: dinode.c:2108: process_inode_data_fork: Zusicherung »err == 
0« nicht erfüllt.
Abgebrochen                                                                              

So I patched out the ASSERT in #dinode.c:2108 and this made:

# xfs_repair xfs.img                                             
Phase 1 - find and verify superblock...                                                  
Phase 2 - using internal log                                                             
        - zero log...                                                                    
        - scan filesystem freespace and inode maps...                                    
        - found root inode chunk                                                         
Phase 3 - for each AG...                                                                 
        - scan and clear agi unlinked lists...                                           
        - process known inodes and perform inode discovery...                            
        - 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                                                                      
local inode 3857051697 attr too small (size = 3, min size = 4)                           
bad attribute fork in inode 3857051697, clearing attr fork                               
clearing inode 3857051697 attributes                                                     
cleared inode 3857051697                                                                 
        - 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                                                                      
        - agno = 39                                                                      
        - process newly discovered inodes...                                             
Phase 4 - check for duplicate blocks...                                                  
        - setting up duplicate extent list...                                            
        - check for inodes claiming duplicate blocks...                                  
        - 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
data fork in regular inode 3857051697 claims used block 537546384
bad attribute format 1 in inode 3857051697, resetting value
correcting nblocks for inode 3857051697, was 10135251 - counted 8388604
        - agno = 21
        - agno = 22
        - agno = 23
        - agno = 24
data fork in regular inode 6174936063 claims used block 537240415
correcting nblocks for inode 6174936063, was 1 - counted 0
data fork in regular inode 6180186880 claims used block 537242879
correcting nblocks for inode 6180186880, was 1 - counted 0
        - agno = 25
        - agno = 26
        - agno = 27
data fork in regular inode 7257143306 claims used block 537251790
correcting nblocks for inode 7257143306, was 1 - counted 0
data fork in regular inode 7257143307 claims used block 537257951
correcting nblocks for inode 7257143307, was 1 - counted 0
data fork in regular inode 6720520457 claims used block 537246687
correcting nblocks for inode 6720520457, was 1 - counted 0
data fork in regular inode 6720520458 claims used block 537247327
correcting nblocks for inode 6720520458, was 1 - counted 0
        - agno = 28
        - agno = 29
        - agno = 30
        - agno = 31
data fork in regular inode 8326467385 claims used block 537198367
correcting nblocks for inode 8326467385, was 1 - counted 0
        - agno = 32
inode block 537201328 multiply claimed, state was 3
inode block 537201329 multiply claimed, state was 3
inode block 537201330 multiply claimed, state was 3
data fork in regular inode 8595221283 claims used block 537201683
correcting nblocks for inode 8595221283, was 1 - counted 0
data fork in regular inode 8595221284 claims used block 537201684
        - agno = 33
correcting nblocks for inode 8595221284, was 5 - counted 0
data fork in regular inode 8595221285 claims used block 537201689
correcting nblocks for inode 8595221285, was 1 - counted 0
data fork in regular inode 8595221286 claims used block 537201690
correcting nblocks for inode 8595221286, was 6 - counted 0
data fork in regular inode 8326763299 claims used block 537270223
correcting nblocks for inode 8326763299, was 1 - counted 0
data fork in regular inode 8326763300 claims used block 537271439
correcting nblocks for inode 8326763300, was 1 - counted 0
data fork in regular inode 8595221287 claims used block 537201696
correcting nblocks for inode 8595221287, was 1 - counted 0
data fork in regular inode 8595221288 claims used block 537201699
attr fork in regular inode 8595221288 claims used block 537201698
xfs_repair: dinode.c:2241: process_inode_attr_fork: Zusicherung »err == 
0« nicht erfüllt.
data fork in regular inode 8058708772 claims used block 537258543
correcting nblocks for inode 8058708772, was 1 - counted 0
data fork in regular inode 8058708773 claims used block 537260719
correcting nblocks for inode 8058708773, was 1 - counted 0
Abgebrochen

So again patch dinode.c:2241 ASSERT away:
# xfs_repair xfs.img
(about 550KB output, see http://zmi.at/xfs_repair.txt )
corrupt dinode 8326467385, extent total = 1, nblocks = 0.  This is a 
bug.
Please capture the filesystem metadata with xfs_metadump and
report it to xfs@oss.sgi.com.
cache_node_purge: refcount was 1, not zero (node=0x7f90c4de34e0)

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

Now, should I PANIC? Doesn't all seem to be nice...
I mounted this image, made "rm -r *" so all files/dirs which were good 
were deleted. There are still a lot in there which can't be deleted. Can 
someone help me fix it please?
I made another metadump image, it's on 
http://zmi.at/xfs.metadump-brokenonly2.bz2

mfg zmi
-- 
// Michael Monnerie, Ing.BSc    -----      http://it-management.at
// Tel: 0660 / 415 65 31                      .network.your.ideas.
// PGP Key:         "curl -s http://zmi.at/zmi.asc | gpg --import"
// Fingerprint: AC19 F9D5 36ED CD8A EF38  500E CE14 91F7 1C12 09B4
// Keyserver: wwwkeys.eu.pgp.net                  Key-ID: 1C1209B4



[-- Attachment #1.2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

[-- Attachment #2: Type: text/plain, Size: 121 bytes --]

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

             reply	other threads:[~2009-08-31  6:41 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-31  6:40 Michael Monnerie [this message]
  -- strict thread matches above, loose matches on Subject: below --
2009-07-03 11:20 bad fs - xfs_repair 3.01 crashes on it Michael Monnerie
2009-07-03 18:34 ` Eric Sandeen
2009-07-04  5:43 ` Eric Sandeen
2009-07-12 17:02   ` Michael Monnerie
2009-07-12 18:09     ` Eric Sandeen
2009-07-12 18:52 ` Eric Sandeen
2009-07-12 22:08   ` Michael Monnerie

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=200908310840.40778@zmi.at \
    --to=michael.monnerie@is.it-management.at \
    --cc=xfs@oss.sgi.com \
    /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.