From owner-freebsd-current Thu Jul 2 17:36:21 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id RAA06970 for freebsd-current-outgoing; Thu, 2 Jul 1998 17:36:21 -0700 (PDT) (envelope-from owner-freebsd-current@FreeBSD.ORG) Received: from home.dragondata.com (toasty@home.dragondata.com [204.137.237.2]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id RAA06962 for ; Thu, 2 Jul 1998 17:36:18 -0700 (PDT) (envelope-from toasty@home.dragondata.com) Received: (from toasty@localhost) by home.dragondata.com (8.8.8/8.8.5) id TAA04624; Thu, 2 Jul 1998 19:35:31 -0500 (CDT) From: Kevin Day Message-Id: <199807030035.TAA04624@home.dragondata.com> Subject: Re: -current wishlist In-Reply-To: <19980702213011.35162@follo.net> from Eivind Eklund at "Jul 2, 98 09:30:11 pm" To: eivind@yes.no (Eivind Eklund) Date: Thu, 2 Jul 1998 19:35:30 -0500 (CDT) Cc: andreas@klemm.gtn.com, current@FreeBSD.ORG X-Mailer: ELM [version 2.4ME+ PL31 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG > These fix a couple of reasons for such problems, I think. They're > completely untested. Feel free to test them :-) > I'll give them a try. :) However... > > Index: ccd.c > =================================================================== > RCS file: /home/ncvs/src/sys/dev/ccd/ccd.c,v > retrieving revision 1.32 > diff -u -r1.32 ccd.c > --- ccd.c 1998/03/09 20:39:26 1.32 > +++ ccd.c 1998/05/31 01:10:56 > @@ -427,7 +433,7 @@ > printf("ccd%d: interleave must be at least %d\n", > ccd->ccd_unit, (maxsecsize / DEV_BSIZE)); > #endif > - while (ci >= cs->sc_cinfo) { > + while (ci && ci >= cs->sc_cinfo) { > free(ci->ci_path, M_DEVBUF); > ci--; > } I'm not quite sure I understand how this would help. If this were happening, shouldn't ccd blow up all over the place? :) Or is it just a case of 'lets make really sure'? :) > @@ -918,7 +929,8 @@ > #endif > cb[0] = cbp; > if (cs->sc_cflags & CCDF_MIRROR && > - (cbp->cb_buf.b_flags & B_READ) == 0) { > + (cbp->cb_buf.b_flags & B_READ) == 0 > + && ci2) { > /* mirror, start one more write */ > cbp = getccdbuf(); > bzero(cbp, sizeof (struct ccdbuf)); I'm not mirroring, so I doubt this is the cause.. (if that helps you narrow things down) In any case, thanks a lot, I'll apply and see what happens. :) Kevin To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message