Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 16 May 2009 00:21:03 +0000 (UTC)
From:      Kip Macy <kmacy@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r192174 - in user/kmacy/ZFS_MFC/sys: kern sys
Message-ID:  <200905160021.n4G0L3B9039066@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kmacy
Date: Sat May 16 00:21:02 2009
New Revision: 192174
URL: http://svn.freebsd.org/changeset/base/192174

Log:
  remove rmlock dependency
  add PR_* defines

Modified:
  user/kmacy/ZFS_MFC/sys/kern/kern_osd.c
  user/kmacy/ZFS_MFC/sys/sys/jail.h

Modified: user/kmacy/ZFS_MFC/sys/kern/kern_osd.c
==============================================================================
--- user/kmacy/ZFS_MFC/sys/kern/kern_osd.c	Sat May 16 00:05:49 2009	(r192173)
+++ user/kmacy/ZFS_MFC/sys/kern/kern_osd.c	Sat May 16 00:21:02 2009	(r192174)
@@ -36,7 +36,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/malloc.h>
 #include <sys/lock.h>
 #include <sys/mutex.h>
-#include <sys/rmlock.h>
+#include <sys/rwlock.h>
 #include <sys/sx.h>
 #include <sys/queue.h>
 #include <sys/proc.h>
@@ -78,7 +78,7 @@ static const u_int osd_nmethods[OSD_LAST
 };
 
 static struct sx osd_module_lock[OSD_LAST + 1];
-static struct rmlock osd_object_lock[OSD_LAST + 1];
+static struct rwlock osd_object_lock[OSD_LAST + 1];
 static struct mtx osd_list_lock[OSD_LAST + 1];
 
 static void
@@ -124,12 +124,12 @@ osd_register(u_int type, osd_destructor_
 			    osd_nmethods[type], M_OSD, M_WAITOK);
 		newptr = malloc(sizeof(osd_destructor_t) * osd_nslots[type],
 		    M_OSD, M_WAITOK);
-		rm_wlock(&osd_object_lock[type]);
+		rw_wlock(&osd_object_lock[type]);
 		bcopy(osd_destructors[type], newptr,
 		    sizeof(osd_destructor_t) * i);
 		free(osd_destructors[type], M_OSD);
 		osd_destructors[type] = newptr;
-		rm_wunlock(&osd_object_lock[type]);
+		rw_wunlock(&osd_object_lock[type]);
 		OSD_DEBUG("New slot allocated (type=%u, slot=%u).",
 		    type, i + 1);
 	}
@@ -154,7 +154,7 @@ osd_deregister(u_int type, u_int slot)
 	KASSERT(osd_destructors[type][slot - 1] != NULL, ("Unused slot."));
 
 	sx_xlock(&osd_module_lock[type]);
-	rm_wlock(&osd_object_lock[type]);
+	rw_wlock(&osd_object_lock[type]);
 	/*
 	 * Free all OSD for the given slot.
 	 */
@@ -188,26 +188,25 @@ osd_deregister(u_int type, u_int slot)
 		OSD_DEBUG("Slot deregistration (type=%u, slot=%u).",
 		    type, slot);
 	}
