svn commit: r196716 - user/kmacy/head_zfs_merge/sys/cddl/contrib/opensolaris/uts/common/fs/zfs

Kip Macy kmacy at FreeBSD.org
Mon Aug 31 21:07:05 UTC 2009


Author: kmacy
Date: Mon Aug 31 21:07:05 2009
New Revision: 196716
URL: http://svn.freebsd.org/changeset/base/196716

Log:
  rlock dnode where it is only read

Modified:
  user/kmacy/head_zfs_merge/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c

Modified: user/kmacy/head_zfs_merge/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c
==============================================================================
--- user/kmacy/head_zfs_merge/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c	Mon Aug 31 21:04:33 2009	(r196715)
+++ user/kmacy/head_zfs_merge/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c	Mon Aug 31 21:07:05 2009	(r196716)
@@ -621,16 +621,16 @@ dnode_hold_impl(objset_impl_t *os, uint6
 		}
 	}
 
-	mutex_enter(&dn->dn_mtx);
+	rw_enter(&dn->dn_mtx, RW_READER);
 	type = dn->dn_type;
 	if (dn->dn_free_txg ||
 	    ((flag & DNODE_MUST_BE_ALLOCATED) && type == DMU_OT_NONE) ||
 	    ((flag & DNODE_MUST_BE_FREE) && type != DMU_OT_NONE)) {
-		mutex_exit(&dn->dn_mtx);
+		rw_exit(&dn->dn_mtx);
 		dbuf_rele(db, FTAG);
 		return (type == DMU_OT_NONE ? ENOENT : EEXIST);
 	}
-	mutex_exit(&dn->dn_mtx);
+	rw_exit(&dn->dn_mtx);
 
 	if (refcount_add(&dn->dn_holds, tag) == 1)
 		dbuf_add_ref(db, dn);


More information about the svn-src-user mailing list