From owner-freebsd-bugs@FreeBSD.ORG Fri Apr 27 15:40:14 2007 Return-Path: X-Original-To: freebsd-bugs@hub.freebsd.org Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6969D16A401 for ; Fri, 27 Apr 2007 15:40:14 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [69.147.83.40]) by mx1.freebsd.org (Postfix) with ESMTP id 5CBFB13C457 for ; Fri, 27 Apr 2007 15:40:14 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id l3RFeDwd052122 for ; Fri, 27 Apr 2007 15:40:13 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id l3RFeDdJ052121; Fri, 27 Apr 2007 15:40:13 GMT (envelope-from gnats) Date: Fri, 27 Apr 2007 15:40:13 GMT Message-Id: <200704271540.l3RFeDdJ052121@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org From: Thomas Quinot Cc: Subject: Re: kern/112119: system hangs when starts k3b on RELENG_6 X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Thomas Quinot List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Apr 2007 15:40:14 -0000 The following reply was made to PR kern/112119; it has been noted by GNATS. From: Thomas Quinot To: "Ganbold.TS" Cc: scottl@samsco.org, mjacob@FreeBSD.org, linimon@FreeBSD.org, bug-followup@freebsd.org, freebsd-stable@freebsd.org Subject: Re: kern/112119: system hangs when starts k3b on RELENG_6 Date: Fri, 27 Apr 2007 17:32:18 +0200 --lrZ03NoBR/3+SXJZ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline * Ganbold.TS, 2007-04-27 : > I tried your patch at > http://www.freebsd.org/cgi/query-pr.cgi?pr=103602&getpatch=12 and the > problem is still the same. Ssytem freezes upon start of k3b. > > I also tried your attached patch, which reverts part of rev. 1.42.2.3 > and the problem is still the same, system hangs when starts k3b. Thanks, that's useful info. Please try the attached patch instead, which reverts another part of 1.42.2.3 (I'm trying to figure out exactly *which* part of this change is causing the problem). Also, were you able to capture system console output at the point where the crash occurs? We might have some indications there. Thomas. --lrZ03NoBR/3+SXJZ Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=d Index: atapi-cam.c =================================================================== RCS file: /space/mirror/ncvs/src/sys/dev/ata/atapi-cam.c,v retrieving revision 1.42.2.3 retrieving revision 1.42.2.2 diff -u -r1.42.2.3 -r1.42.2.2 --- atapi-cam.c 29 Mar 2007 20:08:32 -0000 1.42.2.3 +++ atapi-cam.c 6 Mar 2007 16:56:50 -0000 1.42.2.2 @@ -697,39 +680,32 @@ csio->ccb_h.status |= CAM_AUTOSNS_VALID; } } else if (request->result != 0) { - if ((request->flags & ATA_R_TIMEOUT) != 0) { - rc = CAM_CMD_TIMEOUT; - } else { - rc = CAM_SCSI_STATUS_ERROR; - csio->scsi_status = SCSI_STATUS_CHECK_COND; + rc = CAM_SCSI_STATUS_ERROR; + csio->scsi_status = SCSI_STATUS_CHECK_COND; - if ((csio->ccb_h.flags & CAM_DIS_AUTOSENSE) == 0) { + if ((csio->ccb_h.flags & CAM_DIS_AUTOSENSE) == 0) { #if 0 - static const int8_t ccb[16] = { ATAPI_REQUEST_SENSE, 0, 0, 0, - sizeof(struct atapi_sense), 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 }; - - bcopy (ccb, request->u.atapi.ccb, sizeof ccb); - request->data = (caddr_t)&csio->sense_data; - request->bytecount = sizeof(struct atapi_sense); - request->transfersize = min(request->bytecount, 65534); - request->timeout = csio->ccb_h.timeout / 1000; - request->retries = 2; - request->flags = ATA_R_QUIET|ATA_R_ATAPI|ATA_R_IMMEDIATE; - hcb->flags |= AUTOSENSE; + static const int8_t ccb[16] = { ATAPI_REQUEST_SENSE, 0, 0, 0, + sizeof(struct atapi_sense), 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 }; + + bcopy (ccb, request->u.atapi.ccb, sizeof ccb); + request->data = (caddr_t)&csio->sense_data; + request->bytecount = sizeof(struct atapi_sense); + request->transfersize = min(request->bytecount, 65534); + request->timeout = csio->ccb_h.timeout / 1000; + request->retries = 2; + request->flags = ATA_R_QUIET|ATA_R_ATAPI|ATA_R_IMMEDIATE; + hcb->flags |= AUTOSENSE; - ata_queue_request(request); - return; + ata_queue_request(request); + return; #else - /* - * Use auto-sense data from the ATA layer, if it has - * issued a REQUEST SENSE automatically and that operation - * returned without error. - */ - if (request->u.atapi.saved_cmd != 0 && request->error == 0) { - bcopy (&request->u.atapi.sense, &csio->sense_data, sizeof(struct atapi_sense)); - csio->ccb_h.status |= CAM_AUTOSNS_VALID; - } + /* The ATA driver has already requested sense for us. */ + if (request->error == 0) { + /* The ATA autosense suceeded. */ + bcopy (&request->u.atapi.sense, &csio->sense_data, sizeof(struct atapi_sense)); + csio->ccb_h.status |= CAM_AUTOSNS_VALID; } #endif } --lrZ03NoBR/3+SXJZ--