Bug #3659

zdb -R causes assertion failure for raidz vdev

Added by Max Bruning about 5 years ago. Updated about 5 years ago.

Status:NewStart date:2013-03-26
Priority:NormalDue date:
Assignee:sham pavman% Done:


Category:zfs - Zettabyte File System
Target version:-
Difficulty:Medium Tags:needs-triage


This is on SmartOS, joyent_20130307T214308Z.

Here is failure:

  1. zdb -R rzpool 0.4:20e00:8000:r
    Found vdev: /var/tmp/f5
    assertion failed for thread 0xfffffd7fff162a40, thread-id 1: vd->vdev_parent == (pio->io_vd ? pio->io_vd : pio->io_spa->spa_root_vdev), file ../../../uts/common/fs/zfs/zio.c, line 851
    Abort (core dumped) #

To reproduce:

  1. mkfile 100m /var/tmp/f1 /var/tmp/f2 /var/tmp/f3 /var/tmp/f4 /var/tmp/f5 #
  2. zpool create rzpool raidz /var/tmp/f1 /var/tmp/f2 /var/tmp/f3 /var/tmp/f4 /var/tmp/f5 #

Run the attached DTrace script. It will show vdev:offset:size returns from vdev_raidz_map_alloc().

  1. ./raidz.d

In another window:

  1. dd if=/usr/dict/words of=/rzpool/foo bs=128k count=1
    1+0 records in
    1+0 records out #

In the window running the raidz script, you'll see something like:

cols = 5, firstdatacol = 1

So the 128k block is striped across 4 of the "drives", with parity at 3:20e00:8000.

I used the first data column in the above output to get the bug.

On Solaris 11.1, this works fine. The output should be the first 32k of /rzpool/foo,
which should be identical to the first 32k of /usr/dict/words.

raidz.d (1.2 KB) Max Bruning, 2013-03-26 08:31 PM


#1 Updated by sham pavman about 5 years ago

  • % Done changed from 0 to 20
  • Assignee set to sham pavman

#2 Updated by sham pavman about 5 years ago

I'm not able to reproduce this issue.
I am running on OI-151a7

#3 Updated by Max Bruning about 5 years ago

Hi Sham Pavman,

Any chance you can try something newer than the ancient OI-151a7?
The bug is reproducible on both SmartOS and on Omnios


Also available in: Atom