PERFORCE change 130825 for review
John Birrell
jb at FreeBSD.org
Thu Dec 13 16:43:16 PST 2007
http://perforce.freebsd.org/chv.cgi?CH=130825
Change 130825 by jb at 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;
More information about the p4-projects
mailing list