panic: _sx_xlock_hard: recursed on non-recursive sx
zfsvfs->z_hold_mtx[i]
@ ...cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c:1407
Andriy Gapon
avg at FreeBSD.org
Wed Oct 3 08:42:07 UTC 2012
on 30/09/2012 15:24 Konstantin Belousov said the following:
> The postponing of the reclaim when vnode reserve goes low to the vnlru
> process does not solve anything, since you only change the recursion into
> the deadlock.
>
> I discussed an approach for this issue with avg. Basic idea is presented in
> the untested patch below. You can specify that some count of the free
> vnodes must be present for some dynamic scope, started by
> getnewvnode_reserve() function. While staying inside the reserved pool,
> getnewvnode() calls would not recurse into vnlru(). The scope is finished
> with getnewvnode_drop_reserve().
>
> The getnewvnode_reserve() shall be called while no locks are held.
>
> What do you think ?
Here is a patch that makes use of the getnewvnode_reserve API in ZFS:
http://people.freebsd.org/~avg/zfs-getnewvnode.diff
--
Andriy Gapon
More information about the freebsd-fs
mailing list