From owner-freebsd-current Mon Aug 30 0: 2:45 1999 Delivered-To: freebsd-current@freebsd.org Received: from allegro.lemis.com (allegro.lemis.com [192.109.197.134]) by hub.freebsd.org (Postfix) with ESMTP id B968015255 for ; Mon, 30 Aug 1999 00:02:30 -0700 (PDT) (envelope-from grog@freebie.lemis.com) Received: from freebie.lemis.com (freebie.lemis.com [192.109.197.137]) by allegro.lemis.com (8.9.1/8.9.0) with ESMTP id QAA27457; Mon, 30 Aug 1999 16:30:41 +0930 (CST) Received: (from grog@localhost) by freebie.lemis.com (8.9.3/8.9.0) id QAA77118; Mon, 30 Aug 1999 16:30:40 +0930 (CST) Date: Mon, 30 Aug 1999 16:30:39 +0930 From: Greg Lehey To: Bernd Walter Cc: Matthew Dillon , Mike Smith , Parag Patel , freebsd-current@FreeBSD.ORG Subject: Re: 4.0-CURRENT SMP crash with vinum raid-5 and softupdates Message-ID: <19990830163039.L13904@freebie.lemis.com> References: <199908292224.PAA15435@dingo.cdrom.com> <199908292348.QAA07774@apollo.backplane.com> <19990830075311.A30271@cicely8.cicely.de> <199908300559.WAA09987@apollo.backplane.com> <19990830080603.B30271@cicely8.cicely.de> <19990830161715.K13904@freebie.lemis.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=jho1yZJdad60DJr+ X-Mailer: Mutt 0.95.4i In-Reply-To: <19990830161715.K13904@freebie.lemis.com>; from Greg Lehey on Mon, Aug 30, 1999 at 04:17:15PM +0930 WWW-Home-Page: http://www.lemis.com/~grog X-PGP-Fingerprint: 6B 7B C3 8C 61 CD 54 AF 13 24 52 F8 6D A4 95 EF Organization: LEMIS, PO Box 460, Echunga SA 5153, Australia Phone: +61-8-8388-8286 Fax: +61-8-8388-8725 Mobile: +61-41-739-7062 Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG --jho1yZJdad60DJr+ Content-Type: text/plain; charset=us-ascii On Monday, 30 August 1999 at 16:17:15 +0930, Greg Lehey wrote: > On Monday, 30 August 1999 at 8:06:03 +0200, Bernd Walter wrote: >> On Sun, Aug 29, 1999 at 10:59:22PM -0700, Matthew Dillon wrote: >>> >>> This is definitely a pbuf. Did you apply the patches Greg emailed? >> >> Not yet. >> I will do it today. > > Wait a while. I'll send you another couple as well. OK, I'm attaching the patches. You'll need to build a new kernel, a new Vinum kld and a new vinum(8). Let me know if you have any problems. Greg -- See complete headers for address, home page and phone numbers finger grog@lemis.com for PGP public key --jho1yZJdad60DJr+ Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=patches Index: dev/vinum/request.h =================================================================== RCS file: /home/ncvs/src/sys/dev/vinum/request.h,v retrieving revision 1.13 diff -w -u -r1.13 request.h --- request.h 1999/08/28 00:42:37 1.13 +++ request.h 1999/08/30 05:33:13 @@ -202,7 +202,7 @@ } info; }; -#define RQINFO_SIZE 128 /* number of info slots in buffer */ +#define RQINFO_SIZE 512 /* number of info slots in buffer */ void logrq(enum rqinfo_type type, union rqinfou info, struct buf *ubp); #endif Index: dev/vinum/vinuminterrupt.c =================================================================== RCS file: /home/ncvs/src/sys/dev/vinum/vinuminterrupt.c,v retrieving revision 1.19 diff -w -u -r1.19 vinuminterrupt.c --- vinuminterrupt.c 1999/08/28 00:42:39 1.19 +++ vinuminterrupt.c 1999/08/30 06:58:06 @@ -352,6 +352,10 @@ if (debug & DEBUG_LASTREQS) logrq(loginfo_raid5_data, (union rqinfou) rqe, bp); #endif + if ((bp->b_flags & B_CALL) + && (bp->b_iodone == NULL) ) + Debugger("complete_raid5_write"); + bp->b_flags |= B_XXX; /* mark our own */ BUF_STRATEGY(&rqe->b, 0); } } @@ -388,5 +392,9 @@ if (debug & DEBUG_LASTREQS) logrq(loginfo_raid5_parity, (union rqinfou) rqe, bp); #endif + if ((bp->b_flags & B_CALL) + && (bp->b_iodone == NULL) ) + Debugger("complete_raid5_write"); + bp->b_flags |= B_XXX; /* mark our own */ BUF_STRATEGY(&rqe->b, 0); } Index: dev/vinum/vinumrequest.c =================================================================== RCS file: /home/ncvs/src/sys/dev/vinum/vinumrequest.c,v retrieving revision 1.35 diff -w -u -r1.35 vinumrequest.c --- vinumrequest.c 1999/08/28 00:42:42 1.35 +++ vinumrequest.c 1999/08/30 06:57:00 @@ -396,6 +396,11 @@ if (debug & DEBUG_LASTREQS) logrq(loginfo_rqe, (union rqinfou) rqe, rq->bp); #endif + if ((bp->b_flags & B_CALL) + && (bp->b_iodone == NULL) ) + Debugger("launch_requests"); + bp->b_flags |= B_XXX; /* mark our own */ + /* fire off the request */ BUF_STRATEGY(&rqe->b, 0); } Index: kern/subr_diskslice.c =================================================================== RCS file: /home/ncvs/src/sys/kern/subr_diskslice.c,v retrieving revision 1.68 diff -w -u -r1.68 subr_diskslice.c --- subr_diskslice.c 1999/08/28 00:46:17 1.68 +++ subr_diskslice.c 1999/08/30 06:52:03 @@ -265,6 +265,9 @@ && sp->ds_offset != 0) { struct iodone_chain *ic; + if ((bp->b_flags & B_CALL) + && (bp->b_iodone == NULL) ) + Debugger("dscheck"); ic = malloc(sizeof *ic , M_DEVBUF, M_WAITOK); ic->ic_prev_flags = bp->b_flags; ic->ic_prev_iodone = bp->b_iodone; @@ -601,6 +604,9 @@ | (bp->b_flags & ~(B_CALL | B_DONE)); bp->b_iodone = ic->ic_prev_iodone; bp->b_iodone_chain = ic->ic_prev_iodone_chain; + if ((bp->b_flags & B_CALL) + && (bp->b_iodone == NULL) ) + Debugger("dsiodone"); if (!(bp->b_flags & B_READ) || (!(bp->b_flags & B_ERROR) && bp->b_error == 0)) { msg = fixlabel((char *)NULL, ic->ic_args[1].ia_ptr, Index: kern/vfs_bio.c =================================================================== RCS file: /home/ncvs/src/sys/kern/vfs_bio.c,v retrieving revision 1.227 diff -w -u -r1.227 vfs_bio.c --- vfs_bio.c 1999/08/28 00:46:23 1.227 +++ vfs_bio.c 1999/08/30 01:31:00 @@ -2576,6 +2576,8 @@ /* call optional completion function if requested */ if (bp->b_flags & B_CALL) { + if (bp->b_iodone == NULL) + Debugger ("biodone"); bp->b_flags &= ~B_CALL; (*bp->b_iodone) (bp); splx(s); --jho1yZJdad60DJr+-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message