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>
