Attempt to handle vnop_pageout clashes by creating a new thread (thus
dmu_tx is unique) and do all processing which uses upl and vnode, up
until the call to dmu_tx_commit (which blocks). Then release parent
waiting, which frees upl/vnode and resumes. dmu_tx_commit thread will
eventually complete, without referring to upl/vnode.
Store the last_unmount value has dataset property for Spotlight's ioctl.
* Call upl_commit on non-async events as well.
* fix parent release in one error case.
Wait for both all_znode and reclaim_znode lists to completely empty, then
ask reclaim thread to finish, before we obtain locks for unmounting, and
call release. In the hopes that dnode-ARC-sorry deadlock is due to
that some open nodes can't reclaim, as we are already locked for unmount.
Reclaim thread can only be stopped in zfsvfs_free, but we can still
wait for it in teardown
If pageout_thread waits for a lock, it does so holding the parent vnop_pageout
which in turn holds vnode_create(). This leads to deadlock.
However, it is possible ZFS_ENTER (which just exits without calling
upl_abort) may be the cause of the dnode-sorry bug.
Silence debug prints
Remove dead code
Commit 0fea07bb27822eb55cdb51bf515f819b124c162d accidentally also removed
the call to upl_commit, leading to leak and deadlock.
Again, remove debug prints
Add temporary fix to persistent Finder disk icons until Issue 116 is ready.