From owner-freebsd-scsi@FreeBSD.ORG Sat Sep 20 21:39:06 2003 Return-Path: Delivered-To: freebsd-scsi@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id E203216A4B3; Sat, 20 Sep 2003 21:39:06 -0700 (PDT) Received: from panzer.kdm.org (panzer.kdm.org [216.160.178.169]) by mx1.FreeBSD.org (Postfix) with ESMTP id CAD8343FAF; Sat, 20 Sep 2003 21:38:59 -0700 (PDT) (envelope-from ken@panzer.kdm.org) Received: from panzer.kdm.org (localhost [127.0.0.1]) by panzer.kdm.org (8.12.9/8.12.5) with ESMTP id h8L4cp64022873; Sat, 20 Sep 2003 22:38:51 -0600 (MDT) (envelope-from ken@panzer.kdm.org) Received: (from ken@localhost) by panzer.kdm.org (8.12.9/8.12.5/Submit) id h8L4cp2v022872; Sat, 20 Sep 2003 22:38:51 -0600 (MDT) (envelope-from ken) Date: Sat, 20 Sep 2003 22:38:51 -0600 From: "Kenneth D. Merry" To: Thomas Quinot Message-ID: <20030921043851.GA22790@panzer.kdm.org> References: <20030919173636.GA867@melusine.cuivre.fr.eu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20030919173636.GA867@melusine.cuivre.fr.eu.org> User-Agent: Mutt/1.4.1i cc: freebsd-scsi@FreeBSD.ORG Subject: Re: cam_periph recovered sense handling X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 21 Sep 2003 04:39:07 -0000 On Fri, Sep 19, 2003 at 19:36:36 +0200, Thomas Quinot wrote: > When the cam_periph layer automagically recovers sense data by issuing a > REQUEST SENSE command, it must set the CAM_AUTOSNS_VALID bit in the > original CCB's status. Currently, it errouneously sets that bit in the > flags field instead. This causes an endless loop of REQUEST SENSE > actions, eventually leading to memory exhaustion. The following patch > resolves the problem for me; please review. > > Thomas. > > Index: cam_periph.c > =================================================================== > RCS file: /home/ncvs/src/sys/cam/cam_periph.c,v > retrieving revision 1.52 > diff -u -r1.52 cam_periph.c > --- cam_periph.c 10 Sep 2003 18:23:43 -0000 1.52 > +++ cam_periph.c 19 Sep 2003 17:25:58 -0000 > @@ -975,7 +975,7 @@ > sense_key = saved_ccb->csio.sense_data.flags; > sense_key &= SSD_KEY; > if (sense_key != SSD_KEY_NO_SENSE) { > - saved_ccb->ccb_h.flags |= > + saved_ccb->ccb_h.status |= > CAM_AUTOSNS_VALID; > xpt_print_path(saved_ccb->ccb_h.path); > printf("Recovered Sense\n"); > > -- Looks like the correct fix, good catch. Feel free to commit it. Ken -- Kenneth Merry ken@kdm.org