Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 14 Dec 2007 00:43:15 GMT
From:      John Birrell <jb@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 130825 for review
Message-ID:  <200712140043.lBE0hF0q026772@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=130825

Change 130825 by jb@jb_freebsd1 on 2007/12/14 00:43:09

	MFC

Affected files ...

.. //depot/projects/dtrace7/src/compat/opensolaris/include/alloca.h#1 add
.. //depot/projects/dtrace7/src/compat/opensolaris/include/fcntl.h#1 add
.. //depot/projects/dtrace7/src/compat/opensolaris/include/stdio.h#1 add
.. //depot/projects/dtrace7/src/compat/opensolaris/include/stdlib.h#1 add
.. //depot/projects/dtrace7/src/compat/opensolaris/include/strings.h#1 add
.. //depot/projects/dtrace7/src/compat/opensolaris/include/unistd.h#1 add
.. //depot/projects/dtrace7/src/sys/compat/opensolaris/kern/opensolaris_vfs.c#2 edit
.. //depot/projects/dtrace7/src/sys/compat/opensolaris/rpc/xdr.h#2 edit
.. //depot/projects/dtrace7/src/sys/compat/opensolaris/sys/atomic.h#2 edit
.. //depot/projects/dtrace7/src/sys/compat/opensolaris/sys/kcondvar.h#2 edit
.. //depot/projects/dtrace7/src/sys/compat/opensolaris/sys/kmem.h#2 edit
.. //depot/projects/dtrace7/src/sys/compat/opensolaris/sys/mutex.h#2 edit
.. //depot/projects/dtrace7/src/sys/compat/opensolaris/sys/proc.h#2 edit
.. //depot/projects/dtrace7/src/sys/compat/opensolaris/sys/rwlock.h#2 edit
.. //depot/projects/dtrace7/src/sys/compat/opensolaris/sys/time.h#2 edit
.. //depot/projects/dtrace7/src/sys/compat/opensolaris/sys/types.h#2 edit

Differences ...

