Dmitry Morozovsky
2014-Jul-24 17:15 UTC
restore: bad block size 5632 between different major versions
Colleagues, I'm a bit stumbled. prerequisites: - backup server, stable/9 (a bit obsoleted, but this is unrelated to the problem) - bunch of servers of different branches, using UFS, backing 'em up with /sbin/dump over ssh for at least one pair, I have misterious situation: restore can work on the own base, but not on backup server, even (!) USING their own /rescue/restore: ** on backup server: backup at whale:/B/dump/lion> uname -r 9.1-STABLE backup at whale:/B/dump/lion> cat 5-var.dgz.?? | zcat | ./restore -t -v -f - Verify tape and initialize maps Dump date: Thu Jul 24 06:57:04 2014 Dumped from: Wed Jul 23 06:57:04 2014 Level 5 dump of /var on lion.rinet.ru:/dev/da0e Label: none bad block size 5632 ** on original machine, copied backup file there: root at lion:~backup# uname -r 7.2-RELEASE-p3 root at lion:~backup# cat 5-var.dgz.?? | zcat | restore -t -v -f - | head Level 5 dump of /var on lion.rinet.ru:/dev/da0e Label: none Verify tape and initialize maps Dump date: Thu Jul 24 06:57:04 2014 Dumped from: Wed Jul 23 06:57:04 2014 Extract directories from tape Initialize symbol table. dir 2 . dir 3 ./.snap dir 1860608 ./backups dir 1860613 ./backups/mysql dir 1978368 ./backups/mysql/trf ** copied /rescue/restore from lion to whale, placing it at rescue7: backup at whale:/B/dump/lion> cat 5-var.dgz.?? | zcat | /rescue7/restore -t -v -f - Verify tape and initialize maps Dump date: Thu Jul 24 06:57:04 2014 Dumped from: Wed Jul 23 06:57:04 2014 Level 5 dump of /var on lion.rinet.ru:/dev/da0e Label: none bad block size 5632 WHAT?! -- Sincerely, D.Marck [DM5020, MCK-RIPE, DM3-RIPN] [ FreeBSD committer: marck at FreeBSD.org ] ------------------------------------------------------------------------ *** Dmitry Morozovsky --- D.Marck --- Wild Woozle --- marck at rinet.ru *** ------------------------------------------------------------------------
Dmitry Morozovsky
2014-Jul-27 19:19 UTC
restore: bad block size 5632 between different major versions
Colleagues, following up to myself: On Thu, 24 Jul 2014, Dmitry Morozovsky wrote:> I'm a bit stumbled. > > prerequisites: > > - backup server, stable/9 (a bit obsoleted, but this is unrelated to the > problem)I forgot to mention that it is ZFS-based.> ** on backup server: > backup at whale:/B/dump/lion> uname -r > 9.1-STABLE > backup at whale:/B/dump/lion> cat 5-var.dgz.?? | zcat | ./restore -t -v -f - > Verify tape and initialize maps > Dump date: Thu Jul 24 06:57:04 2014 > Dumped from: Wed Jul 23 06:57:04 2014 > Level 5 dump of /var on lion.rinet.ru:/dev/da0e > Label: none > bad block size 5632ktrace'ing restore I've found that stat(".") on ZFS in my case returning blksize=5632, which makes restore unhappy somewhere at 261- if (stbuf.st_blksize >= TP_BSIZE && stbuf.st_blksize <= MAXBSIZE) 262- fssize = stbuf.st_blksize; 263- if (((fssize - 1) & fssize) != 0) { 264: fprintf(stderr, "bad block size %ld\n", fssize); 265- done(1); 266- } commenting lines 263-266 gives me working restore. Any hints from now? It's not clear to me why we check this at all? Thanks! -- Sincerely, D.Marck [DM5020, MCK-RIPE, DM3-RIPN] [ FreeBSD committer: marck at FreeBSD.org ] ------------------------------------------------------------------------ *** Dmitry Morozovsky --- D.Marck --- Wild Woozle --- marck at rinet.ru *** ------------------------------------------------------------------------