My Oracle Support Banner

Servers Running Solaris 11.3 May Panic With "avl_find() succeeded inside avl_add()" When Growing A ZFS Swap Volume On A Nearly Full Pool (Doc ID 2335937.1)

Last updated on JUNE 13, 2018

Applies to:

Solaris Operating System - Version 11.3 to 11.3 [Release 11.0]
Information in this document applies to any platform.

Symptoms

Should the issue described in this document occur, the system will panic with a panic string and stack similar to the following as shown from SCAT (Solaris Crash Analysis Tool):

CAT(vmcore.5/11V)> panic

panic string:    avl_find() succeeded inside avl_add()
cmd: zfs set volsize=17G rpool/swap

void unix:panicsys+0x40((const char *)0x1011cf88, (va_list)0x2a10731a0a8, (struct regs *)0x2051a0a0, (int)1, 0x4480081605, , , , , , , , 0x1011cf88, 0x2a10731a0a8)
unix:vpanic_common+0x78(0x1011cf88, 0x2a10731a0a8, 0, 0x17eb08c00, 0x17eb08c00, 0xbf5846)
void unix:panic+0x1c((const char *)0x1011cf88, (void *)0x30400d7cee430, 0x2a10731a0d8, 0xfffffffffffffff8, 0, 0x304008e469a78, ...)
void unix:avl_add+0x34((avl_tree_t *)0x304008eb8eb98, (void *)0x30400d7cee430)
void zfs:zvol_map_add_extent+0x398((const blkptr_t *), (void *)0x2a10731b1b8)
int zfs:zvol_map_block+0x4c((spa_t *)0x304008bd04000, (zilog_t *)0, (const blkptr_t *)0x40009644180, (const zbookmark_t *)0x2a10731a438, (const dnode_phys_t *)0x40009496200, (void *)0x2a10731b1b8)
int zfs:traverse_visitbp+0x148((traverse_data_t *)0x2a10731afd8, (const dnode_phys_t *)0x40009496200, (const blkptr_t *)0x40009644180, (const zbookmark_t *)0x2a10731a438)
int zfs:traverse_visitbp+0x24c((traverse_data_t *)0x2a10731afd8, (const dnode_phys_t *)0x40009496200, (const blkptr_t *)0x4000949f000, (const zbookmark_t *)0x2a10731a538)
int zfs:traverse_visitbp+0x24c((traverse_data_t *)0x2a10731afd8, (const dnode_phys_t *)0x40009496200, (const blkptr_t *)0x40009496240, (const zbookmark_t *)0x2a10731a610)
int zfs:traverse_dnode+0xd0((traverse_data_t *)0x2a10731afd8, (const dnode_phys_t *)0x40009496200, (uint64_t)0x75, (uint64_t)1)
int zfs:traverse_visitbp+0x330((traverse_data_t *)0x2a10731afd8, (const dnode_phys_t *)0xffe0011bdfbef000, (const blkptr_t *)0x40009412000, (const zbookmark_t *)0x2a10731a808)
int zfs:traverse_visitbp+0x24c((traverse_data_t *)0x2a10731afd8, (const dnode_phys_t *)0xffe0011bdfbef000, (const blkptr_t *)0x40009462000, (const zbookmark_t *)0x2a10731a908)
int zfs:traverse_visitbp+0x24c((traverse_data_t *)0x2a10731afd8, (const dnode_phys_t *)0xffe0011bdfbef000, (const blkptr_t *)0x4000943a000, (const zbookmark_t *)0x2a10731aa08)
int zfs:traverse_visitbp+0x24c((traverse_data_t *)0x2a10731afd8, (const dnode_phys_t *)0xffe0011bdfbef000, (const blkptr_t *)0x4000941a000, (const zbookmark_t *)0x2a10731ab08)
int zfs:traverse_visitbp+0x24c((traverse_data_t *)0x2a10731afd8, (const dnode_phys_t *)0xffe0011bdfbef000, (const blkptr_t *)0x40009442000, (const zbookmark_t *)0x2a10731ac08)
int zfs:traverse_visitbp+0x24c((traverse_data_t *)0x2a10731afd8, (const dnode_phys_t *)0xffe0011bdfbef000, (const blkptr_t *)0x4000940e000, (const zbookmark_t *)0x2a10731ad08)
int zfs:traverse_visitbp+0x24c((traverse_data_t *)0x2a10731afd8, (const dnode_phys_t *)0xffe0011bdfbef000, (const blkptr_t *)0xffe0011bdfbef040, (const zbookmark_t *)0x2a10731ade0)
int zfs:traverse_dnode+0xd0((traverse_data_t *)0x2a10731afd8, (const dnode_phys_t *)0xffe0011bdfbef000, (uint64_t)0x75, (uint64_t)0)
int zfs:traverse_visitbp+0x3e8((traverse_data_t *)0x2a10731afd8, (const dnode_phys_t *)0, (const blkptr_t *)0xffe00104410e1480, (const zbookmark_t *)0x2a10731afb0)
int zfs:traverse_impl+0x18c((spa_t *)0x304008bd04000, (dsl_dataset_t *)0x304008bfdca00, (blkptr_t *)0xffe00104410e1480, (uint64_t)0, (int)5, (blkptr_cb_t *), (void *))
int zfs:traverse_dataset+0x28((dsl_dataset_t *)0x304008bfdca00, (uint64_t)0, (int)5, (blkptr_cb_t *)0x120c2a74, (void *)0x2a10731b1b8)
int zfs:zvol_get_lbas+0xdc((zvol_state_t *)0x304008eb8e6c0, (boolean_t), (uint64_t *)0x2a10731b398)
int zfs:zvol_preallocate_common+0x178((zvol_state_t *)0x304008eb8e6c0, (boolean_t)1, (uint64_t *)0x2a10731b398)
int zfs:zvol_resize_preallocate+0x58((zvol_state_t *)0x304008eb8e6c0, (objset_t *)0x304008e1b4300, (uint64_t)0x400000000)
int zfs:zvol_set_volsize+0x168((const char *)0x30400c7e2e000, (uint64_t)0x440000000)
int zfs:zfs_zprop_set_special+0x2f8((const char *)0x30400c7e2e000, (zprop_source_t)8, (nvpair_t *)0x30400d7b69990, (zprop_setflags_t)0)
int zfs:zfs_zprop_set_nvlist_impl+0x140((const char *), (zprop_source_t), (nvlist_t *), (nvlist_t *), (nvlist_t **), (const zprop_setflags_t))
zfs:zfs_zprop_set_nvlist((const char *)0x30400c7e2e000, (zprop_source_t)8, (nvlist_t *), (nvlist_t **)0x2a10731b798, (const zprop_setflags_t)0) - frame recycled
int zfs:zfs_ioc_set_prop+0x1a8((zfs_cmd_t *)0x30400c7e2e000)
int zfs:zfsdev_ioctl+0x27c((dev_t), (int), (intptr_t)0xf298ec68?, (int), (cred_t *)0x30400d35df4e8, (int *))
specfs:spec_ioctl((struct vnode *)0x304008e7e7a80, (int)0x5a16, (intptr_t)0xf298ec68, (int)0x100003, (struct cred *)0x30400d35df4e8, (int *)0x2a10731ba8c, (caller_context_t *)0) - frame recycled
int genunix:fop_ioctl+0xd0((vnode_t *)0x304008e7e7a80, (int)0x5a16, (intptr_t)0xf298ec68, (int)0x100003, (cred_t *), (int *)0x2a10731ba8c, (caller_context_t *)0)
int genunix:ioctl+0x16c((int), (int), (intptr_t))
unix:_syscall_no_proc_exit32+0x78()

 

 

Changes

The issue occurs when trying to grow an existing ZFS Volume that is being used for swap on a zpool that is almost full.  From SCAT (Solaris Crash Analysis Tool), the USED space can be seen with the 'zfs' command:

CAT(vmcore.5/11V)> zfs
spa "rpool" @ 0x304008bd04000 (ACTIVE) 93% used (163G/174G)

 

Cause

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


In this Document
Symptoms
Changes
Cause
Solution
References

My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.