> On 5. Jun 2021, at 12:31, Patrick Welche <prlw1%cam.ac.uk@localhost> wrote: > > On Sat, Jun 05, 2021 at 10:03:21AM -0000, Michael van Elst wrote: >> prlw1%cam.ac.uk@localhost (Patrick Welche) writes: >> >>> How can gdb not see a spcl anywhere? >> >> /usr/include/protocols/dumprestore.h:#define spcl u_spcl.s_spcl >> >> spcl is just a define that got resolved by the compiler. > > ach... here it is(gdb) print u_spcl.s_spcl > > $2 = {c_type = 6, c_old_date = 0, c_old_ddate = 0, c_volume = 1, > c_old_tapea = 0, c_inumber = 397083647, c_magic = 424935705, > c_checksum = 1906085926, __c_ino = {__uc_dinode = {di_mode = 0, > di_nlink = 0, di_oldids = {0, 0}, di_size = 0, di_atime = 0, > di_atimensec = 0, di_mtime = 0, di_mtimensec = 0, di_ctime = 0, > di_ctimensec = 0, di_db = {0 <repeats 12 times>}, di_ib = {0, 0, 0}, > di_flags = 0, di_blocks = 0, di_gen = 0, di_uid = 0, di_gid = 0, > di_modrev = 0}, __uc_ino = {__uc_mode = 0, __uc_spare1 = {0, 0, 0}, > __uc_size = 0, __uc_old_atime = 0, __uc_atimensec = 0, > __uc_old_mtime = 0, __uc_mtimensec = 0, __uc_spare2 = {0, 0}, > __uc_rdev = 0, __uc_birthtimensec = 0, __uc_birthtime = 0, > __uc_atime = 0, __uc_mtime = 0, __uc_spare4 = {0, 0, 0, 0, 0, 0, 0}, > __uc_file_flags = 0, __uc_spare5 = {0, 0}, __uc_uid = 0, __uc_gid = 0, > __uc_spare6 = {0, 0}}}, c_count = 48473, > c_addr = '\000' <repeats 511 times>, > c_label = "none", '\000' <repeats 11 times>, c_level = 0, > c_filesys = "/store/backup", '\000' <repeats 50 times>, > c_dev = "/dev/rdk18", '\000' <repeats 53 times>, > c_host = "quantz", '\000' <repeats 57 times>, c_flags = 2, > c_old_firstrec = 0, c_date = 1622887657, c_ddate = 0, c_tapea = 10, > c_firstrec = 0, c_spare = {0 <repeats 24 times>}} > (gdb) bt > #0 flushtape () at /usr/src/sbin/dump/tape.c:333 > #1 0x000000000020763e in writerec (dp=dp@entry=0x7f7ff3a01380 "", > isspcl=isspcl@entry=0) at /usr/src/sbin/dump/tape.c:168 > #2 0x0000000000208e49 in dumpmap (map=<optimized out>, type=type@entry=6, > ino=ino@entry=397083647) at /usr/src/sbin/dump/traverse.c:716 > #3 0x000000000020b355 in main (argc=1, argv=0x7f7fffffe7e8) > at /usr/src/sbin/dump/main.c:646 > (gdb) list > 328 } > 329 > 330 blks = 0; > 331 if (iswap32(spcl.c_type) != TS_END) { > 332 for (i = 0; i < iswap32(spcl.c_count); i++) > 333 if (spcl.c_addr[i] != 0) > 334 blks++; > 335 } > 336 slp->count = lastspclrec + blks + 1 - iswap64(spcl.c_tapea); > 337 slp->tapea = iswap64(spcl.c_tapea); > (gdb) print i > $6 = <optimized out> > (gdb) print u_spcl.s_spcl.c_count > $7 = 48473 > (gdb) whatis u_spcl.s_spcl.c_addr > type = char [512] > > so guess optimized_out i >> 512 > > c_type==6 = TS_CLRI map of inodes deleted since last dump > > (a bit odd: > (gdb) print needswap > $11 = 0 > (gdb) print iswap32(u_spcl.s_spcl.c_count) > $10 = 1505558528 > ) > > Still puzzled... This trace makes no sense, bitmaps (CLRI and BITS) don't have holes and therefore ignore the "c_addr" array. I have no idea how dumping a bitmap ends in the hole processing of flushtape(). -- J. Hannken-Illjes - hannken%eis.cs.tu-bs.de@localhost - TU Braunschweig
Attachment:
signature.asc
Description: Message signed with OpenPGP