From owner-p4-projects@FreeBSD.ORG Fri Dec 14 00:43:16 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0CB6016A41A; Fri, 14 Dec 2007 00:43:16 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9AE7416A418 for ; Fri, 14 Dec 2007 00:43:15 +0000 (UTC) (envelope-from jb@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 8BA5E13C442 for ; Fri, 14 Dec 2007 00:43:15 +0000 (UTC) (envelope-from jb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id lBE0hFSu026790 for ; Fri, 14 Dec 2007 00:43:15 GMT (envelope-from jb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id lBE0hF0q026772 for perforce@freebsd.org; Fri, 14 Dec 2007 00:43:15 GMT (envelope-from jb@freebsd.org) Date: Fri, 14 Dec 2007 00:43:15 GMT Message-Id: <200712140043.lBE0hF0q026772@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jb@freebsd.org using -f From: John Birrell To: Perforce Change Reviews Cc: Subject: PERFORCE change 130825 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Dec 2007 00:43:16 -0000 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 -__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 #include @@ -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 #include #include +#include #include #include @@ -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 +#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;