[OpenAFS] Salvageserver 1.6.1-3+deb7u1 core dump

Harald Barth haba@kth.se
Tue, 17 Jun 2014 11:03:00 +0200 (CEST)


> This change went into 1.6.6, so 1.6.7 would do as well.

Thanks. Built myself a 1.6.9 from the source deb from unstable.

But unfortunately, the volume in question breaks the 1.6.9 salvageserver as well :(

Gdb tells me:

(gdb) up
#1  0x00007f82c1a436f0 in abort () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) up
#2  0x00007f82c2424bb8 in osi_Panic (
    msg=msg@entry=0x7f82c245c1d0 "assertion failed: %s, file: %s, line: %d\n")
    at ./../rx/rx_user.c:251
251         afs_abort();
(gdb) up
#3  0x00007f82c2424bd5 in osi_AssertFailU (
    expr=expr@entry=0x7f82c2450c13 "Delete(&dh, \"..\") == 0", 
    file=file@entry=0x7f82c245088f "../vol/vol-salvage.c", 
    line=line@entry=4127) at ./../rx/rx_user.c:261
261         osi_Panic("assertion failed: %s, file: %s, line: %d\n", expr,
(gdb) up
#4  0x00007f82c23f97b7 in SalvageVolume (
    salvinfo=salvinfo@entry=0x7fffcf109530, rwIsp=rwIsp@entry=0x7f82c2dba290, 
    alinkH=0x7f82c2db7e80) at ../vol/vol-salvage.c:4127
4127                        osi_Assert(Delete(&dh, "..") == 0);
(gdb) list
4122                        SetSalvageDirHandle(&dh, vid, salvinfo->fileSysDevice,
4123                                            salvinfo->vnodeInfo[class].inodes[v],
4124                                            &salvinfo->VolumeChanged);
4125                        pa.Vnode = LFVnode;
4126                        pa.Unique = LFUnique;
4127                        osi_Assert(Delete(&dh, "..") == 0);
4128                        osi_Assert(Create(&dh, "..", &pa) == 0);
4129
4130                        /* The original parent's link count was decremented above.
4131                         * Here we increment the new parent's link count.
(gdb) p dh
$1 = {dirh_volume = 536904480, dirh_device = 0, dirh_inode = 173619825082415, 
  dirh_handle = 0x7f82c2db8980, dirh_cacheCheck = 44, 
  volumeChanged = 0x7fffcf109570}
(gdb) p &dh
$2 = (DirHandle *) 0x7fffcf108c00
(gdb) p pa 
$3 = {Volume = 4294967295, Vnode = 1, Unique = 1}


Should we not just make a ".." in this situation?

And now lunch.
Harald.