Project

General

Profile

Bug #3517

importing pool with autoreplace=on and "hole" vdevs crashes syseventd

Added by Yuri Pankov over 6 years ago. Updated over 6 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
zfs - Zettabyte File System
Start date:
2013-02-01
Due date:
% Done:

50%

Estimated time:
Difficulty:
Bite-size
Tags:

Description

spa_check_removed() uses vdev_is_dead(), which does a bit of mis-service (for this case) by returning true for the "hole" vdevs, effectively passing vdev_guid == 0 in ESC_ZFS_VDEV_CHECK event contents and crashing syseventd.

This was also reported as http://openindiana.org/pipermail/openindiana-discuss/2012-July/008704.html.

Steps to reproduce (adding/removing mirrored log in the middle of pool config to create "hole" vdev):

zpool create -o autoreplace=on evtest c0t0d0 log mirror c0t1d0 c0t2d0
zpool add evtest c0t3d0
zpool remove evtest mirror-1

zpool export evtest
zpool import evtest


Related issues

Has duplicate illumos gate - Bug #3375: /usr/lib/sysevent/syseventd dumps coreClosed2012-11-19

Actions

History

#1

Updated by Yuri Pankov over 6 years ago

For the sake of completeness:

phoenix:root:~# truncate -s 128m p1 l1 l2 p2
phoenix:root:~# zpool create -o autoreplace=on evtest `pwd`/p1 log mirror `pwd`/l1 `pwd`/l2
phoenix:root:~# zpool add evtest `pwd`/p2
phoenix:root:~# zpool remove evtest mirror-1
phoenix:root:~# zpool export evtest
phoenix:root:~# zpool import -d . evtest
phoenix:root:~# file /core
/core:          ELF 32-bit LSB core file 80386 Version 1, from 'syseventd'
phoenix:root:~# mdb /core
Loading modules: [ libc.so.1 libsysevent.so.1 libnvpair.so.1 libumem.so.1 libtopo.so.1 libavl.so.1 libcmdutils.so.1 libuutil.so.1 ld.so.1 ]
> $C
fda2fe08 libc_hwcap1.so.1`strlen+0x30(8091448, 80a16f0, fda2ff00, fda2fe30)
fda2fe58 zfs_mod.so`zfs_iter_vdev+0x101(8091448, 8091350, fda2ff00, fdfa21ce)
fda2fea8 zfs_mod.so`zfs_iter_pool+0x86(8091448, fda2ff00, fda2fecc, fdedbd16)
fda2fee8 libzfs.so.1`zpool_iter+0x9c(808f6e0, fdfa21c0, fda2ff00, fdfa26a8)
fda2ff38 zfs_mod.so`zfs_deliver_check+0xb3(8068ae8, fda2ff5c, fda2ff88, fdfa2a3a)
fda2ff78 zfs_mod.so`zfs_deliver_event+0x9d(808f458, 0, 8069100, 805351b)
fda2ffc8 client_deliver_event_thr+0xf2(808c498, fef56000, fda2ffe8, feee334e)
fda2ffe8 libc_hwcap1.so.1`_thrp_setup+0x9b(fec96a40)
fda2fff8 libc_hwcap1.so.1`_lwp_start(fec96a40, 0, 0, 0, 0, 0)
> 8068ae8::nvlist
pool_name='evtest'
pool_guid=29983d797963beb6
vdev_guid=0000000000000000

#2

Updated by Christopher Siden over 6 years ago

  • Status changed from In Progress to Closed
commit efb4a87
Author: Yuri Pankov <yuri.pankov@nexenta.com>
Date:   Wed Mar 6 17:57:09 2013

    3517 importing pool with autoreplace=on and "hole" vdevs crashes syseventd
    Reviewed by: Albert Lee <trisk@nexenta.com>
    Reviewed by: Jeffry Molanus <jeffry.molanus@nexenta.com>
    Reviewed by: George Wilson <gwilson@zfsmail.com>
    Approved by: Christopher Siden <christopher.siden@delphix.com>

Also available in: Atom PDF