[OpenAFS] Help needed for receovery of data of inode fileserver (Solaris 10 x86)

Hartmut Reuter reuter@rzg.mpg.de
Thu, 03 Apr 2008 22:33:59 +0200


Jeffrey Altman wrote:
> John Tang Boyland wrote:
> 
>> OK I compiled the salvager with debugging and without optimization.
>>
>> filip# /opt/SUNWspro/bin/dbx salvager.debug
>> For information about new features see `help changes'
>> To remove this message, put `dbxenv suppress_startup_message 7.5' in 
>> your .dbxrc
>> Reading salvager.debug
>> Reading ld.so.1
>> Reading libresolv.so.2
>> Reading libsocket.so.1
>> Reading libnsl.so.1
>> Reading libintl.so.1
>> Reading libdl.so.1
>> Reading libc.so.1
>> (dbx) run /vicepa -debug -parallel 1
>> Running: salvager.debug /vicepa -debug -parallel 1 (process id 3491)
>>
>> [after three hours, I pressed return]
>>
>> Thu Apr  3 14:14:20 2008: Assertion failed! file vol-salvage.c, line 
>> 3175.
>> signal ABRT (Abort) in __lwp_kill at 0xfee21157
>> 0xfee21157: __lwp_kill+0x0007:  jae      __lwp_kill+0x15        [ 
>> 0xfee21165, .+0xe ]
>> Current function is AssertionFailed
>>    48       abort();
>> (dbx) where
>>   [1] __lwp_kill(0x1, 0x6), at 0xfee21157   [2] _thr_kill(0x1, 0x6), 
>> at 0xfee1e8c9   [3] raise(0x6), at 0xfedcd163   [4] abort(0x804694a, 
>> 0x47f52c8c, 0x68540000, 0x70412075, 0x33202072, 0x3a343120), at 
>> 0xfedb0ba9 =>[5] AssertionFailed(file = 0x808b724 "vol-salvage.c", 
>> line = 3175), line 48 in "assert.c"
>>   [6] DistilVnodeEssence(rwVId = 536870912U, class = 1, ino = 
>> 21977313U, maxu = 0x8046bc4), line 3175 in "vol-salvage.c"
>>   [7] SalvageVolume(rwIsp = 0x9ab0130, alinkH = 0x9ac0de8), line 3346 
>> in "vol-salvage.c"
>>   [8] DoSalvageVolumeGroup(isp = 0x9ab0130, nVols = 1), line 2104 in 
>> "vol-salvage.c"
>>   [9] SalvageFileSys1(partP = 0x80bacd8, singleVolumeNumber = 0), line 
>> 1357 in "vol-salvage.c"
>>   [10] SalvageFileSys(partP = 0x80bacd8, singleVolumeNumber = 0), line 
>> 1192 in "vol-salvage.c"
>>   [11] handleit(as = 0x80a9340), line 687 in "vol-salvage.c"
>>   [12] cmd_Dispatch(argc = 6, argv = 0x80aaba8), line 902 in "cmd.c"
>>   [13] main(argc = 5, argv = 0x8047650), line 845 in "vol-salvage.c"
>> (dbx) up
>> Current function is DistilVnodeEssence
>>  3175                   assert(class == vLarge);
>> (dbx) list 3170,3180
>>  3170               vep->type = vnode->type;
>>  3171               vep->author = vnode->author;
>>  3172               vep->owner = vnode->owner;
>>  3173               vep->group = vnode->group;
>>  3174               if (vnode->type == vDirectory) {
>>  3175                   assert(class == vLarge);
>>  3176                   vip->inodes[vnodeIndex] = VNDISK_GET_INO(vnode);
>>  3177               }
>>  3178           }
>>  3179       }
>>  3180       STREAM_CLOSE(file);
> 
> 
> So what is the value of 'class' if not vLarge?
> 
As you can see from that line above it's vSmall:

 >>   [6] DistilVnodeEssence(rwVId = 536870912U, class = 1, ino =
 >> 21977313U, maxu = 0x8046bc4), line 3175 in "vol-salvage.c"

So there might be really some thing wrong with the SmallVnodeFile, but 
to do an AssertionFailed is not the best way to repair it!

Hartmut
-----------------------------------------------------------------
Hartmut Reuter                  e-mail 		reuter@rzg.mpg.de
			   	phone 		 +49-89-3299-1328
			   	fax   		 +49-89-3299-1301
RZG (Rechenzentrum Garching)   	web    http://www.rzg.mpg.de/~hwr
Computing Center of the Max-Planck-Gesellschaft (MPG) and the
Institut fuer Plasmaphysik (IPP)
-----------------------------------------------------------------