svn commit: r195515 - in head/cddl/contrib/opensolaris: head lib/libzpool/common lib/libzpool/common/sys

Pawel Jakub Dawidek pjd at FreeBSD.org
Thu Jul 9 20:22:06 UTC 2009


Author: pjd
Date: Thu Jul  9 20:22:05 2009
New Revision: 195515
URL: http://svn.freebsd.org/changeset/base/195515

Log:
  The mutex_owned() macro should operate on kmutex_t and not on mutex_t.
  This fixes 'zdb <poolname>' crash.
  
  Reported by:	avg
  Approved by:	re (kib)

Modified:
  head/cddl/contrib/opensolaris/head/thread.h
  head/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c
  head/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h

Modified: head/cddl/contrib/opensolaris/head/thread.h
==============================================================================
--- head/cddl/contrib/opensolaris/head/thread.h	Thu Jul  9 20:16:01 2009	(r195514)
+++ head/cddl/contrib/opensolaris/head/thread.h	Thu Jul  9 20:22:05 2009	(r195515)
@@ -53,7 +53,6 @@ typedef pthread_rwlock_t rwlock_t;
 #define	mutex_lock(l)		pthread_mutex_lock(l)
 #define	mutex_trylock(l)	pthread_mutex_trylock(l)
 #define	mutex_unlock(l)		pthread_mutex_unlock(l)
-#define	mutex_owned(l)		pthread_mutex_isowned_np(l)
 #define	rwlock_init(l,f,a)	pthread_rwlock_init(l,NULL)
 #define	rwlock_destroy(l)	pthread_rwlock_destroy(l)
 #define	rw_rdlock(l)		pthread_rwlock_rdlock(l)

Modified: head/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c
==============================================================================
--- head/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c	Thu Jul  9 20:16:01 2009	(r195514)
+++ head/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c	Thu Jul  9 20:22:05 2009	(r195515)
@@ -115,6 +115,14 @@ zmutex_destroy(kmutex_t *mp)
 	mp->initialized = B_FALSE;
 }
 
+int
+zmutex_owned(kmutex_t *mp)
+{
+	ASSERT(mp->initialized == B_TRUE);
+
+	return (mp->m_owner == curthread);
+}
+
 void
 mutex_enter(kmutex_t *mp)
 {

Modified: head/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h
==============================================================================
--- head/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h	Thu Jul  9 20:16:01 2009	(r195514)
+++ head/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h	Thu Jul  9 20:22:05 2009	(r195515)
@@ -237,9 +237,11 @@ typedef struct kmutex {
 
 #define	mutex_init(mp, b, c, d)		zmutex_init((kmutex_t *)(mp))
 #define	mutex_destroy(mp)		zmutex_destroy((kmutex_t *)(mp))
+#define	mutex_owned(mp)			zmutex_owned((kmutex_t *)(mp))
 
 extern void zmutex_init(kmutex_t *mp);
 extern void zmutex_destroy(kmutex_t *mp);
+extern int zmutex_owned(kmutex_t *mp);
 extern void mutex_enter(kmutex_t *mp);
 extern void mutex_exit(kmutex_t *mp);
 extern int mutex_tryenter(kmutex_t *mp);


More information about the svn-src-head mailing list