-	rm_wunlock(&osd_object_lock[type]);
+	rw_wunlock(&osd_object_lock[type]);
 	sx_xunlock(&osd_module_lock[type]);
 }
 
 int
 osd_set(u_int type, struct osd *osd, u_int slot, void *value)
 {
-	struct rm_priotracker tracker;
 
 	KASSERT(type >= OSD_FIRST && type <= OSD_LAST, ("Invalid type."));
 	KASSERT(slot > 0, ("Invalid slot."));
 	KASSERT(osd_destructors[type][slot - 1] != NULL, ("Unused slot."));
 
-	rm_rlock(&osd_object_lock[type], &tracker);
+	rw_rlock(&osd_object_lock[type]);
 	if (slot > osd->osd_nslots) {
 		if (value == NULL) {
 			OSD_DEBUG(
 			    "Not allocating null slot (type=%u, slot=%u).",
 			    type, slot);
-			rm_runlock(&osd_object_lock[type], &tracker);
+			rw_runlock(&osd_object_lock[type]);
 			return (0);
 		} else if (osd->osd_nslots == 0) {
 			/*
@@ -217,7 +216,7 @@ osd_set(u_int type, struct osd *osd, u_i
 			osd->osd_slots = malloc(sizeof(void *) * slot, M_OSD,
 			    M_NOWAIT | M_ZERO);
 			if (osd->osd_slots == NULL) {
-				rm_runlock(&osd_object_lock[type], &tracker);
+				rw_runlock(&osd_object_lock[type]);
 				return (ENOMEM);
 			}
 			osd->osd_nslots = slot;
@@ -235,7 +234,7 @@ osd_set(u_int type, struct osd *osd, u_i
 			newptr = realloc(osd->osd_slots, sizeof(void *) * slot,
 			    M_OSD, M_NOWAIT | M_ZERO);
 			if (newptr == NULL) {
-				rm_runlock(&osd_object_lock[type], &tracker);
+				rw_runlock(&osd_object_lock[type]);
 				return (ENOMEM);
 			}
 			osd->osd_slots = newptr;
@@ -246,21 +245,20 @@ osd_set(u_int type, struct osd *osd, u_i
 	OSD_DEBUG("Setting slot value (type=%u, slot=%u, value=%p).", type,
 	    slot, value);
 	osd->osd_slots[slot - 1] = value;
-	rm_runlock(&osd_object_lock[type], &tracker);
+	rw_runlock(&osd_object_lock[type]);
 	return (0);
 }
 
 void *
 osd_get(u_int type, struct osd *osd, u_int slot)
 {
-	struct rm_priotracker tracker;
 	void *value;
 
 	KASSERT(type >= OSD_FIRST && type <= OSD_LAST, ("Invalid type."));
 	KASSERT(slot > 0, ("Invalid slot."));
 	KASSERT(osd_destructors[type][slot - 1] != NULL, ("Unused slot."));
 
-	rm_rlock(&osd_object_lock[type], &tracker);
+	rw_rlock(&osd_object_lock[type]);
 	if (slot > osd->osd_nslots) {
 		value = NULL;
 		OSD_DEBUG("Slot doesn't exist (type=%u, slot=%u).", type, slot);
@@ -269,18 +267,17 @@ osd_get(u_int type, struct osd *osd, u_i
 		OSD_DEBUG("Returning slot value (type=%u, slot=%u, value=%p).",
 		    type, slot, value);
 	}
-	rm_runlock(&osd_object_lock[type], &tracker);
+	rw_runlock(&osd_object_lock[type]);
 	return (value);
 }
 
 void
 osd_del(u_int type, struct osd *osd, u_int slot)
 {
-	struct rm_priotracker tracker;
 
-	rm_rlock(&osd_object_lock[type], &tracker);
+	rw_rlock(&osd_object_lock[type]);
 	do_osd_del(type, osd, slot, 0);
-	rm_runlock(&osd_object_lock[type], &tracker);
+	rw_runlock(&osd_object_lock[type]);
 }
 
 static void
@@ -363,7 +360,6 @@ osd_call(u_int type, u_int method, void 
 void
 osd_exit(u_int type, struct osd *osd)
 {
-	struct rm_priotracker tracker;
 	u_int i;
 
 	KASSERT(type >= OSD_FIRST && type <= OSD_LAST, ("Invalid type."));
@@ -374,14 +370,14 @@ osd_exit(u_int type, struct osd *osd)
 		return;
 	}
 
-	rm_rlock(&osd_object_lock[type], &tracker);
+	rw_rlock(&osd_object_lock[type]);
 	for (i = 1; i <= osd->osd_nslots; i++) {
 		if (osd_destructors[type][i - 1] != NULL)
 			do_osd_del(type, osd, i, 0);
 		else
 			OSD_DEBUG("Unused slot (type=%u, slot=%u).", type, i);
 	}
-	rm_runlock(&osd_object_lock[type], &tracker);
+	rw_runlock(&osd_object_lock[type]);
 	OSD_DEBUG("Object exit (type=%u).", type);
 }
 
@@ -394,7 +390,7 @@ osd_init(void *arg __unused)
 		osd_nslots[i] = 0;
 		LIST_INIT(&osd_list[i]);
 		sx_init(&osd_module_lock[i], "osd_module");
-		rm_init(&osd_object_lock[i], "osd_object", 0);
+		rw_init(&osd_object_lock[i], "osd_object");
 		mtx_init(&osd_list_lock[i], "osd_list", NULL, MTX_DEF);
 		osd_destructors[i] = NULL;
 		osd_methods[i] = NULL;

Modified: user/kmacy/ZFS_MFC/sys/sys/jail.h
==============================================================================
--- user/kmacy/ZFS_MFC/sys/sys/jail.h	Sat May 16 00:05:49 2009	(r192173)
+++ user/kmacy/ZFS_MFC/sys/sys/jail.h	Sat May 16 00:21:02 2009	(r192174)
@@ -142,6 +142,22 @@ struct prison {
 
 #ifdef _KERNEL
 /*
+ * Flag bits set via options or internally
+ */
+#define PR_PERSIST      0x00000001      /* Can exist without processes */
+#define PR_REMOVE       0x01000000      /* In process of being removed */
+
+/*
+ * OSD methods
+ */
+#define PR_METHOD_CREATE        0
+#define PR_METHOD_GET           1
+#define PR_METHOD_SET           2
+#define PR_METHOD_CHECK         3
+#define PR_METHOD_ATTACH        4
+#define PR_MAXMETHOD            5
+
+/*
  * Sysctl-set variables that determine global jail policy
  *
  * XXX MIB entries will need to be protected by a mutex.



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