From mboxrd@z Thu Jan 1 00:00:00 1970 From: Albert Lee Subject: [PATCH/RFC 4/4] libata: determine the err_mask directly in atapi_packet_task() Date: Thu, 10 Nov 2005 16:05:53 +0800 Message-ID: <4372FF61.4010807@tw.ibm.com> References: <437181D5.8070903@tw.ibm.com> <43718400.5000409@tw.ibm.com> <43719670.20708@pobox.com> <4372FD45.8080404@tw.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: Received: from e32.co.us.ibm.com ([32.97.110.150]:44988 "EHLO e32.co.us.ibm.com") by vger.kernel.org with ESMTP id S1751385AbVKJIGA (ORCPT ); Thu, 10 Nov 2005 03:06:00 -0500 Received: from westrelay02.boulder.ibm.com (westrelay02.boulder.ibm.com [9.17.195.11]) by e32.co.us.ibm.com (8.12.11/8.12.11) with ESMTP id jAA85tAP030692 for ; Thu, 10 Nov 2005 03:05:55 -0500 Received: from d03av03.boulder.ibm.com (d03av03.boulder.ibm.com [9.17.195.169]) by westrelay02.boulder.ibm.com (8.12.10/NCO/VERS6.8) with ESMTP id jAA85oxP063976 for ; Thu, 10 Nov 2005 01:05:50 -0700 Received: from d03av03.boulder.ibm.com (loopback [127.0.0.1]) by d03av03.boulder.ibm.com (8.12.11/8.13.3) with ESMTP id jAA85sqm007737 for ; Thu, 10 Nov 2005 01:05:54 -0700 In-Reply-To: <4372FD45.8080404@tw.ibm.com> Sender: linux-ide-owner@vger.kernel.org List-Id: linux-ide@vger.kernel.org To: Jeff Garzik Cc: Linux IDE , Bartlomiej Zolnierkiewicz , Doug Maxey , Tejun Heo Patch 4/4: determine the err_mask directly in atapi_packet_task() Changes: - set qc->err_mask directly when we found the error - remove the code to determine err_mask from the device status For your review and advice, thanks. Albert Signed-off-by: Albert Lee ============ --- err_mask3/drivers/scsi/libata-core.c 2005-11-10 15:09:52.000000000 +0800 +++ err_mask4/drivers/scsi/libata-core.c 2005-11-10 15:10:13.000000000 +0800 @@ -4053,13 +4053,17 @@ static void atapi_packet_task(void *_dat /* sleep-wait for BSY to clear */ DPRINTK("busy wait\n"); - if (ata_busy_sleep(ap, ATA_TMOUT_CDB_QUICK, ATA_TMOUT_CDB)) - goto err_out_status; + if (ata_busy_sleep(ap, ATA_TMOUT_CDB_QUICK, ATA_TMOUT_CDB)) { + qc->err_mask |= AC_ERR_ATA_BUS; + goto err_out; + } /* make sure DRQ is set */ status = ata_chk_status(ap); - if ((status & (ATA_BUSY | ATA_DRQ)) != ATA_DRQ) + if ((status & (ATA_BUSY | ATA_DRQ)) != ATA_DRQ) { + qc->err_mask |= AC_ERR_ATA_BUS; goto err_out; + } /* send SCSI cdb */ DPRINTK("send cdb\n"); @@ -4091,10 +4095,7 @@ static void atapi_packet_task(void *_dat return; -err_out_status: - status = ata_chk_status(ap); err_out: - qc->err_mask |= __ac_err_mask(status); ata_poll_qc_complete(qc); }