From patchwork Mon Nov 26 02:17:04 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Lei X-Patchwork-Id: 10697293 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 10B801750 for ; Mon, 26 Nov 2018 02:18:21 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F32D429927 for ; Mon, 26 Nov 2018 02:18:20 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E603429A13; Mon, 26 Nov 2018 02:18:20 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7526029A11 for ; Mon, 26 Nov 2018 02:18:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E0B066B3F69; Sun, 25 Nov 2018 21:18:18 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id D180D6B3F6A; Sun, 25 Nov 2018 21:18:18 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C07426B3F6B; Sun, 25 Nov 2018 21:18:18 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by kanga.kvack.org (Postfix) with ESMTP id 8B06B6B3F69 for ; Sun, 25 Nov 2018 21:18:18 -0500 (EST) Received: by mail-qt1-f199.google.com with SMTP id b16so15140255qtc.22 for ; Sun, 25 Nov 2018 18:18:18 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=i2RSDXiiLv4eqGo5PQxpOUk/2wBp+PkxCNDt1NMuxnk=; b=NxS45HiAmyUs8kR26iVF+xDlUjPbUPD5+J+H/+5QL4NNojAA40vWm0XfMfPb8nzn07 knn2VRcCZUNC5BBHTOKDTcnm7vvV4u+SViFCrYEo+JYaK7MhlnPLSAIiFLFa/pp8Qxqh 5x7iOTL3e25oW74n0KdDprGoXbzFQ18Zca7joHtsHLpkEU5zMXQqGj4UT/mdvSpNMDp3 HJTRmbDjdbMFPzBTMPmZ6cxzbp5h0e5VLpgKUVOCTOcJHfSLcSI+F49u2aZeT2Hnt26V C75Yj9hj9oDdYnGwEGXtwCf0WfKAq7v+OzWnUbYeWfl9UjJYg7BmfjsfHaD9n4HaZOS+ CieA== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of ming.lei@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=ming.lei@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com X-Gm-Message-State: AGRZ1gLACC5++1PJAhouA9FEia9h7x74wB1q7h7548PxyxtDexIhOtMW ZOTdfivZo1sDLqbpEVmlb328qZIiwKrI70+JT+F6HCVrHXwsC+5Il8e+98hczvOV7fgqE+xClzm VnDLoIzw+GRfaFsrs1/Y1QUxHbdttxu2orlw5G7eMZ4ifnrTaWkEzFgRpOyqX6DZ4bA== X-Received: by 2002:aed:2e63:: with SMTP id j90mr24264383qtd.35.1543198698332; Sun, 25 Nov 2018 18:18:18 -0800 (PST) X-Google-Smtp-Source: AJdET5c8JoiHesoTLg8mTD6HwHTOSIqtb1Lln0VDtbTKsjbkGOjCWT+g9OxWn/mMJLoIUi0srQTG X-Received: by 2002:aed:2e63:: with SMTP id j90mr24264358qtd.35.1543198697796; Sun, 25 Nov 2018 18:18:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543198697; cv=none; d=google.com; s=arc-20160816; b=ryHnu1GtcyrwUS6B4IRRFYyordJVt8Jd25L5VEQ2k/o+/G9RHLSs45QYQdVN5jvMvP A97tGaZtmhTifYkZk0EorD8BIA2mIHlCjy6mQHTeL6el3JmPJAoA14OUtthTlOUUJxuc hD0ZPJLlrqEPMHSDsoPbaMImsIxEAB3IcWpkvbNMHiHCJtfquxtqKvsOEa1H1gAJAlf4 1a4mcZw1Gl3b4ufkOfR5VSmAW7pXqiLkLi1QesT+l5wbOlhRcTnAf0z1m3AnEP5qd3Kb Ii8WiF406hRG+/fFNL03/CUB2LMuYx/PIMPaxF7F7vWio6NAxrIg5+kQSZnzZ0MeETX4 oSHA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=i2RSDXiiLv4eqGo5PQxpOUk/2wBp+PkxCNDt1NMuxnk=; b=G3sGxur7LB2dhjxOjGq7N14lfbWsQHpIJcR/FQrByk2hsaI7TtO46GT2KJkHNJOOwD 1n0ThSeIcMbeE817136/XBXNSKuDsY27ZDmebUXSNlcFCKye6+RWc0ZRH60Gfoo5Ho01 FDAlVuGAydJz01Ek4wU85uiJaRtzoM11tMGX6CNBj8FFsYBqI4oUM9LpmbjvJir6s2Ps /SBLUiMKp87fmrVnMKW60wCElKYWWUsc94Hwbe1JNNnLHLLHazZmLFElDjhaTgIuvypj NuFcetjG6KyHAUf2ifJmaNn7NBh6jxKfKwFbaiqro5NaajZT1dfeEc5PdfSgBQwgs1ol itcA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ming.lei@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=ming.lei@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id c10si1577172qvi.210.2018.11.25.18.18.17 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 25 Nov 2018 18:18:17 -0800 (PST) Received-SPF: pass (google.com: domain of ming.lei@redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ming.lei@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=ming.lei@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B9DF4C0578FA; Mon, 26 Nov 2018 02:18:16 +0000 (UTC) Received: from localhost (ovpn-8-19.pek2.redhat.com [10.72.8.19]) by smtp.corp.redhat.com (Postfix) with ESMTP id EC0292CD5B; Mon, 26 Nov 2018 02:18:15 +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, Shaohua Li , 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 V12 04/20] block: don't use bio->bi_vcnt to figure out segment number Date: Mon, 26 Nov 2018 10:17:04 +0800 Message-Id: <20181126021720.19471-5-ming.lei@redhat.com> In-Reply-To: <20181126021720.19471-1-ming.lei@redhat.com> References: <20181126021720.19471-1-ming.lei@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Mon, 26 Nov 2018 02:18:17 +0000 (UTC) X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP 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: Christoph Hellwig Fixes: 76d8137a3113 ("blk-merge: recaculate segment if it isn't less than max segments") Signed-off-by: Ming Lei Reviewed-by: Omar Sandoval --- 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 e69d8f8ba819..51ec6ca56a0a 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)))