From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4FABFC43334 for ; Thu, 30 Jun 2022 21:50:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DD5BB8E0003; Thu, 30 Jun 2022 17:50:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D5BDD8E0001; Thu, 30 Jun 2022 17:50:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BAFF48E0003; Thu, 30 Jun 2022 17:50:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id A53058E0001 for ; Thu, 30 Jun 2022 17:50:22 -0400 (EDT) Received: from smtpin31.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 6D57A356D8 for ; Thu, 30 Jun 2022 21:50:22 +0000 (UTC) X-FDA: 79636246284.31.D280BD3 Received: from ale.deltatee.com (ale.deltatee.com [204.191.154.188]) by imf29.hostedemail.com (Postfix) with ESMTP id CD113120043 for ; Thu, 30 Jun 2022 21:50:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=deltatee.com; s=20200525; h=Subject:In-Reply-To:References:Cc:To:From: MIME-Version:Date:Message-ID:content-disposition; bh=L+x+wtKtqznZ9UO5BN1Gnb22+HteJcnx5QZHLC44n98=; b=Jj488gdvqsV18JMGTmwXJUFoGQ CblCro8U0WuAdM8gOpccLKuBiaeJ+nN3Lo/S6X8BXqAFs0cP2r6w1NZevOKPMvgfWS5XPLy+wMGUa X+zYUPFryGdBKNeIbU7ImfRISf0kJRkC7KKZTRuIGAssdELHIn3StAJwRXKVpZqhrr2GbIC0v4cSj m81Syv7Im4YpQ+9FQT+W6OVo5d0Z4DfA6ixTpruYVv3snPN7jhpB8k0zKK/DECdMRa2sWCkzfd3C8 phncKnrZB1O0Z7N6doBtnPrjc0e183a4KnhG+K3aYuR1g+umuSg/LOlHXUq4o8YhKeZqbn2ugJtQb dzbYLYsA==; Received: from s0106a84e3fe8c3f3.cg.shawcable.net ([24.64.144.200] helo=[192.168.0.10]) by ale.deltatee.com with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1o723B-003P1h-K8; Thu, 30 Jun 2022 15:50:14 -0600 Message-ID: <39bf0071-0acf-12fd-3d3e-06dfd87bb409@deltatee.com> Date: Thu, 30 Jun 2022 15:50:10 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0 Content-Language: en-CA From: Logan Gunthorpe To: Christoph Hellwig Cc: linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-block@vger.kernel.org, linux-pci@vger.kernel.org, linux-mm@kvack.org, iommu@lists.linux-foundation.org, Stephen Bates , Dan Williams , Jason Gunthorpe , =?UTF-8?Q?Christian_K=c3=b6nig?= , John Hubbard , Don Dutile , Matthew Wilcox , Daniel Vetter , Minturn Dave B , Jason Ekstrand , Dave Hansen , Xiong Jianxin , Bjorn Helgaas , Ira Weiny , Robin Murphy , Martin Oliveira , Chaitanya Kulkarni , Ralph Campbell References: <20220615161233.17527-1-logang@deltatee.com> <20220615161233.17527-17-logang@deltatee.com> <20220629064629.GC17576@lst.de> <7da06e08-7dd1-f37c-4382-bc59a1b1e819@deltatee.com> In-Reply-To: <7da06e08-7dd1-f37c-4382-bc59a1b1e819@deltatee.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-SA-Exim-Connect-IP: 24.64.144.200 X-SA-Exim-Rcpt-To: hch@lst.de, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-block@vger.kernel.org, linux-pci@vger.kernel.org, linux-mm@kvack.org, iommu@lists.linux-foundation.org, sbates@raithlin.com, dan.j.williams@intel.com, jgg@ziepe.ca, christian.koenig@amd.com, jhubbard@nvidia.com, ddutile@redhat.com, willy@infradead.org, daniel.vetter@ffwll.ch, dave.b.minturn@intel.com, jason@jlekstrand.net, dave.hansen@linux.intel.com, jianxin.xiong@intel.com, helgaas@kernel.org, ira.weiny@intel.com, robin.murphy@arm.com, martin.oliveira@eideticom.com, ckulkarnilinux@gmail.com, rcampbell@nvidia.com X-SA-Exim-Mail-From: logang@deltatee.com Subject: Re: [PATCH v7 16/21] block: add check when merging zone device pages X-SA-Exim-Version: 4.2.1 (built Sat, 13 Feb 2021 17:57:42 +0000) X-SA-Exim-Scanned: Yes (on ale.deltatee.com) ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1656625822; a=rsa-sha256; cv=none; b=VGrgAWHQTb4YBq05Un7SMTklDsMVQny8m472729bGH2z0DKSLtNfwuXXuv05R3xZHpTxO7 gYkDALbYwvjip1ieOT6GXyUDhffywnS3dZNVTunqynu1cQp3NlHqG5KF/ccH0gej8zTwhX Yerg7ysMv+ZR35Ji63AHa7qrrZXOYpg= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=deltatee.com header.s=20200525 header.b=Jj488gdv; dmarc=pass (policy=none) header.from=deltatee.com; spf=pass (imf29.hostedemail.com: domain of logang@deltatee.com designates 204.191.154.188 as permitted sender) smtp.mailfrom=logang@deltatee.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1656625822; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=L+x+wtKtqznZ9UO5BN1Gnb22+HteJcnx5QZHLC44n98=; b=XYWxFz/aKYA7GEfWesg/84sxP1KljOSIkPY6S9oDOIGG128kTXUzRmVYiBtPjqlJxBm9rL hJGmceWQRXr9QdS++z/+66G8T8BHd7x7Q2PuLBIwx8P1JK+9YpBJEKdUuQQcmdISj8GbZC +OvoBDmR97Qp633h5ZZyOPAEOnV1GkE= X-Stat-Signature: codrxhyc44j7qakd513eq5eswb4sh8zj X-Rspamd-Queue-Id: CD113120043 Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=deltatee.com header.s=20200525 header.b=Jj488gdv; dmarc=pass (policy=none) header.from=deltatee.com; spf=pass (imf29.hostedemail.com: domain of logang@deltatee.com designates 204.191.154.188 as permitted sender) smtp.mailfrom=logang@deltatee.com X-Rspamd-Server: rspam09 X-Rspam-User: X-HE-Tag: 1656625820-996481 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: On 2022-06-29 10:06, Logan Gunthorpe wrote: > > > > On 2022-06-29 00:46, Christoph Hellwig wrote: >> On Wed, Jun 15, 2022 at 10:12:28AM -0600, Logan Gunthorpe wrote: >>> Consecutive zone device pages should not be merged into the same sgl >>> or bvec segment with other types of pages or if they belong to different >>> pgmaps. Otherwise getting the pgmap of a given segment is not possible >>> without scanning the entire segment. This helper returns true either if >>> both pages are not zone device pages or both pages are zone device >>> pages with the same pgmap. >>> >>> Add a helper to determine if zone device pages are mergeable and use >>> this helper in page_is_mergeable(). >> >> Any reason not to simply set REQ_NOMERGE for these requests? We >> can't merge for passthrough requests anyway, and genrally don't merge >> for direct I/O either, so adding all this overhead seems a bit pointless. > > Hmm, I suppose we could also ensure that REQ_NOMERGE is set in a bio > before setting FOLL_PCI_P2PDMA in bio_map_user_iov() and > __bio_iov_iter_get_pages(). Assuming it's always set for any direct I/O. > Oh, it turns out this code has nothing to do with REQ_NOMERGE. It's used indirectly in bio_map_user_iov() and __bio_iov_iter_get_pages() when adding pages to the bio via page_is_mergeable(). So it's not about requests being merged it's about pages being merged. So I'm not sure how we can avoid this, but it only happens when two adjacent pages are added to the same bio in a row, so I don't think it's that common, but the check can probably be moved down so it happens after the same_page check to make it a little less common. Logan Logan