--- a/usr/src/uts/common/fs/zfs/sys/zfs_znode.h Thu Aug 02 19:52:58 2007 -0700
+++ b/usr/src/uts/common/fs/zfs/sys/zfs_znode.h Thu Aug 02 21:23:46 2007 -0700
@@ -192,13 +192,15 @@
*/
#define ZFS_ENTER(zfsvfs) \
{ \
- atomic_add_32(&(zfsvfs)->z_op_cnt, 1); \
- if ((zfsvfs)->z_unmounted1) { \
+ if (rw_tryenter(&(zfsvfs)->z_unmount_lock, RW_READER) == 0) \
+ return (EIO); \
+ if ((zfsvfs)->z_unmounted) { \
ZFS_EXIT(zfsvfs); \
return (EIO); \
} \
}
-#define ZFS_EXIT(zfsvfs) atomic_add_32(&(zfsvfs)->z_op_cnt, -1)
+
+#define ZFS_EXIT(zfsvfs) rw_exit(&(zfsvfs)->z_unmount_lock)
/*
* Macros for dealing with dmu_buf_hold