Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752045AbcCRC7n (ORCPT ); Thu, 17 Mar 2016 22:59:43 -0400 Received: from mail-yw0-f195.google.com ([209.85.161.195]:35283 "EHLO mail-yw0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751366AbcCRC7d (ORCPT ); Thu, 17 Mar 2016 22:59:33 -0400 MIME-Version: 1.0 In-Reply-To: <20160317163946.GC6217@localhost.lm.intel.com> References: <1458055076-2175-1-git-send-email-vkuznets@redhat.com> <87oaae4cej.fsf@vitty.brq.redhat.com> <20160316223804.GA6217@localhost.lm.intel.com> <87egb94agz.fsf@vitty.brq.redhat.com> <20160317163946.GC6217@localhost.lm.intel.com> Date: Fri, 18 Mar 2016 10:59:32 +0800 Message-ID: Subject: Re: [PATCH RFC] block: fix bio merge checks when virt_boundary is set From: Ming Lei To: Keith Busch Cc: Vitaly Kuznetsov , linux-block@vger.kernel.org, Linux Kernel Mailing List , Jens Axboe , Dan Williams , "Martin K. Petersen" , Sagi Grimberg , Mike Snitzer , "K. Y. Srinivasan" , Cathy Avery Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1451 Lines: 36 On Fri, Mar 18, 2016 at 12:39 AM, Keith Busch wrote: > On Thu, Mar 17, 2016 at 12:20:28PM +0100, Vitaly Kuznetsov wrote: >> Keith Busch writes: >> > been combined. In any case, I think you can get what you're after just >> > by moving the gap check after BIOVEC_PHYS_MERGABLE. Does the following >> > look ok to you? >> > >> >> Thanks, it does. > > Cool, thanks for confirming. > >> Will you send it or would you like me to do that with your Suggested-by? > > I'm not confident yet this doesn't break anything, particularly since > we moved the gap check after the length check. Just wanted to confirm > the concept addressed your concern, but still need to take a closer look > and test before submitting. IMO, the change on blk_bio_segment_split() is correct, because actually it is a sg gap and the check should have been done between segments instead of bvecs. So it is reasonable to move the check just before populating a new segment. But for the 2nd change in bio_will_gap(), which should fix Vitaly's problem, I am still not sure if it is completely correct. bio_will_gap() is used to check if two bios may be merged. Suppose two bios are continues physically, the last bvec in 1st bio and the first bvec in 2nd bio might not be in one same segment because of segment size limit. The root cause might be from blkdev_writepage(), and I guess these small bios are from there. thanks, Ming Lei