[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: xfs_repair trouble



Ragnar Kjxrstad wrote:

>On Tue, May 07, 2002 at 09:29:57AM -0500, Stephen Lord wrote:
>
>>Put it out of it's misery, it must be in some form of endless loop, there
>>also appears to be data corruption, that l_mp value is not supposed to
>>be NULL, it is supposed to be the first argument of zero_log. Once
>>this was gone, all bets are off.
>>
>
>It's not _endless_ as it's actually working it's way over the disk....
>
>Is the xfs-log located at the beginning or the end of the filesystem? 
>

The middle ;-)

>
>
>>I would say the problem originates higher up the process somewhere.
>>can you print out the contents of the mp argument of zero_log,
>>and dump the super block from the disk using xfs_db:
>>
>
>1: *mp = {m_sb = {sb_magicnum = 1481003842, sb_blocksize = 4096,
>    sb_dblocks = 210098062, sb_rblocks = 0, sb_rextents = 0,
>    sb_uuid = "$yOF?nNF\216>&8\212\021dz", sb_logstart = 104857604,
>    sb_rootino = 128, sb_rbmino = 129, sb_rsumino = 130, sb_rextsize = 16,
>    sb_agblocks = 1048576, sb_agcount = 201, sb_rbmblocks = 0,
>    sb_logblocks = 25646, sb_versionnum = 8324, sb_sectsize = 512,
>    sb_inodesize = 256, sb_inopblock = 16,
>    sb_fname = '\000' <repeats 11 times>, sb_blocklog = 12 '\f',
>    sb_sectlog = 9 '\t', sb_inodelog = 8 '\b', sb_inopblog = 4 '\004',
>    sb_agblklog = 20 '\024', sb_rextslog = 0 '\000', sb_inprogress = 0 '\000',
>    sb_imax_pct = 25 '\031', sb_icount = 64, sb_ifree = 60,
>    sb_fdblocks = 210071608, sb_frextents = 0, sb_uquotino = 0,
>    sb_gquotino = 0, sb_qflags = 0, sb_flags = 0 '\000',
>    sb_shared_vn = 0 '\000', sb_inoalignmt = 2, sb_unit = 0, sb_width = 0,
>    sb_dirblklog = 0 '\000', sb_dummy = "\000\000\000\000\000\000"},
>  m_bsize = 8, m_agfrotor = 0, m_agirotor = 0, m_maxagi = 201,
>  m_rsumlevels = 0, m_rsumsize = 0, m_rbmip = 0x0, m_rsumip = 0x0,
>  m_rootip = 0x0, m_dev = 2065, m_logdev = 0, m_rtdev = 0,
>  m_dircook_elog = 0 '\000', m_blkbit_log = 15 '\017', m_blkbb_log = 3 '\003',
>  m_agno_log = 8 '\b', m_agino_log = 24 '\030', m_inode_cluster_size = 8192,
>  m_blockmask = 4095, m_blockwsize = 1024, m_blockwmask = 1023, m_alloc_mxr = {
>    510, 340}, m_alloc_mnr = {255, 170}, m_bmap_dmxr = {254, 254},
>  m_bmap_dmnr = {127, 127}, m_inobt_mxr = {255, 510}, m_inobt_mnr = {127,
>    255}, m_ag_maxlevels = 3, m_bm_maxlevels = {5, 3}, m_in_maxlevels = 3,
>  m_perag = 0x80e49c0, m_flags = 0, m_qflags = 0, m_attroffset = 120,
>  m_da_node_ents = 510, m_ialloc_inos = 64, m_ialloc_blks = 4, m_litino = 156,
>  m_inoalign_mask = 1, m_reservations = {tr_write = 108216,
>    tr_itruncate = 175032, tr_rename = 305976, tr_link = 152832,
>    tr_remove = 153144, tr_symlink = 158520, tr_create = 157880,
>    tr_mkdir = 157880, tr_ifree = 14520, tr_ichange = 1592,
>    tr_growdata = 44160, tr_swrite = 384, tr_addafork = 69560,
>    tr_writeid = 384, tr_attrinval = 174720, tr_attrset = 22456,
>    tr_attrrm = 87992, tr_clearagi = 640, tr_growrtalloc = 65024,
>    tr_growrtzero = 4224, tr_growrtfree = 5760}, m_maxicount = 840392192,
>  m_dalign = 0, m_swidth = 0, m_sinoalign = 0, m_dir_magicpct = 1515,
>  m_dirversion = 2 '\002', m_dirblksize = 4096, m_dirblkfsbs = 1,
>  m_dirdatablk = 0, m_dirleafblk = 8388608, m_dirfreeblk = 16777216}
>
>>xfs_db -r /dev/xxxx
>>sb 0
>>p
>>quit
>>
>
>magicnum = 0x58465342
>blocksize = 4096
>dblocks = 210098062
>rblocks = 0
>rextents = 0
>uuid = 24794f46-3f6e-4ec6-8e3e-26388a11e47a
>logstart = 104857604
>rootino = 128
>rbmino = 129
>rsumino = 130
>rextsize = 16
>agblocks = 1048576
>agcount = 201
>rbmblocks = 0
>logblocks = 25646
>versionnum = 0x2084
>sectsize = 512
>inodesize = 256
>inopblock = 16
>fname = "\000\000\000\000\000\000\000\000\000\000\000\000"
>blocklog = 12
>sectlog = 9
>inodelog = 8
>inopblog = 4
>agblklog = 20
>rextslog = 0
>inprogress = 0
>imax_pct = 25
>icount = 64
>ifree = 60
>fdblocks = 210071608
>frextents = 0
>uquotino = 0
>gquotino = 0
>qflags = 0
>flags = 0
>shared_vn = 0
>inoalignmt = 2
>unit = 0
>width = 0
>dirblklog = 0
>
>
>Is logstart the block-number of the first block used for the log, and
>logblocks the size of the log?
>
>
>
Yes, and those are the only blocks this code should look at, it seems to 
have
wandered off into never never land. Your mount structure looks reasonable.
We will look into your other message about error return values being wrong.

Steve