Project

General

Profile

Actions

Bug #3659

open

zdb -R causes assertion failure for raidz vdev

Added by Max Bruning over 8 years ago. Updated over 8 years ago.

Status:
New
Priority:
Normal
Assignee:
Category:
zfs - Zettabyte File System
Start date:
2013-03-26
Due date:
% Done:

20%

Estimated time:
Difficulty:
Medium
Tags:
needs-triage
Gerrit CR:

Description

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
3:20e00:8000
4:20e00:8000
0:21000:8000
1:21000:8000
2:21000:8000

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.


Files

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

Also available in: Atom PDF