From owner-freebsd-scsi@FreeBSD.ORG Fri Mar 30 22:25:25 2012 Return-Path: Delivered-To: freebsd-scsi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 86EBF1065672 for ; Fri, 30 Mar 2012 22:25:25 +0000 (UTC) (envelope-from ambrisko@ambrisko.com) Received: from mail.ambrisko.com (mail.ambrisko.com [70.91.206.90]) by mx1.freebsd.org (Postfix) with ESMTP id 62C7E8FC15 for ; Fri, 30 Mar 2012 22:25:25 +0000 (UTC) X-Ambrisko-Me: Yes Received: from server2.ambrisko.com (HELO internal.ambrisko.com) ([192.168.1.2]) by ironport.ambrisko.com with ESMTP; 30 Mar 2012 15:25:31 -0700 Received: from ambrisko.com (localhost [127.0.0.1]) by internal.ambrisko.com (8.14.4/8.14.4) with ESMTP id q2UMPOdW055706; Fri, 30 Mar 2012 15:25:24 -0700 (PDT) (envelope-from ambrisko@ambrisko.com) Received: (from ambrisko@localhost) by ambrisko.com (8.14.4/8.14.4/Submit) id q2UMPOrF055705; Fri, 30 Mar 2012 15:25:24 -0700 (PDT) (envelope-from ambrisko) From: Doug Ambrisko Message-Id: <201203302225.q2UMPOrF055705@ambrisko.com> In-Reply-To: To: Andrew Boyer Date: Fri, 30 Mar 2012 15:25:24 -0700 (PDT) X-Mailer: ELM [version 2.4ME+ PL124d (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="US-ASCII" Cc: freebsd-scsi@freebsd.org Subject: Re: Missing bio_resid on error case in mfi_disk_complete() X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Mar 2012 22:25:25 -0000 Andrew Boyer writes: | Hello Doug, | We noticed that the AIO system doesn't react to I/O failures that | come from mfi disks; the commands appear to complete. The upper | layers are expecting bio->bio_resid to be non-zero if the bio failed. | The patch below matches what scsi_da.c does in this case and also what | mfi itself does in mfi_disk_strategy() if the I/O is invalid. | | Does this make sense? I meant to get this email sent before you | started on the big merge. | | Thanks, | Andrew | | Index: sys/dev/mfi/mfi_disk.c | =================================================================== | --- sys/dev/mfi/mfi_disk.c (revision 233707) | +++ sys/dev/mfi/mfi_disk.c (working copy) | @@ -274,6 +274,7 @@ | hdr = bio->bio_driver1; | | if (bio->bio_flags & BIO_ERROR) { | + bio->bio_resid = bio->bio_bcount; | if (bio->bio_error == 0) | bio->bio_error = EIO; | disk_err(bio, "hard error", -1, 1); Looks good to me. I can check it in after I finish the merge. The driver is compile tested now. So I'm about to check that in. Thanks, Doug A.