==== //depot/projects/dtrace7/src/sys/compat/opensolaris/kern/opensolaris_vfs.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/opensolaris/kern/opensolaris_vfs.c,v 1.6 2007/06/04 11:31:45 pjd Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/opensolaris/kern/opensolaris_vfs.c,v 1.7 2007/11/01 08:58:29 pjd Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -163,6 +163,7 @@
 {
 	struct mount *mp;
 	struct vfsconf *vfsp;
+	struct ucred *newcr, *oldcr;
 	int error;
 
 	/*
@@ -202,7 +203,9 @@
 
 	/*
 	 * Set the mount level flags.
+	 * crdup() can sleep, so do it before acquiring a mutex.
 	 */
+	newcr = crdup(kcred);
 	MNT_ILOCK(mp);
 	if (fsflags & MNT_RDONLY)
 		mp->mnt_flag |= MNT_RDONLY;
@@ -212,10 +215,11 @@
 	 * Unprivileged user can trigger mounting a snapshot, but we don't want
 	 * him to unmount it, so we switch to privileged credentials.
 	 */
-	crfree(mp->mnt_cred);
-	mp->mnt_cred = crdup(kcred);
+	oldcr = mp->mnt_cred;
+	mp->mnt_cred = newcr;
 	mp->mnt_stat.f_owner = mp->mnt_cred->cr_uid;
 	MNT_IUNLOCK(mp);
+	crfree(oldcr);
 	/*
 	 * Mount the filesystem.
 	 * XXX The final recipients of VFS_MOUNT just overwrite the ndp they

==== //depot/projects/dtrace7/src/sys/compat/opensolaris/rpc/xdr.h#2 (text+ko) ====

@@ -50,19 +50,6 @@
 #define xdr_control(a,b,c) xdrmem_control(a,b,c)
 
 /*
- * These are XDR control operators
- */
-
-#define	XDR_GET_BYTES_AVAIL 1
-
-struct xdr_bytesrec {
-	bool_t xc_is_last_record;
-	size_t xc_num_avail;
-};
-
-typedef struct xdr_bytesrec xdr_bytesrec;
-
-/*
  * These are the request arguments to XDR_CONTROL.
  *
  * XDR_PEEK - returns the contents of the next XDR unit on the XDR stream.

==== //depot/projects/dtrace7/src/sys/compat/opensolaris/sys/atomic.h#2 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/compat/opensolaris/sys/atomic.h,v 1.1 2007/06/08 12:35:46 pjd Exp $
+ * $FreeBSD: src/sys/compat/opensolaris/sys/atomic.h,v 1.2 2007/11/28 21:47:09 jb Exp $
  */
 
 #ifndef _OPENSOLARIS_SYS_ATOMIC_H_
@@ -106,7 +106,7 @@
 static __inline void *
 atomic_cas_ptr(volatile void *target, void *cmp,  void *newval)
 {
-	return ((void *)atomic_cas_64((uint64_t *)target, (uint64_t)cmp,
+	return ((void *)atomic_cas_64((volatile uint64_t *)target, (uint64_t)cmp,
 	    (uint64_t)newval));
 }
 #endif

==== //depot/projects/dtrace7/src/sys/compat/opensolaris/sys/kcondvar.h#2 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/compat/opensolaris/sys/kcondvar.h,v 1.1 2007/04/06 01:09:06 pjd Exp $
+ * $FreeBSD: src/sys/compat/opensolaris/sys/kcondvar.h,v 1.2 2007/11/05 18:40:55 pjd Exp $
  */
 
 #ifndef _OPENSOLARIS_SYS_CONDVAR_H_
@@ -45,8 +45,15 @@
 } kcv_type_t;
 
 #define	zfs_cv_init(cv, name, type, arg)	do {			\
+	const char *_name;						\
 	ASSERT((type) == CV_DEFAULT);					\
-	cv_init((cv), "zfs:" #cv);					\
+	for (_name = #cv; *_name != '\0'; _name++) {			\
+		if (*_name >= 'a' && *_name <= 'z')			\
+			break;						\
+	}								\
+	if (*_name == '\0')						\
+		_name = #cv;						\
+	cv_init((cv), _name);						\
 } while (0)
 #define	cv_init(cv, name, type, arg)	zfs_cv_init((cv), (name), (type), (arg))
 

==== //depot/projects/dtrace7/src/sys/compat/opensolaris/sys/kmem.h#2 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/compat/opensolaris/sys/kmem.h,v 1.2 2007/04/10 02:35:56 pjd Exp $
+ * $FreeBSD: src/sys/compat/opensolaris/sys/kmem.h,v 1.3 2007/11/28 21:48:25 jb Exp $
  */
 
 #ifndef _OPENSOLARIS_SYS_KMEM_H_
@@ -32,6 +32,7 @@
 #include <sys/param.h>
 #include <sys/proc.h>
 #include <sys/malloc.h>
+#include <sys/vmem.h>
 
 #include <vm/uma.h>
 #include <vm/vm.h>
@@ -41,8 +42,6 @@
 #define	KM_NOSLEEP		M_NOWAIT
 #define	KMC_NODEBUG		0
 
-typedef	void	vmem_t;
-
 typedef struct kmem_cache {
 	char		kc_name[32];
 #ifdef _KERNEL

==== //depot/projects/dtrace7/src/sys/compat/opensolaris/sys/mutex.h#2 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/compat/opensolaris/sys/mutex.h,v 1.3 2007/05/26 21:37:14 pjd Exp $
+ * $FreeBSD: src/sys/compat/opensolaris/sys/mutex.h,v 1.4 2007/11/05 18:40:55 pjd Exp $
  */
 
 #ifndef _OPENSOLARIS_SYS_MUTEX_H_
@@ -53,11 +53,18 @@
 #endif
 
 #define	mutex_init(lock, desc, type, arg)	do {			\
+	const char *_name;						\
 	ASSERT((type) == MUTEX_DEFAULT);				\
 	KASSERT(((lock)->lock_object.lo_flags & LO_ALLMASK) !=		\
 	    LO_EXPECTED, ("lock %s already initialized", #lock));	\
 	bzero((lock), sizeof(struct sx));				\
-	sx_init_flags((lock), "zfs:" #lock, MUTEX_FLAGS);		\
+	for (_name = #lock; *_name != '\0'; _name++) {			\
+		if (*_name >= 'a' && *_name <= 'z')			\
+			break;						\
+	}								\
+	if (*_name == '\0')						\
+		_name = #lock;						\
+	sx_init_flags((lock), _name, MUTEX_FLAGS);			\
 } while (0)
 #define	mutex_destroy(lock)	sx_destroy(lock)
 #define	mutex_enter(lock)	sx_xlock(lock)

==== //depot/projects/dtrace7/src/sys/compat/opensolaris/sys/proc.h#2 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/compat/opensolaris/sys/proc.h,v 1.2 2007/08/16 20:33:20 pjd Exp $
+ * $FreeBSD: src/sys/compat/opensolaris/sys/proc.h,v 1.4 2007/11/28 21:50:05 jb Exp $
  */
 
 #ifndef _OPENSOLARIS_SYS_PROC_H_
@@ -44,8 +44,6 @@
 #define	max_ncpus	mp_ncpus
 #define	boot_max_ncpus	mp_ncpus
 
-extern int hz;	/* system clock's frequency */
-
 #define	TS_RUN	0
 
 #define	p0	proc0
@@ -77,12 +75,12 @@
 	ASSERT(len == 0);
 	ASSERT(state == TS_RUN);
 
-	error = kthread_create(proc, arg, &p, 0, ZFS_KSTACK_PAGES,
+	error = kproc_create(proc, arg, &p, 0, ZFS_KSTACK_PAGES,
 	    "solthread %p", proc);
 	return (error == 0 ? FIRST_THREAD_IN_PROC(p) : NULL);
 }
 
-#define	thread_exit()	kthread_exit(0)
+#define	thread_exit()	kproc_exit(0)
 
 #endif	/* _KERNEL */
 

==== //depot/projects/dtrace7/src/sys/compat/opensolaris/sys/rwlock.h#2 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/compat/opensolaris/sys/rwlock.h,v 1.3 2007/05/26 21:37:14 pjd Exp $
+ * $FreeBSD: src/sys/compat/opensolaris/sys/rwlock.h,v 1.4 2007/11/05 18:40:55 pjd Exp $
  */
 
 #ifndef _OPENSOLARIS_SYS_RWLOCK_H_
@@ -60,10 +60,17 @@
 #define	RW_ISWRITER(x)		(rw_iswriter(x))
 
 #define	rw_init(lock, desc, type, arg)	do {				\
+	const char *_name;						\
 	KASSERT(((lock)->lock_object.lo_flags & LO_ALLMASK) !=		\
 	    LO_EXPECTED, ("lock %s already initialized", #lock));	\
 	bzero((lock), sizeof(struct sx));				\
-	sx_init_flags((lock), "zfs:" #lock, RW_FLAGS);			\
+	for (_name = #lock; *_name != '\0'; _name++) {			\
+		if (*_name >= 'a' && *_name <= 'z')			\
+			break;						\
+	}								\
+	if (*_name == '\0')						\
+		_name = #lock;						\
+	sx_init_flags((lock), _name, RW_FLAGS);				\
 } while (0)
 #define	rw_destroy(lock)	sx_destroy(lock)
 #define	rw_enter(lock, how)	do {					\

==== //depot/projects/dtrace7/src/sys/compat/opensolaris/sys/time.h#2 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/compat/opensolaris/sys/time.h,v 1.1 2007/04/06 01:09:06 pjd Exp $
+ * $FreeBSD: src/sys/compat/opensolaris/sys/time.h,v 1.2 2007/11/28 21:44:17 jb Exp $
  */
 
 #ifndef _OPENSOLARIS_SYS_TIME_H_
@@ -31,9 +31,17 @@
 
 #include_next <sys/time.h>
 
+#define SEC		1
+#define MILLISEC	1000
+#define MICROSEC	1000000
+#define NANOSEC		1000000000
+
+typedef longlong_t	hrtime_t;
+
+#define	LBOLT	((gethrtime() * hz) / NANOSEC)
+
 #ifdef _KERNEL
-#define	lbolt	((gethrtime() * hz) / NANOSEC)
-#define	lbolt64	(int64_t)(lbolt)
+#define	lbolt64	(int64_t)(LBOLT)
 
 static __inline hrtime_t
 gethrtime(void) {
@@ -53,6 +61,15 @@
 #define	gethrestime_sec()	(time_second)
 #define	gethrestime(ts)		getnanotime(ts)
 
+#else
+
+static __inline hrtime_t gethrtime(void) {
+	struct timespec ts;
+	clock_gettime(CLOCK_UPTIME,&ts);
+	return (((u_int64_t) ts.tv_sec) * NANOSEC + ts.tv_nsec);
+}
+
+
 #endif	/* _KERNEL */
 
 #endif	/* !_OPENSOLARIS_SYS_TIME_H_ */

==== //depot/projects/dtrace7/src/sys/compat/opensolaris/sys/types.h#2 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/compat/opensolaris/sys/types.h,v 1.2 2007/04/23 00:52:06 pjd Exp $
+ * $FreeBSD: src/sys/compat/opensolaris/sys/types.h,v 1.3 2007/11/28 21:49:16 jb Exp $
  */
 
 #ifndef _OPENSOLARIS_SYS_TYPES_H_
@@ -39,6 +39,18 @@
 #define	MAXNAMELEN	256
 
 typedef	struct timespec	timestruc_t;
+typedef u_int		uint_t;
+typedef u_char		uchar_t;
+typedef u_short		ushort_t;
+typedef u_long		ulong_t;
+typedef long long	longlong_t;  
+typedef unsigned long long	u_longlong_t;
+typedef off_t		off64_t;
+typedef id_t		taskid_t;
+typedef id_t		projid_t;
+typedef id_t		poolid_t;
+typedef id_t		zoneid_t;
+typedef id_t		ctid_t;
 
 #ifdef _KERNEL
 
@@ -53,6 +65,12 @@
 
 #else
 
+#if defined(__XOPEN_OR_POSIX)
+typedef enum { _B_FALSE, _B_TRUE }	boolean_t;
+#else
+typedef enum { B_FALSE, B_TRUE }	boolean_t;
+#endif /* defined(__XOPEN_OR_POSIX) */
+
 typedef	longlong_t	offset_t;
 typedef	u_longlong_t	u_offset_t;
 typedef	uint64_t	upad64_t;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200712140043.lBE0hF0q026772>