[OmniOS-discuss] zfs recv assertion failed when scrubbing source pool

Lauri Tirkkonen lotheac at iki.fi
Fri Mar 4 15:43:17 UTC 2016


On Fri, Mar 04 2016 14:17:48 +0200, Lauri Tirkkonen wrote:
> On Thu, Oct 08 2015 10:59:20 +0300, Lauri Tirkkonen wrote:
> >     Assertion failed: ilen <= SPA_MAXBLOCKSIZE, file ../common/libzfs_sendrecv.c, line 1706, function recv_read
> 
> I have a repro of this now: a 17MB incremental replication stream, which
> coredumps 'zfs recv' (even when used with -n), on OmniOS r151014 and
> bloody alike. The filesystem in question is large, contains sensitive
> data, and has 162 child filesystems. The snapshots between which the
> incremental stream was generated were taken recursively.

I managed to tracked this down, and the root cause is a very large
amount of snapshots (169k) on the dataset from which the replication
stream was generated. Looking at zstreamdump, it seems like references
to all existing snapshots for the source dataset and its children are in
there (even though I generated the incremental stream between two
snapshots taken right after one another), and that caused a
dmu_replay_record_t in the stream to be larger than what recv expected:

    > 80478e8::print dmu_replay_record_t 
    {
        drr_type = 0 (DRR_BEGIN)
        drr_payloadlen = 0x1140fbc

(SPA_MAXBLOCKSIZE is 1<<24, which is less than that)

I fixed snapshot pruning for the source dataset and it's working again,
but this still seems like a bug - I'll try to get steps to repro and
report to illumos later.

-- 
Lauri Tirkkonen | lotheac @ IRCnet


More information about the OmniOS-discuss mailing list