From owner-svn-src-user@FreeBSD.ORG Sat May 16 00:21:03 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 522401065672; Sat, 16 May 2009 00:21:03 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 361228FC0A; Sat, 16 May 2009 00:21:03 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4G0L3Ah039068; Sat, 16 May 2009 00:21:03 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4G0L3B9039066; Sat, 16 May 2009 00:21:03 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200905160021.n4G0L3B9039066@svn.freebsd.org> From: Kip Macy Date: Sat, 16 May 2009 00:21:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192174 - in user/kmacy/ZFS_MFC/sys: kern sys X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 16 May 2009 00:21:03 -0000 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 #include #include -#include +#include #include #include #include @@ -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.