Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754401AbdCFJrG (ORCPT ); Mon, 6 Mar 2017 04:47:06 -0500 Received: from mail-wm0-f50.google.com ([74.125.82.50]:33767 "EHLO mail-wm0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753762AbdCFJob (ORCPT ); Mon, 6 Mar 2017 04:44:31 -0500 Subject: Re: [PATCH] blk: improve order of bio handling in generic_make_request() To: NeilBrown , Jens Axboe References: <87h93blz6g.fsf@notabene.neil.brown.name> <71562c2c-97f4-9a0a-32ec-30e0702ca575@profitbricks.com> <87lgsjj9w8.fsf@notabene.neil.brown.name> Cc: LKML , Lars Ellenberg , Kent Overstreet , Pavel Machek , Mike Snitzer , Mikulas Patocka From: Jack Wang Message-ID: <3f261bbe-dcec-db4b-947c-357a5b86a515@profitbricks.com> Date: Mon, 6 Mar 2017 10:43:59 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <87lgsjj9w8.fsf@notabene.neil.brown.name> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2051 Lines: 78 On 06.03.2017 05:40, NeilBrown wrote: > On Fri, Mar 03 2017, Jack Wang wrote: >> >> Thanks Neil for pushing the fix. >> >> We can optimize generic_make_request a little bit: >> - assign bio_list struct hold directly instead init and merge >> - remove duplicate code >> >> I think better to squash into your fix. > > Hi Jack, > I don't object to your changes, but I'd like to see a response from > Jens first. > My preference would be to get the original patch in, then other changes > that build on it, such as this one, can be added. Until the core > changes lands, any other work is pointless. > > Of course if Jens wants a this merged before he'll apply it, I'll > happily do that. > > Thanks, > NeilBrown Hi Neil, Totally agree, let's wait for Jens's decision. Hi Jens, Please consider this fix also for stable 4.3+ Thanks, Jack Wang > > > >> --- >> block/blk-core.c | 9 ++------- >> 1 file changed, 2 insertions(+), 7 deletions(-) >> >> diff --git a/block/blk-core.c b/block/blk-core.c >> index 3bc7202..b29b7e5 100644 >> --- a/block/blk-core.c >> +++ b/block/blk-core.c >> @@ -2147,8 +2147,7 @@ blk_qc_t generic_make_request(struct bio *bio) >> struct bio_list lower, same, hold; >> >> /* Create a fresh bio_list for all subordinate requests */ >> - bio_list_init(&hold); >> - bio_list_merge(&hold, &bio_list_on_stack); >> + hold = bio_list_on_stack; >> bio_list_init(&bio_list_on_stack); >> >> ret = q->make_request_fn(q, bio); >> @@ -2168,14 +2167,10 @@ blk_qc_t generic_make_request(struct bio *bio) >> bio_list_merge(&bio_list_on_stack, &lower); >> bio_list_merge(&bio_list_on_stack, &same); >> bio_list_merge(&bio_list_on_stack, &hold); >> - >> - bio = bio_list_pop(current->bio_list); >> } else { >> - struct bio *bio_next = bio_list_pop(current->bio_list); >> - >> bio_io_error(bio); >> - bio = bio_next; >> } >> + bio = bio_list_pop(current->bio_list); >> } while (bio); >> current->bio_list = NULL; /* deactivate */ >> >> -- >> >> Regards, >> Jack