Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755509Ab3D1BAY (ORCPT ); Sat, 27 Apr 2013 21:00:24 -0400 Received: from mail-pd0-f181.google.com ([209.85.192.181]:41056 "EHLO mail-pd0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752874Ab3D1BAX (ORCPT ); Sat, 27 Apr 2013 21:00:23 -0400 Date: Sun, 28 Apr 2013 09:00:16 +0800 From: Shaohua Li To: Markus Cc: lkml , Jens Axboe Subject: Re: hybrid raid1 with trim support [REGRESSION] Message-ID: <20130428010016.GA26411@kernel.org> References: <3387108.NX1Tlx8b5x@f209> <3642314.Bs77jRSGfY@f209> <1533550.VmvE7tiNM7@f209> <20130428005446.GA20018@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20130428005446.GA20018@kernel.org> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2212 Lines: 58 On Sun, Apr 28, 2013 at 08:54:46AM +0800, Shaohua Li wrote: > On Sat, Apr 27, 2013 at 06:29:49PM +0200, Markus wrote: > > Hi! > > > > Now I had the time to bisect, started with 3.7 as good and 3.8 as bad. > > 0cfbcafcae8b7364b5fa96c2b26ccde7a3a296a9 is the bad commit. [1] > > block: add plug for blkdev_issue_discard > > > > While 3.8.10 was still bad, the same kernel with the reverted patch applied is fine. > Thanks for the reporting. Does below patch work for you? Oops, there is a typo there, should be this one: --- drivers/md/raid1.c | 7 ++++++- drivers/md/raid10.c | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) Index: linux/drivers/md/raid1.c =================================================================== --- linux.orig/drivers/md/raid1.c 2013-03-07 14:14:05.950824173 +0800 +++ linux/drivers/md/raid1.c 2013-04-28 08:57:17.874058434 +0800 @@ -981,7 +981,12 @@ static void raid1_unplug(struct blk_plug while (bio) { /* submit pending writes */ struct bio *next = bio->bi_next; bio->bi_next = NULL; - generic_make_request(bio); + if (unlikely((bio->bi_rw & REQ_DISCARD) && + !blk_queue_discard(bdev_get_queue(bio->bi_bdev)))) + /* Just ignore it */ + bio_endio(bio, 0); + else + generic_make_request(bio); bio = next; } kfree(plug); Index: linux/drivers/md/raid10.c =================================================================== --- linux.orig/drivers/md/raid10.c 2013-03-07 14:14:05.950824173 +0800 +++ linux/drivers/md/raid10.c 2013-04-28 08:57:44.765719067 +0800 @@ -1133,7 +1133,12 @@ static void raid10_unplug(struct blk_plu while (bio) { /* submit pending writes */ struct bio *next = bio->bi_next; bio->bi_next = NULL; - generic_make_request(bio); + if (unlikely((bio->bi_rw & REQ_DISCARD) && + !blk_queue_discard(bdev_get_queue(bio->bi_bdev)))) + /* Just ignore it */ + bio_endio(bio, 0); + else + generic_make_request(bio); bio = next; } kfree(plug); -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/