From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DCB7C2C83 for ; Thu, 28 Oct 2021 01:33:10 +0000 (UTC) Received: by mail-pj1-f43.google.com with SMTP id t5-20020a17090a4e4500b001a0a284fcc2so6649800pjl.2 for ; Wed, 27 Oct 2021 18:33:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel-com.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=pAiaBNCk1xnEBH3C9EMpKzrgqAPJnlmXDrtIiJ0dt1I=; b=pAV9PI3uqSjbwl4ehA+e1fD0AmJsR9RObZKjbvBijn3hthsC3BOWhi8AwEhKayTbAn +kULxKOjbDPkdJvduTRaYnTinwRQ3sTGC3RmXxOu+ZBFQAZP2dCfU0u+xx+MyQD5sCXu juQ8/OlFDYxVdxNYORCgy1YjcIYTJ/VbxjTb7UxVpCGr1z8kM8Yws8W6G4x0NWwc6hyB NrmNiLX5o2T12KN42PUJoRgcExOicwbK7jy2OCO7u+1RAggFonc1ris6SaZqTakBedPe +KiIfancYaA+JSRyfWPQcobeLcn00lylDFmKvFb7FlRzM0bgeIYcMRtTDSe9GGiatzrv LAlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=pAiaBNCk1xnEBH3C9EMpKzrgqAPJnlmXDrtIiJ0dt1I=; b=SSmpV6NrbXJA0HWDlbDSQqKVhnGeO3UcaY883M3pfpQ7eiqBUGffjLHg8EUKNE6cv1 d59pflIadjY9Um0h7KMrUUUfzSW8qIBsyGaYykDhfZbdB3oIRyMAl7LIz26p8iuA5GLG 1CbpXz82kPg+hS8ISJhRw6CDgsAUGPbp7xRE23EWlecrTafCDIvFmHoPtYG+pgpjnrVU 6yE+0xOqpFEsdqGpzG8jXNgXq3blsAsvFXf0M8WWBXJEbLTleUblW8NGkeWj1FXrZf9U g2JR03DmwjWjqxI3DwajhXp67KVkyr5h3LgF4Psq8GoJBBN4yjsOeBG8z+VavvzHpAXl 4ibA== X-Gm-Message-State: AOAM531s2vF/791tAXabhauuuy+K9udnwTaq9cF/J20Kr+IHWFGCRUnz AzRSEZs5FBMHnu84eTRxTHamPyjA6zwoLd875cMCNA== X-Google-Smtp-Source: ABdhPJxm6eCpHzum4moJkAnlQxDuj0JlmT3Vix8IBxxMECN3GUzGEt1VHXlaU6FsHMYZFBw/KnWLJLzVXyU36Brr9pk= X-Received: by 2002:a17:90b:3b88:: with SMTP id pc8mr1221700pjb.93.1635384790364; Wed, 27 Oct 2021 18:33:10 -0700 (PDT) Precedence: bulk X-Mailing-List: nvdimm@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20211018044054.1779424-1-hch@lst.de> <20211018044054.1779424-9-hch@lst.de> In-Reply-To: <20211018044054.1779424-9-hch@lst.de> From: Dan Williams Date: Wed, 27 Oct 2021 18:32:58 -0700 Message-ID: Subject: Re: [PATCH 08/11] dm-linear: add a linear_dax_pgoff helper To: Christoph Hellwig , Mike Snitzer Cc: Ira Weiny , device-mapper development , linux-xfs , Linux NVDIMM , linux-s390 , linux-fsdevel , linux-erofs@lists.ozlabs.org, linux-ext4 , virtualization@lists.linux-foundation.org Content-Type: text/plain; charset="UTF-8" On Sun, Oct 17, 2021 at 9:41 PM Christoph Hellwig wrote: > > Add a helper to perform the entire remapping for DAX accesses. This > helper open codes bdev_dax_pgoff given that the alignment checks have > already been done by the submitting file system and don't need to be > repeated. Looks good. Mike, ack? > > Signed-off-by: Christoph Hellwig > --- > drivers/md/dm-linear.c | 49 +++++++++++++----------------------------- > 1 file changed, 15 insertions(+), 34 deletions(-) > > diff --git a/drivers/md/dm-linear.c b/drivers/md/dm-linear.c > index 32fbab11bf90c..bf03f73fd0f36 100644 > --- a/drivers/md/dm-linear.c > +++ b/drivers/md/dm-linear.c > @@ -164,63 +164,44 @@ static int linear_iterate_devices(struct dm_target *ti, > } > > #if IS_ENABLED(CONFIG_FS_DAX) > +static struct dax_device *linear_dax_pgoff(struct dm_target *ti, pgoff_t *pgoff) > +{ > + struct linear_c *lc = ti->private; > + sector_t sector = linear_map_sector(ti, *pgoff << PAGE_SECTORS_SHIFT); > + > + *pgoff = (get_start_sect(lc->dev->bdev) + sector) >> PAGE_SECTORS_SHIFT; > + return lc->dev->dax_dev; > +} > + > static long linear_dax_direct_access(struct dm_target *ti, pgoff_t pgoff, > long nr_pages, void **kaddr, pfn_t *pfn) > { > - long ret; > - struct linear_c *lc = ti->private; > - struct block_device *bdev = lc->dev->bdev; > - struct dax_device *dax_dev = lc->dev->dax_dev; > - sector_t dev_sector, sector = pgoff * PAGE_SECTORS; > - > - dev_sector = linear_map_sector(ti, sector); > - ret = bdev_dax_pgoff(bdev, dev_sector, nr_pages * PAGE_SIZE, &pgoff); > - if (ret) > - return ret; > + struct dax_device *dax_dev = linear_dax_pgoff(ti, &pgoff); > + > return dax_direct_access(dax_dev, pgoff, nr_pages, kaddr, pfn); > } > > static size_t linear_dax_copy_from_iter(struct dm_target *ti, pgoff_t pgoff, > void *addr, size_t bytes, struct iov_iter *i) > { > - struct linear_c *lc = ti->private; > - struct block_device *bdev = lc->dev->bdev; > - struct dax_device *dax_dev = lc->dev->dax_dev; > - sector_t dev_sector, sector = pgoff * PAGE_SECTORS; > + struct dax_device *dax_dev = linear_dax_pgoff(ti, &pgoff); > > - dev_sector = linear_map_sector(ti, sector); > - if (bdev_dax_pgoff(bdev, dev_sector, ALIGN(bytes, PAGE_SIZE), &pgoff)) > - return 0; > return dax_copy_from_iter(dax_dev, pgoff, addr, bytes, i); > } > > static size_t linear_dax_copy_to_iter(struct dm_target *ti, pgoff_t pgoff, > void *addr, size_t bytes, struct iov_iter *i) > { > - struct linear_c *lc = ti->private; > - struct block_device *bdev = lc->dev->bdev; > - struct dax_device *dax_dev = lc->dev->dax_dev; > - sector_t dev_sector, sector = pgoff * PAGE_SECTORS; > + struct dax_device *dax_dev = linear_dax_pgoff(ti, &pgoff); > > - dev_sector = linear_map_sector(ti, sector); > - if (bdev_dax_pgoff(bdev, dev_sector, ALIGN(bytes, PAGE_SIZE), &pgoff)) > - return 0; > return dax_copy_to_iter(dax_dev, pgoff, addr, bytes, i); > } > > static int linear_dax_zero_page_range(struct dm_target *ti, pgoff_t pgoff, > size_t nr_pages) > { > - int ret; > - struct linear_c *lc = ti->private; > - struct block_device *bdev = lc->dev->bdev; > - struct dax_device *dax_dev = lc->dev->dax_dev; > - sector_t dev_sector, sector = pgoff * PAGE_SECTORS; > - > - dev_sector = linear_map_sector(ti, sector); > - ret = bdev_dax_pgoff(bdev, dev_sector, nr_pages << PAGE_SHIFT, &pgoff); > - if (ret) > - return ret; > + struct dax_device *dax_dev = linear_dax_pgoff(ti, &pgoff); > + > return dax_zero_page_range(dax_dev, pgoff, nr_pages); > } > > -- > 2.30.2 > 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 93832C433EF for ; Thu, 28 Oct 2021 01:33:16 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 445AB611C3 for ; Thu, 28 Oct 2021 01:33:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 445AB611C3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 0BC2F40226; Thu, 28 Oct 2021 01:33:16 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id F-Tly1Pj0I_l; Thu, 28 Oct 2021 01:33:14 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp4.osuosl.org (Postfix) with ESMTPS id E98B440218; Thu, 28 Oct 2021 01:33:13 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id BED5FC0012; Thu, 28 Oct 2021 01:33:13 +0000 (UTC) Received: from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136]) by lists.linuxfoundation.org (Postfix) with ESMTP id 59474C000E for ; Thu, 28 Oct 2021 01:33:12 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 2BC88606DA for ; Thu, 28 Oct 2021 01:33:12 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp3.osuosl.org (amavisd-new); dkim=pass (2048-bit key) header.d=intel-com.20210112.gappssmtp.com Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 86KrFZc01lK9 for ; Thu, 28 Oct 2021 01:33:10 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 Received: from mail-pj1-x102e.google.com (mail-pj1-x102e.google.com [IPv6:2607:f8b0:4864:20::102e]) by smtp3.osuosl.org (Postfix) with ESMTPS id E9BCC60682 for ; Thu, 28 Oct 2021 01:33:10 +0000 (UTC) Received: by mail-pj1-x102e.google.com with SMTP id oa12-20020a17090b1bcc00b0019f715462a8so3426190pjb.3 for ; Wed, 27 Oct 2021 18:33:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel-com.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=pAiaBNCk1xnEBH3C9EMpKzrgqAPJnlmXDrtIiJ0dt1I=; b=pAV9PI3uqSjbwl4ehA+e1fD0AmJsR9RObZKjbvBijn3hthsC3BOWhi8AwEhKayTbAn +kULxKOjbDPkdJvduTRaYnTinwRQ3sTGC3RmXxOu+ZBFQAZP2dCfU0u+xx+MyQD5sCXu juQ8/OlFDYxVdxNYORCgy1YjcIYTJ/VbxjTb7UxVpCGr1z8kM8Yws8W6G4x0NWwc6hyB NrmNiLX5o2T12KN42PUJoRgcExOicwbK7jy2OCO7u+1RAggFonc1ris6SaZqTakBedPe +KiIfancYaA+JSRyfWPQcobeLcn00lylDFmKvFb7FlRzM0bgeIYcMRtTDSe9GGiatzrv LAlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=pAiaBNCk1xnEBH3C9EMpKzrgqAPJnlmXDrtIiJ0dt1I=; b=sH4Ez08L4qhu0AwXpRJvtnozqYhuc0HgDbj36VoD8FJxHQRGetX4vF1OQ3OdLSV3kk v+bBiHTpvs+Z5BFqN6mn/ys17S/UfQcZqR+OC66wfTWMa/HI/PNYHL4zIwqqFOzMYJ76 WgDPVV5D+1qgdz6PesyHAHSF5k5V7p+R74TCLJ3rlqEQYQaQ9pjWPjr+jAm/9x6GJF9C LMGcF1aNOO0jazFFDw8j1fXJBYqmi4QmczkOVFAPvg2y3mAyEAmApuObaGljfFofH1T0 l0Ko/QPQmKXW7mVaQFsr5ZL8UdI0npRTgFDrNhMN5rBCY+8B9mZFfMYZHuHEy8wz2xqM +nag== X-Gm-Message-State: AOAM53215V/fiA5HU/LhB2GjJVpLJZfji8D6qzjmT8ABOr/obd591v6X 49dLmgkvZOi6D/FvcoHGNgkmDu6sbVyLiG98utoBYg== X-Google-Smtp-Source: ABdhPJxm6eCpHzum4moJkAnlQxDuj0JlmT3Vix8IBxxMECN3GUzGEt1VHXlaU6FsHMYZFBw/KnWLJLzVXyU36Brr9pk= X-Received: by 2002:a17:90b:3b88:: with SMTP id pc8mr1221700pjb.93.1635384790364; Wed, 27 Oct 2021 18:33:10 -0700 (PDT) MIME-Version: 1.0 References: <20211018044054.1779424-1-hch@lst.de> <20211018044054.1779424-9-hch@lst.de> In-Reply-To: <20211018044054.1779424-9-hch@lst.de> From: Dan Williams Date: Wed, 27 Oct 2021 18:32:58 -0700 Message-ID: Subject: Re: [PATCH 08/11] dm-linear: add a linear_dax_pgoff helper To: Christoph Hellwig , Mike Snitzer Cc: Linux NVDIMM , linux-s390 , linux-erofs@lists.ozlabs.org, virtualization@lists.linux-foundation.org, linux-xfs , device-mapper development , linux-fsdevel , linux-ext4 , Ira Weiny X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" On Sun, Oct 17, 2021 at 9:41 PM Christoph Hellwig wrote: > > Add a helper to perform the entire remapping for DAX accesses. This > helper open codes bdev_dax_pgoff given that the alignment checks have > already been done by the submitting file system and don't need to be > repeated. Looks good. Mike, ack? > > Signed-off-by: Christoph Hellwig > --- > drivers/md/dm-linear.c | 49 +++++++++++++----------------------------- > 1 file changed, 15 insertions(+), 34 deletions(-) > > diff --git a/drivers/md/dm-linear.c b/drivers/md/dm-linear.c > index 32fbab11bf90c..bf03f73fd0f36 100644 > --- a/drivers/md/dm-linear.c > +++ b/drivers/md/dm-linear.c > @@ -164,63 +164,44 @@ static int linear_iterate_devices(struct dm_target *ti, > } > > #if IS_ENABLED(CONFIG_FS_DAX) > +static struct dax_device *linear_dax_pgoff(struct dm_target *ti, pgoff_t *pgoff) > +{ > + struct linear_c *lc = ti->private; > + sector_t sector = linear_map_sector(ti, *pgoff << PAGE_SECTORS_SHIFT); > + > + *pgoff = (get_start_sect(lc->dev->bdev) + sector) >> PAGE_SECTORS_SHIFT; > + return lc->dev->dax_dev; > +} > + > static long linear_dax_direct_access(struct dm_target *ti, pgoff_t pgoff, > long nr_pages, void **kaddr, pfn_t *pfn) > { > - long ret; > - struct linear_c *lc = ti->private; > - struct block_device *bdev = lc->dev->bdev; > - struct dax_device *dax_dev = lc->dev->dax_dev; > - sector_t dev_sector, sector = pgoff * PAGE_SECTORS; > - > - dev_sector = linear_map_sector(ti, sector); > - ret = bdev_dax_pgoff(bdev, dev_sector, nr_pages * PAGE_SIZE, &pgoff); > - if (ret) > - return ret; > + struct dax_device *dax_dev = linear_dax_pgoff(ti, &pgoff); > + > return dax_direct_access(dax_dev, pgoff, nr_pages, kaddr, pfn); > } > > static size_t linear_dax_copy_from_iter(struct dm_target *ti, pgoff_t pgoff, > void *addr, size_t bytes, struct iov_iter *i) > { > - struct linear_c *lc = ti->private; > - struct block_device *bdev = lc->dev->bdev; > - struct dax_device *dax_dev = lc->dev->dax_dev; > - sector_t dev_sector, sector = pgoff * PAGE_SECTORS; > + struct dax_device *dax_dev = linear_dax_pgoff(ti, &pgoff); > > - dev_sector = linear_map_sector(ti, sector); > - if (bdev_dax_pgoff(bdev, dev_sector, ALIGN(bytes, PAGE_SIZE), &pgoff)) > - return 0; > return dax_copy_from_iter(dax_dev, pgoff, addr, bytes, i); > } > > static size_t linear_dax_copy_to_iter(struct dm_target *ti, pgoff_t pgoff, > void *addr, size_t bytes, struct iov_iter *i) > { > - struct linear_c *lc = ti->private; > - struct block_device *bdev = lc->dev->bdev; > - struct dax_device *dax_dev = lc->dev->dax_dev; > - sector_t dev_sector, sector = pgoff * PAGE_SECTORS; > + struct dax_device *dax_dev = linear_dax_pgoff(ti, &pgoff); > > - dev_sector = linear_map_sector(ti, sector); > - if (bdev_dax_pgoff(bdev, dev_sector, ALIGN(bytes, PAGE_SIZE), &pgoff)) > - return 0; > return dax_copy_to_iter(dax_dev, pgoff, addr, bytes, i); > } > > static int linear_dax_zero_page_range(struct dm_target *ti, pgoff_t pgoff, > size_t nr_pages) > { > - int ret; > - struct linear_c *lc = ti->private; > - struct block_device *bdev = lc->dev->bdev; > - struct dax_device *dax_dev = lc->dev->dax_dev; > - sector_t dev_sector, sector = pgoff * PAGE_SECTORS; > - > - dev_sector = linear_map_sector(ti, sector); > - ret = bdev_dax_pgoff(bdev, dev_sector, nr_pages << PAGE_SHIFT, &pgoff); > - if (ret) > - return ret; > + struct dax_device *dax_dev = linear_dax_pgoff(ti, &pgoff); > + > return dax_zero_page_range(dax_dev, pgoff, nr_pages); > } > > -- > 2.30.2 > _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 571B5C433F5 for ; Thu, 28 Oct 2021 01:33:25 +0000 (UTC) Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9B0A361184 for ; Thu, 28 Oct 2021 01:33:24 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 9B0A361184 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.ozlabs.org Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4Hfp3l0FDQz2yMN for ; Thu, 28 Oct 2021 12:33:23 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=intel-com.20210112.gappssmtp.com header.i=@intel-com.20210112.gappssmtp.com header.a=rsa-sha256 header.s=20210112 header.b=pAV9PI3u; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=intel.com (client-ip=2607:f8b0:4864:20::102c; helo=mail-pj1-x102c.google.com; envelope-from=dan.j.williams@intel.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=intel-com.20210112.gappssmtp.com header.i=@intel-com.20210112.gappssmtp.com header.a=rsa-sha256 header.s=20210112 header.b=pAV9PI3u; dkim-atps=neutral Received: from mail-pj1-x102c.google.com (mail-pj1-x102c.google.com [IPv6:2607:f8b0:4864:20::102c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4Hfp3b2pZhz2xgP for ; Thu, 28 Oct 2021 12:33:13 +1100 (AEDT) Received: by mail-pj1-x102c.google.com with SMTP id n11-20020a17090a2bcb00b001a1e7a0a6a6so6678121pje.0 for ; Wed, 27 Oct 2021 18:33:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel-com.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=pAiaBNCk1xnEBH3C9EMpKzrgqAPJnlmXDrtIiJ0dt1I=; b=pAV9PI3uqSjbwl4ehA+e1fD0AmJsR9RObZKjbvBijn3hthsC3BOWhi8AwEhKayTbAn +kULxKOjbDPkdJvduTRaYnTinwRQ3sTGC3RmXxOu+ZBFQAZP2dCfU0u+xx+MyQD5sCXu juQ8/OlFDYxVdxNYORCgy1YjcIYTJ/VbxjTb7UxVpCGr1z8kM8Yws8W6G4x0NWwc6hyB NrmNiLX5o2T12KN42PUJoRgcExOicwbK7jy2OCO7u+1RAggFonc1ris6SaZqTakBedPe +KiIfancYaA+JSRyfWPQcobeLcn00lylDFmKvFb7FlRzM0bgeIYcMRtTDSe9GGiatzrv LAlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=pAiaBNCk1xnEBH3C9EMpKzrgqAPJnlmXDrtIiJ0dt1I=; b=hOmYtaltVGzg2rp2/tmQJXr06NoxSXEnyyBOi4EIlol0NKt4BHkAAWLAPSkvB0T44Q 3T1qVFYC53ESTULe66NQ1aFdcXcldHzpXI9ibUH1ZNoo7HN4sJ//GZc2Psmjl7M6t63S GUV/ifwJVGiN6CMwg/2SATze1cg8LcOouefgGYxvnZ7NY5+FhgYvfGttXAtlq2gtMQix +HDApqJuPYCis2/yna8cai1q5wP+fgcMPOlZwdcAiqT/G12HMWtpsY7ijHabFdA7ocUu WphWamO2NYHG0aMsWd6k0pRTd2t6sKNDS8csnFG++zSKpQId3U8rCaTtsxHMxC6Ws2Yy V/vw== X-Gm-Message-State: AOAM533RBYX2Jx14uliUvmP7uolWQnPMavMWXimqKLnX0CGODACuQ2TG zPiXe1NTyvqQ2J+/+QLJcA4geEq4nfgv/Dgke+UBVA== X-Google-Smtp-Source: ABdhPJxm6eCpHzum4moJkAnlQxDuj0JlmT3Vix8IBxxMECN3GUzGEt1VHXlaU6FsHMYZFBw/KnWLJLzVXyU36Brr9pk= X-Received: by 2002:a17:90b:3b88:: with SMTP id pc8mr1221700pjb.93.1635384790364; Wed, 27 Oct 2021 18:33:10 -0700 (PDT) MIME-Version: 1.0 References: <20211018044054.1779424-1-hch@lst.de> <20211018044054.1779424-9-hch@lst.de> In-Reply-To: <20211018044054.1779424-9-hch@lst.de> From: Dan Williams Date: Wed, 27 Oct 2021 18:32:58 -0700 Message-ID: Subject: Re: [PATCH 08/11] dm-linear: add a linear_dax_pgoff helper To: Christoph Hellwig , Mike Snitzer Content-Type: text/plain; charset="UTF-8" X-BeenThere: linux-erofs@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development of Linux EROFS file system List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Linux NVDIMM , linux-s390 , linux-erofs@lists.ozlabs.org, virtualization@lists.linux-foundation.org, linux-xfs , device-mapper development , linux-fsdevel , linux-ext4 , Ira Weiny Errors-To: linux-erofs-bounces+linux-erofs=archiver.kernel.org@lists.ozlabs.org Sender: "Linux-erofs" On Sun, Oct 17, 2021 at 9:41 PM Christoph Hellwig wrote: > > Add a helper to perform the entire remapping for DAX accesses. This > helper open codes bdev_dax_pgoff given that the alignment checks have > already been done by the submitting file system and don't need to be > repeated. Looks good. Mike, ack? > > Signed-off-by: Christoph Hellwig > --- > drivers/md/dm-linear.c | 49 +++++++++++++----------------------------- > 1 file changed, 15 insertions(+), 34 deletions(-) > > diff --git a/drivers/md/dm-linear.c b/drivers/md/dm-linear.c > index 32fbab11bf90c..bf03f73fd0f36 100644 > --- a/drivers/md/dm-linear.c > +++ b/drivers/md/dm-linear.c > @@ -164,63 +164,44 @@ static int linear_iterate_devices(struct dm_target *ti, > } > > #if IS_ENABLED(CONFIG_FS_DAX) > +static struct dax_device *linear_dax_pgoff(struct dm_target *ti, pgoff_t *pgoff) > +{ > + struct linear_c *lc = ti->private; > + sector_t sector = linear_map_sector(ti, *pgoff << PAGE_SECTORS_SHIFT); > + > + *pgoff = (get_start_sect(lc->dev->bdev) + sector) >> PAGE_SECTORS_SHIFT; > + return lc->dev->dax_dev; > +} > + > static long linear_dax_direct_access(struct dm_target *ti, pgoff_t pgoff, > long nr_pages, void **kaddr, pfn_t *pfn) > { > - long ret; > - struct linear_c *lc = ti->private; > - struct block_device *bdev = lc->dev->bdev; > - struct dax_device *dax_dev = lc->dev->dax_dev; > - sector_t dev_sector, sector = pgoff * PAGE_SECTORS; > - > - dev_sector = linear_map_sector(ti, sector); > - ret = bdev_dax_pgoff(bdev, dev_sector, nr_pages * PAGE_SIZE, &pgoff); > - if (ret) > - return ret; > + struct dax_device *dax_dev = linear_dax_pgoff(ti, &pgoff); > + > return dax_direct_access(dax_dev, pgoff, nr_pages, kaddr, pfn); > } > > static size_t linear_dax_copy_from_iter(struct dm_target *ti, pgoff_t pgoff, > void *addr, size_t bytes, struct iov_iter *i) > { > - struct linear_c *lc = ti->private; > - struct block_device *bdev = lc->dev->bdev; > - struct dax_device *dax_dev = lc->dev->dax_dev; > - sector_t dev_sector, sector = pgoff * PAGE_SECTORS; > + struct dax_device *dax_dev = linear_dax_pgoff(ti, &pgoff); > > - dev_sector = linear_map_sector(ti, sector); > - if (bdev_dax_pgoff(bdev, dev_sector, ALIGN(bytes, PAGE_SIZE), &pgoff)) > - return 0; > return dax_copy_from_iter(dax_dev, pgoff, addr, bytes, i); > } > > static size_t linear_dax_copy_to_iter(struct dm_target *ti, pgoff_t pgoff, > void *addr, size_t bytes, struct iov_iter *i) > { > - struct linear_c *lc = ti->private; > - struct block_device *bdev = lc->dev->bdev; > - struct dax_device *dax_dev = lc->dev->dax_dev; > - sector_t dev_sector, sector = pgoff * PAGE_SECTORS; > + struct dax_device *dax_dev = linear_dax_pgoff(ti, &pgoff); > > - dev_sector = linear_map_sector(ti, sector); > - if (bdev_dax_pgoff(bdev, dev_sector, ALIGN(bytes, PAGE_SIZE), &pgoff)) > - return 0; > return dax_copy_to_iter(dax_dev, pgoff, addr, bytes, i); > } > > static int linear_dax_zero_page_range(struct dm_target *ti, pgoff_t pgoff, > size_t nr_pages) > { > - int ret; > - struct linear_c *lc = ti->private; > - struct block_device *bdev = lc->dev->bdev; > - struct dax_device *dax_dev = lc->dev->dax_dev; > - sector_t dev_sector, sector = pgoff * PAGE_SECTORS; > - > - dev_sector = linear_map_sector(ti, sector); > - ret = bdev_dax_pgoff(bdev, dev_sector, nr_pages << PAGE_SHIFT, &pgoff); > - if (ret) > - return ret; > + struct dax_device *dax_dev = linear_dax_pgoff(ti, &pgoff); > + > return dax_zero_page_range(dax_dev, pgoff, nr_pages); > } > > -- > 2.30.2 > 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5BBD0C433EF for ; Thu, 28 Oct 2021 01:37:06 +0000 (UTC) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A54C660D07 for ; Thu, 28 Oct 2021 01:37:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org A54C660D07 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=redhat.com Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-178-27DmAKwjOWGs7Ov3MLVu2g-1; Wed, 27 Oct 2021 21:37:00 -0400 X-MC-Unique: 27DmAKwjOWGs7Ov3MLVu2g-1 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 mimecast-mx01.redhat.com (Postfix) with ESMTPS id 87EE2362F9; Thu, 28 Oct 2021 01:36:56 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6168169FA0; Thu, 28 Oct 2021 01:36:56 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 1BEFE1800B9E; Thu, 28 Oct 2021 01:36:56 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 19S1XKQS028443 for ; Wed, 27 Oct 2021 21:33:20 -0400 Received: by smtp.corp.redhat.com (Postfix) id 11EEE2144B22; Thu, 28 Oct 2021 01:33:20 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast03.extmail.prod.ext.rdu2.redhat.com [10.11.55.19]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0C46E2144B20 for ; Thu, 28 Oct 2021 01:33:15 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 28764811E7F for ; Thu, 28 Oct 2021 01:33:15 +0000 (UTC) Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-6-P6mT_bjAN5CoNuA3YsgBEw-1; Wed, 27 Oct 2021 21:33:11 -0400 X-MC-Unique: P6mT_bjAN5CoNuA3YsgBEw-1 Received: by mail-pj1-f46.google.com with SMTP id lx5-20020a17090b4b0500b001a262880e99so3419476pjb.5 for ; Wed, 27 Oct 2021 18:33:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=pAiaBNCk1xnEBH3C9EMpKzrgqAPJnlmXDrtIiJ0dt1I=; b=G/cgUWsMtQ3AILOL4Dfq2pgjeUmtxEiaMsHZGK2QhAQsY3b4UY/GGDbctunoDiZs2j Is51yuu2a4YccHygaSCGalMDSrzCdvK/ALUZoG/gd2dHOEbvppl5Oac6JM8wUKxtStsp 4JkFREOtSBx6+6XL6/iYtT0X3ugr+TbP7cXr/wvQCjdKWv0ov2ms/5YEbtNXV4Xm48EH IQnvsaM5OwOA17lzqBL6Yl/XSAr/WZd+6PEwLyJW2ACEsM1QyOXz+B+aqfmsn7gxXkgJ hzKNz0wqXjBDthZbGv5bmuhAfKmHVw7SFwuCUkfLUd2UOWGrxLgJWtVGEgRAEVeToGUE XXgw== X-Gm-Message-State: AOAM531RlEslmsVxFnOLuun0HrlPOjI8FD9QitwYMmjdR57AHt10f9XS mE6nz5ZgyWU6/0hlv4x6qAU/1ynaD2nqpSHF7X8ceQ== X-Google-Smtp-Source: ABdhPJxm6eCpHzum4moJkAnlQxDuj0JlmT3Vix8IBxxMECN3GUzGEt1VHXlaU6FsHMYZFBw/KnWLJLzVXyU36Brr9pk= X-Received: by 2002:a17:90b:3b88:: with SMTP id pc8mr1221700pjb.93.1635384790364; Wed, 27 Oct 2021 18:33:10 -0700 (PDT) MIME-Version: 1.0 References: <20211018044054.1779424-1-hch@lst.de> <20211018044054.1779424-9-hch@lst.de> In-Reply-To: <20211018044054.1779424-9-hch@lst.de> From: Dan Williams Date: Wed, 27 Oct 2021 18:32:58 -0700 Message-ID: To: Christoph Hellwig , Mike Snitzer X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-loop: dm-devel@redhat.com Cc: Linux NVDIMM , linux-s390 , linux-erofs@lists.ozlabs.org, virtualization@lists.linux-foundation.org, linux-xfs , device-mapper development , linux-fsdevel , linux-ext4 , Ira Weiny Subject: Re: [dm-devel] [PATCH 08/11] dm-linear: add a linear_dax_pgoff helper X-BeenThere: dm-devel@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: device-mapper development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=dm-devel-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit On Sun, Oct 17, 2021 at 9:41 PM Christoph Hellwig wrote: > > Add a helper to perform the entire remapping for DAX accesses. This > helper open codes bdev_dax_pgoff given that the alignment checks have > already been done by the submitting file system and don't need to be > repeated. Looks good. Mike, ack? > > Signed-off-by: Christoph Hellwig > --- > drivers/md/dm-linear.c | 49 +++++++++++++----------------------------- > 1 file changed, 15 insertions(+), 34 deletions(-) > > diff --git a/drivers/md/dm-linear.c b/drivers/md/dm-linear.c > index 32fbab11bf90c..bf03f73fd0f36 100644 > --- a/drivers/md/dm-linear.c > +++ b/drivers/md/dm-linear.c > @@ -164,63 +164,44 @@ static int linear_iterate_devices(struct dm_target *ti, > } > > #if IS_ENABLED(CONFIG_FS_DAX) > +static struct dax_device *linear_dax_pgoff(struct dm_target *ti, pgoff_t *pgoff) > +{ > + struct linear_c *lc = ti->private; > + sector_t sector = linear_map_sector(ti, *pgoff << PAGE_SECTORS_SHIFT); > + > + *pgoff = (get_start_sect(lc->dev->bdev) + sector) >> PAGE_SECTORS_SHIFT; > + return lc->dev->dax_dev; > +} > + > static long linear_dax_direct_access(struct dm_target *ti, pgoff_t pgoff, > long nr_pages, void **kaddr, pfn_t *pfn) > { > - long ret; > - struct linear_c *lc = ti->private; > - struct block_device *bdev = lc->dev->bdev; > - struct dax_device *dax_dev = lc->dev->dax_dev; > - sector_t dev_sector, sector = pgoff * PAGE_SECTORS; > - > - dev_sector = linear_map_sector(ti, sector); > - ret = bdev_dax_pgoff(bdev, dev_sector, nr_pages * PAGE_SIZE, &pgoff); > - if (ret) > - return ret; > + struct dax_device *dax_dev = linear_dax_pgoff(ti, &pgoff); > + > return dax_direct_access(dax_dev, pgoff, nr_pages, kaddr, pfn); > } > > static size_t linear_dax_copy_from_iter(struct dm_target *ti, pgoff_t pgoff, > void *addr, size_t bytes, struct iov_iter *i) > { > - struct linear_c *lc = ti->private; > - struct block_device *bdev = lc->dev->bdev; > - struct dax_device *dax_dev = lc->dev->dax_dev; > - sector_t dev_sector, sector = pgoff * PAGE_SECTORS; > + struct dax_device *dax_dev = linear_dax_pgoff(ti, &pgoff); > > - dev_sector = linear_map_sector(ti, sector); > - if (bdev_dax_pgoff(bdev, dev_sector, ALIGN(bytes, PAGE_SIZE), &pgoff)) > - return 0; > return dax_copy_from_iter(dax_dev, pgoff, addr, bytes, i); > } > > static size_t linear_dax_copy_to_iter(struct dm_target *ti, pgoff_t pgoff, > void *addr, size_t bytes, struct iov_iter *i) > { > - struct linear_c *lc = ti->private; > - struct block_device *bdev = lc->dev->bdev; > - struct dax_device *dax_dev = lc->dev->dax_dev; > - sector_t dev_sector, sector = pgoff * PAGE_SECTORS; > + struct dax_device *dax_dev = linear_dax_pgoff(ti, &pgoff); > > - dev_sector = linear_map_sector(ti, sector); > - if (bdev_dax_pgoff(bdev, dev_sector, ALIGN(bytes, PAGE_SIZE), &pgoff)) > - return 0; > return dax_copy_to_iter(dax_dev, pgoff, addr, bytes, i); > } > > static int linear_dax_zero_page_range(struct dm_target *ti, pgoff_t pgoff, > size_t nr_pages) > { > - int ret; > - struct linear_c *lc = ti->private; > - struct block_device *bdev = lc->dev->bdev; > - struct dax_device *dax_dev = lc->dev->dax_dev; > - sector_t dev_sector, sector = pgoff * PAGE_SECTORS; > - > - dev_sector = linear_map_sector(ti, sector); > - ret = bdev_dax_pgoff(bdev, dev_sector, nr_pages << PAGE_SHIFT, &pgoff); > - if (ret) > - return ret; > + struct dax_device *dax_dev = linear_dax_pgoff(ti, &pgoff); > + > return dax_zero_page_range(dax_dev, pgoff, nr_pages); > } > > -- > 2.30.2 > -- dm-devel mailing list dm-devel@redhat.com https://listman.redhat.com/mailman/listinfo/dm-devel