# ./zpool.sh create -f BOOM pool-image.bin
[zfs] Yay, got ioctl 4
[zfs] ioctl done 0
[zfs] Yay, got ioctl 5
In stats
spa_get_stats: 2
spa_get_stats 2
Out stats
[zfs] ioctl done 2
[zfs] Yay, got ioctl 0
(gdb) where
#0 0xffffff7f80f2b8b5 in vdev_add_child (pvd=0xffffff8009851000, cvd=0xffffff8009851800) at vdev.c:208
#1 0xffffff7f80f2cdfe in vdev_alloc (spa=0xffffff8006d9f000, vdp=0xffffff804621b940, nv=0xffffff8007da9e38, parent=0xffffff8009851000, id=0, alloctype=1) at vdev.c:564
#2 0xffffff7f80f0554e in spa_config_parse (spa=0xffffff8006d9f000, vdp=0xffffff804621b940, nv=0xffffff8007da9e38, parent=0xffffff8009851000, id=0, atype=1) at spa.c:1084
#3 0xffffff7f80f05633 in spa_config_parse (spa=0xffffff8006d9f000, vdp=0xffffff804621bba0, nv=0xffffff8007db7080, parent=0x0, id=0, atype=1) at spa.c:1104
#4 0xffffff7f80f0e17f in spa_create (pool=0xffffff800683d000 "BOOM", nvroot=0xffffff8007db7080, props=0xffffff80066cc520, history_str=0x0, zplprops=0xffffff8007dba8e0) at spa.c:3362
(gdb)
#0 0xffffff7f80f2b8b5 in vdev_add_child (pvd=0xffffff8009851000, cvd=0xffffff8009851800) at vdev.c:208
208 ASSERT(cvd->vdev_top->vdev_parent->vdev_parent == NULL);
(gdb) p *cvd
$10 = {
vdev_id = 0,
vdev_guid = 4055797430771032621,
vdev_guid_sum = 4055797430771032621,
vdev_orig_guid = 7236549231704963631,
vdev_asize = 3327997875516897839,
vdev_min_asize = 8030052479819475308,
vdev_max_asize = 140734804028527,
vdev_ashift = 140734787661824,
vdev_state = 1,
vdev_prevstate = 140734812175232,
vdev_ops = 0xffffff7f81045b40,
vdev_spa = 0xffffff8006d9f000,
vdev_tsd = 0x0,
vdev_name_vp = 0x0,
vdev_devid_vp = 0x0,
vdev_top = 0x11000000000000,
vdev_parent = 0xffffff8009851000,
vdev_child = 0xffffff8006d9f644,
vdev_children = 17179869186,
vdev_dtl = {{
sm_root = {
avl_root = 0x0,
avl_compar = 0xffffff7f80f24aa0 <space_map_seg_compare>,
avl_offset = 0,
avl_numnodes = 0,
avl_size = 64
},
sm_space = 0,
sm_start = 0,
sm_size = 18446744073709551615,
sm_shift = 0 '\0',
sm_pad = "\000\000",
sm_loaded = 0 '\0',
sm_loading = 0 '\0',
sm_load_cv = {
cv_waiters = 0
},
sm_ops = 0x0,
sm_pp_root = 0x0,
sm_ppd = 0x0,
sm_lock = 0xffffff8009851ee0
}, {
sm_root = {
avl_root = 0x0,
avl_compar = 0xffffff7f80f24aa0 <space_map_seg_compare>,
avl_offset = 0,
avl_numnodes = 0,
avl_size = 64
},
sm_space = 0,
sm_start = 0,
sm_size = 18446744073709551615,
sm_shift = 0 '\0',
sm_pad = "\000\000",
sm_loaded = 0 '\0',
sm_loading = 0 '\0',
sm_load_cv = {
cv_waiters = 0
},
sm_ops = 0x0,
sm_pp_root = 0x0,
sm_ppd = 0x0,
sm_lock = 0xffffff8009851ee0
}, {
sm_root = {
avl_root = 0x0,
avl_compar = 0xffffff7f80f24aa0 <space_map_seg_compare>,
avl_offset = 0,
avl_numnodes = 0,
avl_size = 64
},
sm_space = 0,
sm_start = 0,
sm_size = 18446744073709551615,
sm_shift = 0 '\0',
sm_pad = "\000\000",
sm_loaded = 0 '\0',
sm_loading = 0 '\0',
sm_load_cv = {
cv_waiters = 0
},
sm_ops = 0x0,
sm_pp_root = 0x0,
sm_ppd = 0x0,
sm_lock = 0xffffff8009851ee0
}, {
sm_root = {
avl_root = 0x0,
avl_compar = 0xffffff7f80f24aa0 <space_map_seg_compare>,
avl_offset = 0,
avl_numnodes = 0,
avl_size = 64
},
sm_space = 0,
sm_start = 0,
sm_size = 18446744073709551615,
sm_shift = 0 '\0',
sm_pad = "\000\000",
sm_loaded = 0 '\0',
sm_loading = 0 '\0',
sm_load_cv = {
cv_waiters = 0
},
sm_ops = 0x0,
sm_pp_root = 0x0,
sm_ppd = 0x0,
sm_lock = 0xffffff8009851ee0
}},
vdev_stat = {
vs_timestamp = 14781527861,
vs_state = 0,
vs_aux = 0,
vs_alloc = 0,
vs_space = 0,
vs_dspace = 0,
vs_rsize = 0,
vs_esize = 0,
vs_ops = {0, 0, 0, 0, 0, 0},
vs_bytes = {0, 0, 0, 0, 0, 0},
vs_read_errors = 0,
vs_write_errors = 0,
vs_checksum_errors = 0,
vs_self_healed = 0,
vs_scan_removing = 0,
vs_scan_processed = 0
},
vdev_expanding = 0,
vdev_reopening = 0,
vdev_open_error = 0,
vdev_open_thread = 0x0,
vdev_crtxg = 0,
vdev_ms_array = 0,
vdev_ms_shift = 0,
vdev_ms_count = 0,
vdev_mg = 0xffffff8007cc9600,
vdev_ms = 0x0,
vdev_pending_fastwrite = 0,
vdev_ms_list = {
tl_lock = {
m_owner = 0x0,
initialized = 0,
m_lock = {{
opaque = {0, 18446744069414584320, 0}
}}
},
tl_offset = 1368,
tl_head = {0x0, 0x0, 0x0, 0x0}
},
vdev_dtl_list = {
tl_lock = {
m_owner = 0x0,
initialized = 0,
m_lock = {{
opaque = {0, 18446744069414584320, 0}
}}
},
tl_offset = 1192,
tl_head = {0x0, 0x0, 0x0, 0x0}
},
vdev_txg_node = {
tn_next = {0x0, 0x0, 0x0, 0x0},
tn_member = "\000\000\000"
},
vdev_remove_wanted = 0,
vdev_probe_wanted = 0,
vdev_removing = 0,
vdev_config_dirty_node = {
list_next = 0x0,
list_prev = 0x0
},
vdev_state_dirty_node = {
list_next = 0x0,
list_prev = 0x0
},
vdev_deflate_ratio = 0,
vdev_islog = 0,
vdev_ishole = 0,
vdev_psize = 0,
vdev_dtl_smo = {
smo_object = 0,
smo_objsize = 0,
smo_alloc = 0
},
vdev_dtl_node = {
tn_next = {0x0, 0x0, 0x0, 0x0},
tn_member = "\000\000\000"
},
vdev_wholedisk = 18446744073709551615,
vdev_offline = 0,
vdev_faulted = 0,
vdev_degraded = 0,
vdev_removed = 0,
vdev_resilvering = 0,
vdev_nparity = 0,
vdev_path = 0xffffff8007dba680 "/Users/lundman/pool-image.bin",
vdev_devid = 0x0,
vdev_physpath = 0x0,
vdev_fru = 0x0,
vdev_not_present = 0,
vdev_unspare = 0,
vdev_last_try = 0,
vdev_nowritecache = 0,
vdev_checkremove = 0,
vdev_forcefault = 0,
vdev_splitting = 0,
vdev_delayed_close = 0,
vdev_tmpoffline = 0 '\0',
vdev_detached = 0 '\0',
vdev_cant_read = 0 '\0',
vdev_cant_write = 0 '\0',
vdev_isspare = 0,
vdev_isl2cache = 0,
vdev_queue = {
vq_deadline_tree = {
avl_root = 0x0,
avl_compar = 0xffffff7f80f407b0 <vdev_queue_deadline_compare>,
avl_offset = 568,
avl_numnodes = 0,
avl_size = 944
},
vq_read_tree = {
avl_root = 0x0,
avl_compar = 0xffffff7f80f408b0 <vdev_queue_offset_compare>,
avl_offset = 544,
avl_numnodes = 0,
avl_size = 944
},
vq_write_tree = {
avl_root = 0x0,
avl_compar = 0xffffff7f80f408b0 <vdev_queue_offset_compare>,
avl_offset = 544,
avl_numnodes = 0,
avl_size = 944
},
vq_pending_tree = {
avl_root = 0x0,
avl_compar = 0xffffff7f80f408b0 <vdev_queue_offset_compare>,
avl_offset = 544,
avl_numnodes = 0,
avl_size = 944
},
vq_io_list = {
list_size = 131088,
list_offset = 131072,
list_head = {
list_next = 0xffffff80367ae000,
list_prev = 0xffffff80368d7000
}
},
vq_lock = {
m_owner = 0x0,
initialized = -559038737,
m_lock = {{
opaque = {0, 18446744069414584320, 16045690984833335023}
}}
}
},
vdev_cache = {
vc_offset_tree = {
avl_root = 0x0,
avl_compar = 0xffffff7f80f36da0 <vdev_cache_offset_compare>,
avl_offset = 24,
avl_numnodes = 0,
avl_size = 88
},
vc_lastused_tree = {
avl_root = 0x0,
avl_compar = 0xffffff7f80f36e20 <vdev_cache_lastused_compare>,
avl_offset = 48,
avl_numnodes = 0,
avl_size = 88
},
vc_lock = {
m_owner = 0x0,
initialized = -559038737,
m_lock = {{
opaque = {0, 18446744069414584320, 16045690984833335023}
}}
}
},
vdev_aux = 0xdeadbeefdeadbeef,
vdev_probe_zio = 0xdeadbeefdeadbeef,
vdev_label_aux = 3735928559,
vdev_dtl_lock = {
m_owner = 0x0,
initialized = -559038737,
m_lock = {{
opaque = {0, 18446744069414584320, 16045690984833335023}
}}
},
vdev_stat_lock = {
m_owner = 0x0,
initialized = -559038737,
m_lock = {{
opaque = {0, 18446744069414584320, 16045690984833335023}
}}
},
vdev_probe_lock = {
m_owner = 0x0,
initialized = -559038737,
m_lock = {{
opaque = {0, 18446744069414584320, 16045690984833335023}
}}
}
}
(gdb) p *pvd
$11 = {
vdev_id = 0,
vdev_guid = 6654298998853802424,
vdev_guid_sum = 6654298998853802424,
vdev_orig_guid = 0,
vdev_asize = 18446743524074649904,
vdev_min_asize = 0,
vdev_max_asize = 18446743524113570720,
vdev_ashift = 18446743524113571216,
vdev_state = 1,
vdev_prevstate = 18446743524075957279,
vdev_ops = 0xffffff7f81045e20,
vdev_spa = 0xffffff8006d9f000,
vdev_tsd = 0x686c536b444b2e62,
vdev_name_vp = 0x110000,
vdev_devid_vp = 0x11000000000000,
vdev_top = 0x11000000000000,
vdev_parent = 0x0,
vdev_child = 0xffffff8007db0610,
vdev_children = 1,
vdev_dtl = {{
sm_root = {
avl_root = 0x0,
avl_compar = 0xffffff7f80f24aa0 <space_map_seg_compare>,
avl_offset = 0,
avl_numnodes = 0,
avl_size = 64
},
sm_space = 0,
sm_start = 0,
sm_size = 18446744073709551615,
sm_shift = 0 '\0',
sm_pad = "\000\000",
sm_loaded = 0 '\0',
sm_loading = 0 '\0',
sm_load_cv = {
cv_waiters = 0
},
sm_ops = 0x0,
sm_pp_root = 0x0,
sm_ppd = 0x0,
sm_lock = 0xffffff80098516e0
}, {
sm_root = {
avl_root = 0x0,
avl_compar = 0xffffff7f80f24aa0 <space_map_seg_compare>,
avl_offset = 0,
avl_numnodes = 0,
avl_size = 64
},
sm_space = 0,
sm_start = 0,
sm_size = 18446744073709551615,
sm_shift = 0 '\0',
sm_pad = "\000\000",
sm_loaded = 0 '\0',
sm_loading = 0 '\0',
sm_load_cv = {
cv_waiters = 0
},
sm_ops = 0x0,
sm_pp_root = 0x0,
sm_ppd = 0x0,
sm_lock = 0xffffff80098516e0
}, {
sm_root = {
avl_root = 0x0,
avl_compar = 0xffffff7f80f24aa0 <space_map_seg_compare>,
avl_offset = 0,
avl_numnodes = 0,
avl_size = 64
},
sm_space = 0,
sm_start = 0,
sm_size = 18446744073709551615,
sm_shift = 0 '\0',
sm_pad = "\000\000",
sm_loaded = 0 '\0',
sm_loading = 0 '\0',
sm_load_cv = {
cv_waiters = 0
},
sm_ops = 0x0,
sm_pp_root = 0x0,
sm_ppd = 0x0,
sm_lock = 0xffffff80098516e0
}, {
sm_root = {
avl_root = 0x0,
avl_compar = 0xffffff7f80f24aa0 <space_map_seg_compare>,
avl_offset = 0,
avl_numnodes = 0,
avl_size = 64
},
sm_space = 0,
sm_start = 0,
sm_size = 18446744073709551615,
sm_shift = 0 '\0',
sm_pad = "\000\000",
sm_loaded = 0 '\0',
sm_loading = 0 '\0',
sm_load_cv = {
cv_waiters = 0
},
sm_ops = 0x0,
sm_pp_root = 0x0,
sm_ppd = 0x0,
sm_lock = 0xffffff80098516e0
}},
vdev_stat = {
vs_timestamp = 14781017576,
vs_state = 0,
vs_aux = 1114112,
vs_alloc = 4785074604081152,
vs_space = 0,
vs_dspace = 1114112,
vs_rsize = 4785074605195264,
vs_esize = 0,
vs_ops = {1114112, 4785074604081152, 0, 1114112, 4785074605195264, 0},
vs_bytes = {1114112, 4785074604081152, 0, 1114112, 1, 2315061383420444675},
vs_read_errors = 18446743524089413808,
vs_write_errors = 18446743524113453472,
vs_checksum_errors = 0,
vs_self_healed = 1024,
vs_scan_removing = 18446743524075956240,
vs_scan_processed = 16346022891462066184
},
vdev_expanding = 0,
vdev_reopening = 0,
vdev_open_error = 256,
vdev_open_thread = 0x0,
vdev_crtxg = 1114112,
vdev_ms_array = 4785074605195264,
vdev_ms_shift = 0,
vdev_ms_count = 1114112,
vdev_mg = 0x11000000000000,
vdev_ms = 0x0,
vdev_pending_fastwrite = 1114112,
vdev_ms_list = {
tl_lock = {
m_owner = 0x0,
initialized = 0,
m_lock = {{
opaque = {0, 18446744069414584320, 34359738368}
}}
},
tl_offset = 1368,
tl_head = {0x0, 0x0, 0x0, 0x0}
},
vdev_dtl_list = {
tl_lock = {
m_owner = 0x0,
initialized = 0,
m_lock = {{
opaque = {0, 18446744069414584320, 0}
}}
},
tl_offset = 1192,
tl_head = {0x0, 0x0, 0x0, 0x0}
},
vdev_txg_node = {
tn_next = {0x0, 0x0, 0x0, 0x2000000000000},
tn_member = "๏ฟฝ\000\000"
},
vdev_remove_wanted = -1840513017,
vdev_probe_wanted = -1840460457,
vdev_removing = 10542026603767844183,
vdev_config_dirty_node = {
list_next = 0x0,
list_prev = 0x0
},
vdev_state_dirty_node = {
list_next = 0x0,
list_prev = 0x0
},
vdev_deflate_ratio = 0,
vdev_islog = 0,
vdev_ishole = 0,
vdev_psize = 0,
vdev_dtl_smo = {
smo_object = 0,
smo_objsize = 0,
smo_alloc = 0
},
vdev_dtl_node = {
tn_next = {0x0, 0x0, 0x0, 0x0},
tn_member = "\000\000\000"
},
vdev_wholedisk = 18446744073709551615,
vdev_offline = 0,
vdev_faulted = 0,
vdev_degraded = 0,
vdev_removed = 0,
vdev_resilvering = 0,
vdev_nparity = 0,
vdev_path = 0x0,
vdev_devid = 0x0,
vdev_physpath = 0x0,
vdev_fru = 0x0,
vdev_not_present = 0,
vdev_unspare = 0,
vdev_last_try = 0,
vdev_nowritecache = 0,
vdev_checkremove = 0,
vdev_forcefault = 0,
vdev_splitting = 0,
vdev_delayed_close = 0,
vdev_tmpoffline = 0 '\0',
vdev_detached = 0 '\0',
vdev_cant_read = 0 '\0',
vdev_cant_write = 0 '\0',
vdev_isspare = 0,
vdev_isl2cache = 0,
vdev_queue = {
vq_deadline_tree = {
avl_root = 0x0,
avl_compar = 0xffffff7f80f407b0 <vdev_queue_deadline_compare>,
avl_offset = 568,
avl_numnodes = 0,
avl_size = 944
},
vq_read_tree = {
avl_root = 0x0,
avl_compar = 0xffffff7f80f408b0 <vdev_queue_offset_compare>,
avl_offset = 544,
avl_numnodes = 0,
avl_size = 944
},
vq_write_tree = {
avl_root = 0x0,
avl_compar = 0xffffff7f80f408b0 <vdev_queue_offset_compare>,
avl_offset = 544,
avl_numnodes = 0,
avl_size = 944
},
vq_pending_tree = {
avl_root = 0x0,
avl_compar = 0xffffff7f80f408b0 <vdev_queue_offset_compare>,
avl_offset = 544,
avl_numnodes = 0,
avl_size = 944
},
vq_io_list = {
list_size = 131088,
list_offset = 131072,
list_head = {
list_next = 0xffffff8036664000,
list_prev = 0xffffff803678d000
}
},
vq_lock = {
m_owner = 0x0,
initialized = -559038737,
m_lock = {{
opaque = {0, 18446744069414584320, 16045690984833335023}
}}
}
},
vdev_cache = {
vc_offset_tree = {
avl_root = 0x0,
avl_compar = 0xffffff7f80f36da0 <vdev_cache_offset_compare>,
avl_offset = 24,
avl_numnodes = 0,
avl_size = 88
},
vc_lastused_tree = {
avl_root = 0x0,
avl_compar = 0xffffff7f80f36e20 <vdev_cache_lastused_compare>,
avl_offset = 48,
avl_numnodes = 0,
avl_size = 88
},
vc_lock = {
m_owner = 0x0,
initialized = -559038737,
m_lock = {{
opaque = {0, 18446744069414584320, 16045690984833335023}
}}
}
},
vdev_aux = 0xdeadbeefdeadbeef,
vdev_probe_zio = 0xdeadbeefdeadbeef,
vdev_label_aux = 3735928559,
vdev_dtl_lock = {
m_owner = 0x0,
initialized = -559038737,
m_lock = {{
opaque = {0, 18446744069414584320, 16045690984833335023}
}}
},
vdev_stat_lock = {
m_owner = 0x0,
initialized = -559038737,
m_lock = {{
opaque = {0, 18446744069414584320, 16045690984833335023}
}}
},
vdev_probe_lock = {
m_owner = 0x0,
initialized = -559038737,
m_lock = {{
opaque = {0, 18446744069414584320, 16045690984833335023}
}}
}
}
(gdb) p cvd->vdev_top
$12 = (vdev_t *) 0x11000000000000
(gdb) p pvd->vdev_top
$13 = (vdev_t *) 0x11000000000000
parent top should probably be NULL. Instead is an invalid pointer.