Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp447341imu; Fri, 11 Jan 2019 03:18:54 -0800 (PST) X-Google-Smtp-Source: ALg8bN5hWY54epw+vkTjlACt5P7R5+ViAbIAk/fd0PYDzSKtldJV7WK8PqEirp/zd660XV4nu4HN X-Received: by 2002:a17:902:6948:: with SMTP id k8mr14076732plt.2.1547205534440; Fri, 11 Jan 2019 03:18:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1547205534; cv=none; d=google.com; s=arc-20160816; b=Pq4DkM5eUQRp4DiKTRFB5jxNm1b8f14Z53YLKoXgoW7ldCG6G3F0TSBBpWLqSX9cDT Sbv2Jm6WKYG2UcO5q1nAlw5Xa2S6GOEc0bQVhUhArwuKNJ4uNHyDvRqP2nI2S7jBaVVS KgfPDmB71BsXW4VhwqGjOxJCg0n0FZIbnBBv67G3dNtBrdw0qk2bWh/jxTt0wQWf6zWz Jn6iVwLpNgy02MgTjvB5oUbQdE89Ez8RCtg+CayXn78Z7Tn73EIsuinB4EHlrzCldKAA PzaJsMMZrYsgb5oQuVVedjnwVEmRrm8IRicZcxKQHuZBxkelMwSO1sEddp44jXalbfP5 r9jA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=slTW8uoG6sTMlKcMLmau18LMT15MeeTevHwmv3l5NcU=; b=D2CO0q/KdWIzVwuBvDe1Wrn5ILRus8mj8PhKswGs4g6mQfOEJ6AOJdNvL9PC5JfOJL DZxuBnYmdGL2SLzZUUl1u4ra+Kb62tEig0GQ938yj1PqzkA0O1NZcIQUNYeDTR7HXyH0 FJ5Y+GGPLufvlpdS2hL3QmDqBB18/AGPpTVUTQIw/QNK/LVsiKNZgJHcntG1PfFV4p/Z LrsJfEYjBTvrvpubVWS0asz+z6YhbZRlA9mJTbL9BMVARmO2R62ms1UzG0a8A4xLzgCH 5MhRMhDhuU9Qjud7gaHR7Oiqeqtvhb8sGnzMj6Li7caWz7H5kesYcSb3Blt7x0Ao90mV mjGg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g18si73006490pgg.522.2019.01.11.03.18.33; Fri, 11 Jan 2019 03:18:54 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731613AbfAKLC1 (ORCPT + 99 others); Fri, 11 Jan 2019 06:02:27 -0500 Received: from mx1.redhat.com ([209.132.183.28]:52206 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725789AbfAKLC0 (ORCPT ); Fri, 11 Jan 2019 06:02:26 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 6BF0CC01CB7D; Fri, 11 Jan 2019 11:02:25 +0000 (UTC) Received: from localhost (ovpn-8-28.pek2.redhat.com [10.72.8.28]) by smtp.corp.redhat.com (Postfix) with ESMTP id 33172605AE; Fri, 11 Jan 2019 11:02:11 +0000 (UTC) From: Ming Lei To: Jens Axboe Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Theodore Ts'o , Omar Sandoval , Sagi Grimberg , Dave Chinner , Kent Overstreet , Mike Snitzer , dm-devel@redhat.com, Alexander Viro , linux-fsdevel@vger.kernel.org, linux-raid@vger.kernel.org, David Sterba , linux-btrfs@vger.kernel.org, "Darrick J . Wong" , linux-xfs@vger.kernel.org, Gao Xiang , Christoph Hellwig , linux-ext4@vger.kernel.org, Coly Li , linux-bcache@vger.kernel.org, Boaz Harrosh , Bob Peterson , cluster-devel@redhat.com, Ming Lei Subject: [PATCH V13 02/19] block: don't use bio->bi_vcnt to figure out segment number Date: Fri, 11 Jan 2019 19:01:10 +0800 Message-Id: <20190111110127.21664-3-ming.lei@redhat.com> In-Reply-To: <20190111110127.21664-1-ming.lei@redhat.com> References: <20190111110127.21664-1-ming.lei@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Fri, 11 Jan 2019 11:02:25 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org It is wrong to use bio->bi_vcnt to figure out how many segments there are in the bio even though CLONED flag isn't set on this bio, because this bio may be splitted or advanced. So always use bio_segments() in blk_recount_segments(), and it shouldn't cause any performance loss now because the physical segment number is figured out in blk_queue_split() and BIO_SEG_VALID is set meantime since bdced438acd83ad83a6c ("block: setup bi_phys_segments after splitting"). Reviewed-by: Omar Sandoval Reviewed-by: Christoph Hellwig Fixes: 76d8137a3113 ("blk-merge: recaculate segment if it isn't less than max segments") Signed-off-by: Ming Lei --- block/blk-merge.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/block/blk-merge.c b/block/blk-merge.c index 71e9ac03f621..f85d878f313d 100644 --- a/block/blk-merge.c +++ b/block/blk-merge.c @@ -367,13 +367,7 @@ void blk_recalc_rq_segments(struct request *rq) void blk_recount_segments(struct request_queue *q, struct bio *bio) { - unsigned short seg_cnt; - - /* estimate segment number by bi_vcnt for non-cloned bio */ - if (bio_flagged(bio, BIO_CLONED)) - seg_cnt = bio_segments(bio); - else - seg_cnt = bio->bi_vcnt; + unsigned short seg_cnt = bio_segments(bio); if (test_bit(QUEUE_FLAG_NO_SG_MERGE, &q->queue_flags) && (seg_cnt < queue_max_segments(q))) -- 2.9.5