On Oct,Thursday 29 2009, at 8:15 PM, David Laight wrote:
On Wed, Oct 28, 2009 at 11:44:51PM +0000, Adam Hamsik wrote:
Module Name: src
Committed By: haad
Date: Wed Oct 28 23:44:51 UTC 2009
Modified Files:
src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_vnops.c
zfs_znode.c
Log Message:
Add workaround about zfs vnode reclaiming deadlock by checking if
we don't
ehld ZFS_MUTEX_OBJ already. If we can lock OBJ_MUTEX deffer
execution of
zfs_zinactive to taskq. Code was inspired by FreeBSD
zfs_freebsd_reclaim.
This doesn't sound right at all ...
If the 'If we can lock OBJ_MUTEX' test is a try_mutex_enter() then
it may fail because another lwp owns it ...
I hope it is only the checkin comment that is inverted!
There are 3 option which can happen
1) Our lwp already holds mutex
2) mutex is not held at all
3) Another LWP holds it
In case 1 we can call reclaim vnode, in case 2 we lock it with
try_mutex_enter and reclaim it and in case 3 we use taskq for
reclaiming of vnode.