Actions
Bug #3517
closedimporting pool with autoreplace=on and "hole" vdevs crashes syseventd
Start date:
2013-02-01
Due date:
% Done:
50%
Estimated time:
Difficulty:
Bite-size
Tags:
Gerrit CR:
External Bug:
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
Updated by Yuri Pankov about 10 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
Updated by Christopher Siden almost 10 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>
Actions