From patchwork Tue Aug 13 14:03:04 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ed Cashin X-Patchwork-Id: 2844405 Return-Path: X-Original-To: patchwork-dm-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 80E2B9F2F4 for ; Wed, 14 Aug 2013 11:21:52 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 5B3FE2049D for ; Wed, 14 Aug 2013 11:21:51 +0000 (UTC) Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by mail.kernel.org (Postfix) with ESMTP id 040EA20451 for ; Wed, 14 Aug 2013 11:21:48 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id r7EBHPWp028238; Wed, 14 Aug 2013 07:17:25 -0400 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id r7DE4BHN031258 for ; Tue, 13 Aug 2013 10:04:11 -0400 Received: from mx1.redhat.com (ext-mx13.extmail.prod.ext.phx2.redhat.com [10.5.110.18]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id r7DE4BVI029423 for ; Tue, 13 Aug 2013 10:04:11 -0400 Received: from coraid.com (dupo.coraid.com [208.71.232.133]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r7DE471f027063 for ; Tue, 13 Aug 2013 10:04:09 -0400 In-Reply-To: References: <1375912471-5106-1-git-send-email-kmo@daterainc.com> <1375912471-5106-5-git-send-email-kmo@daterainc.com> <2D8F228B-65AE-4046-A910-6B354AF0058E@coraid.com> <20130809000943.GC15409@kmo-pixel> <20130809010530.GG15409@kmo-pixel> To: Kent Overstreet From: Ed Cashin Date: Tue, 13 Aug 2013 10:03:04 -0400 Message-ID: <54e7d248ba68ecf7e7ad4a4180145b72@coraid.com> MIME-Version: 1.0 X-RedHat-Spam-Score: -4.701 (BAYES_00, RP_MATCHES_RCVD, SPF_HELO_PASS, SPF_PASS, URIBL_BLOCKED) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Scanned-By: MIMEDefang 2.68 on 10.5.110.18 X-loop: dm-devel@redhat.com X-Mailman-Approved-At: Wed, 14 Aug 2013 07:17:20 -0400 Cc: "axboe@kernel.dk" , ecashin@coraid.com, "linux-kernel@vger.kernel.org" , "linux-raid@vger.kernel.org" , "dm-devel@redhat.com" , "linux-fsdevel@vger.kernel.org" Subject: Re: [dm-devel] [PATCH 04/22] block: Abstract out bvec iterator X-BeenThere: dm-devel@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk Reply-To: device-mapper development List-Id: device-mapper development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com X-Spam-Status: No, score=-9.7 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP On Aug 9, 2013, Ed Cashin wrote: > On Aug 8, 2013, at 9:05 PM, Kent Overstreet wrote: > ... > > It's in the for-jens branch now. > > > Just examining the patches, I like the way it cleans up the aoe code. I > had a question about a new BUG added by the for-jens branch the > read-response handling path of the aoe driver. The aoe driver in linux-bcache/for-jens commit 4c36c973a8f45 is passing my tests. Here is a patch against that branch illustrating my suggestion for handling bad target responses gracefully. commit 2c39f50b1ee02e2ac07fd072a883a91713da53cc Author: Ed Cashin Date: Tue Aug 13 10:50:28 2013 -0400 aoe: bad AoE responses fail I/O without BUG Instead of having a BUG when the AoE target does something wrong, just fail the I/O and log the problem with rate limiting. --- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel diff --git a/drivers/block/aoe/aoecmd.c b/drivers/block/aoe/aoecmd.c index cacd48e..b9916a6 100644 --- a/drivers/block/aoe/aoecmd.c +++ b/drivers/block/aoe/aoecmd.c @@ -1096,7 +1096,6 @@ bvcpy(struct sk_buff *skb, struct bio *bio, struct bvec_iter iter, long cnt) int soff = 0; struct bio_vec bv; - BUG_ON(cnt > iter.bi_size); iter.bi_size = cnt; __bio_for_each_segment(bv, bio, iter, iter) { @@ -1196,6 +1195,14 @@ noskb: if (buf) clear_bit(BIO_UPTODATE, &buf->bio->bi_flags); break; } + if (n > f->iter.bi_size) { + pr_err_ratelimited("%s e%ld.%d. bytes=%ld need=%u\n", + "aoe: too-large data size in read from", + (long) d->aoemajor, d->aoeminor, + n, f->iter.bi_size); + clear_bit(BIO_UPTODATE, &buf->bio->bi_flags); + break; + } bvcpy(skb, f->buf->bio, f->iter, n); case ATA_CMD_PIO_WRITE: case ATA_CMD_PIO_WRITE_EXT: