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>