Date: Fri, 31 Oct 2003 10:09:04 +0900 From: YONETANI Tomokazu <t-yonetani@ergobrains.co.jp> To: Clive Lin <clive@tongi.org> Cc: t-yonetani@ergobrains.co.jp Subject: Re: lots of "exclusive sleep mutex" Message-ID: <20031031010904.GA81366@ergobrains.co.jp> In-Reply-To: <20031029161647.GA42024@fatpipi.cirx.org> References: <20031003180033.GA27126@fatpipi.cirx.org> <20031029161647.GA42024@fatpipi.cirx.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2003/10/30 00:16:47, Clive Lin wrote: > On Sat, Oct 04, 2003 at 02:00:33AM +0800, Clive Lin wrote: > > Hi, > > > > I've seen lots of messages on rescent -CURRENT > > > > malloc() of "16" with the following non-sleepable locks held: > > exclusive sleep mutex g_xdown r = 0 (0xe044eca8) locked @ /usr/src/sys/geom/geom_io.c:351 > > malloc() of "16" with the following non-sleepable locks held: > > exclusive sleep mutex g_xdown r = 0 (0xe044eca8) locked @ /usr/src/sys/geom/geom_io.c:351 > > Many of above are still seen on the latest current. > malloc() of "16" with the following non-sleepable locks held: > exclusive sleep mutex g_xdown r = 0 (0xe044eca8) locked @ /usr/src/sys/geom/geom_io.c:355 > malloc() of "16" with the following non-sleepable locks held: > exclusive sleep mutex g_xdown r = 0 (0xe044eca8) locked @ /usr/src/sys/geom/geom_io.c:355 > > Perhaps it's a ServeRAID specific glitch? > > dmesg|grep ips > ips0: <IBM ServeRAID Adapter> mem 0xf0000000-0xf3ffffff irq 16 at device 1.0 on pci4 > ips0: logical drives: 1 > ipsd0: <Logical Drive> on ips0 > GEOM: create disk ipsd0 dp=0xc6b25310 > ipsd0: Logical Drive (69430MB) Does this fix? Index: ips.c =================================================================== RCS file: /home/cvs/freebsd/src/sys/dev/ips/ips.c,v retrieving revision 1.5 diff -u -6 -r1.5 ips.c --- ips.c 24 Aug 2003 17:49:13 -0000 1.5 +++ ips.c 30 Oct 2003 08:45:32 -0000 @@ -147,12 +147,13 @@ waiter = malloc(sizeof(ips_wait_list_t), M_DEVBUF, memflags); if(!waiter) return ENOMEM; mask = splbio(); if(sc->state & IPS_OFFLINE){ splx(mask); + free(waiter, M_DEVBUF); return EIO; } command = SLIST_FIRST(&sc->free_cmd_list); if(command && !(sc->state & IPS_TIMEOUT)){ SLIST_REMOVE_HEAD(&sc->free_cmd_list, next); (sc->used_commands)++; By the way, does this panic your machine? $ exec sh $ mkdir foo $ i=0; while :; do echo $i > foo/$i; i=$(($i+1)); done Regards. -- YONETANI Tomokazu / Ergo-Brains Inc.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20031031010904.GA81366>