[issue1583] panic: assertion: cursor->trans->sync_lock_refs > 0 in hammer_recover_cursor
Matthew Dillon
dillon at apollo.backplane.com
Sat Jan 30 10:28:16 PST 2010
:I briefly thought the low I/O figures on da1 (mirroring from da0 to da1) might
:have been a new quirk:
:
:> iostat -w1
: tty ad0 da0 da1 cpu
: tin tout KB/t tps MB/s KB/t tps MB/s KB/t tps MB/s us ni sy in id
: 2 465 0.00 0 0.00 0.00 0 0.00 0.00 0 0.00 4 0 10 1 85
: 0 80 0.00 0 0.00 64.00 643 40.21 64.00 4 0.25 21 0 42 2 35
: 0 80 0.00 0 0.00 63.82 683 42.59 60.00 4 0.23 28 0 37 3 32
: 0 80 0.00 0 0.00 63.79 614 38.26 64.00 6 0.37 20 0 38 1 41
:
:...but it completed in appropriate time and all the data appears to be there, so
:I'm not sure if HAMMER was being smart enough to skip over what existed from a
:previous interrupted copy or what. I don't really remember whether the
:pre-patch stats actually looked any different for the destination disk.
:
:[SATA disks on a mpt0, write caches enabled.]
The more likely case is that the mirror stream repeated the data but
since the target already had it there was no need to re-write it on
the target. In that case the only disk activity on the target will
be accessing and comparing the meta-data.
It tries to stage the mirroring stream so it can pick up where it
left off but it's a bit of a hack. If it managed to complete a
batch then it certainly will pick up after the completion and not
resend the whole batch. I need to redo the code to actually
calculate the batch size and split things up based on that instead
of splitting things up based on B-Tree key ranges.
This applies to initial mirroring only, of course. Once the initial
copy is finished all later mirroring runs will be incremental.
-Matt
Matthew Dillon
<dillon at backplane.com>
More information about the Bugs
mailing list