ZFS RAID-Z panic on vdev failure + subsequent panics and hangs

Boris Kochergin spawk at acm.poly.edu
Fri Aug 7 19:35:11 UTC 2009


Pawel Jakub Dawidek wrote:
> On Fri, Aug 07, 2009 at 09:45:38AM -0400, Boris Kochergin wrote:
>   
>> Maybe my kgdb chops aren't up to par, but I can't seem to see what 
>> ab_prev points to:
>>
>> (kgdb) up
>> #12 0xffffffff8103a9e7 in arc_evict (state=Variable "state" is not 
>> available.
>> ) at 
>> /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c:1489
>> 1489                    if (recycle && ab->b_size != bytes &&
>> Current language:  auto; currently c
>> (kgdb) list
>> 1484                        LBOLT - ab->b_arc_access < 
>> arc_min_prefetch_lifespan)) {
>> 1485                            skipped++;
>> 1486                            continue;
>> 1487                    }
>> 1488                    /* "lookahead" for better eviction candidate */
>> 1489                    if (recycle && ab->b_size != bytes &&
>> 1490                        ab_prev && ab_prev->b_size == bytes)
>> 1491                            continue;
>> 1492                    hash_lock = HDR_LOCK(ab);
>> 1493                    have_lock = MUTEX_HELD(hash_lock);
>> (kgdb) print ab
>> $13 = (arc_buf_hdr_t *) 0xffffff0003ebc410
>> (kgdb) print ab->b_size
>> $14 = 1
>> (kgdb) print bytes
>> $15 = 16384
>> (kgdb) print ab_prev
>> No symbol "ab_prev" in current context.
>>     
>
> Yeah, that's strange indeed. Could you try:
>
> 	print ab->b_arc_node.list_prev
> 	print ab->b_arc_node.list_next
>
>   
(kgdb) print ab->b_arc_node.list_prev
$1 = (struct list_node *) 0x1
(kgdb) print ab->b_arc_node.list_next
$2 = (struct list_node *) 0xffffffff811064f0

-Boris


More information about the freebsd-fs mailing list