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 X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D52B0C47082 for ; Fri, 4 Jun 2021 01:19:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C05DF613F1 for ; Fri, 4 Jun 2021 01:19:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230106AbhFDBVC (ORCPT ); Thu, 3 Jun 2021 21:21:02 -0400 Received: from mail.cn.fujitsu.com ([183.91.158.132]:12829 "EHLO heian.cn.fujitsu.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S230053AbhFDBUz (ORCPT ); Thu, 3 Jun 2021 21:20:55 -0400 IronPort-HdrOrdr: =?us-ascii?q?A9a23=3AJRAGG6qYgVw+29Uknxze6CEaV5pOeYIsimQD?= =?us-ascii?q?101hICG9E/b5qynAppkmPHPP4gr5O0tApTnjAsa9qBrnnPYf3WB4B8bAYOCMgg?= =?us-ascii?q?eVxe9Zg7ff/w=3D=3D?= X-IronPort-AV: E=Sophos;i="5.83,246,1616428800"; d="scan'208";a="109209807" Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 04 Jun 2021 09:19:06 +0800 Received: from G08CNEXMBPEKD05.g08.fujitsu.local (unknown [10.167.33.204]) by cn.fujitsu.com (Postfix) with ESMTP id 77CCF4C369E0; Fri, 4 Jun 2021 09:19:06 +0800 (CST) Received: from G08CNEXCHPEKD07.g08.fujitsu.local (10.167.33.80) by G08CNEXMBPEKD05.g08.fujitsu.local (10.167.33.204) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 4 Jun 2021 09:18:55 +0800 Received: from irides.mr.mr.mr (10.167.225.141) by G08CNEXCHPEKD07.g08.fujitsu.local (10.167.33.209) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 4 Jun 2021 09:18:55 +0800 From: Shiyang Ruan To: , , , , , CC: , , , , , , Subject: [PATCH v4 06/10] fs/dax: Implement dax_holder_operations Date: Fri, 4 Jun 2021 09:18:40 +0800 Message-ID: <20210604011844.1756145-7-ruansy.fnst@fujitsu.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210604011844.1756145-1-ruansy.fnst@fujitsu.com> References: <20210604011844.1756145-1-ruansy.fnst@fujitsu.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-yoursite-MailScanner-ID: 77CCF4C369E0.A2269 X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: ruansy.fnst@fujitsu.com Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is the case where the holder represents a filesystem. The offset translation from disk to block device is needed before we calling ->corrupted_range(). When a specific filesystem is being mounted, we use dax_set_holder() to associate it with the dax_device. Signed-off-by: Shiyang Ruan --- fs/dax.c | 16 ++++++++++++++++ include/linux/dax.h | 2 ++ 2 files changed, 18 insertions(+) diff --git a/fs/dax.c b/fs/dax.c index 58faca85455a..1a7473f46df2 100644 --- a/fs/dax.c +++ b/fs/dax.c @@ -1762,3 +1762,19 @@ vm_fault_t dax_finish_sync_fault(struct vm_fault *vmf, return dax_insert_pfn_mkwrite(vmf, pfn, order); } EXPORT_SYMBOL_GPL(dax_finish_sync_fault); + +static int fs_dax_corrupted_range(struct dax_device *dax_dev, + struct block_device *bdev, loff_t offset, size_t size, + void *data) +{ + struct super_block *sb = dax_get_holder(dax_dev); + loff_t bdev_off = offset - (get_start_sect(bdev) << SECTOR_SHIFT); + + if (!sb->s_op->corrupted_range) + return -EOPNOTSUPP; + return sb->s_op->corrupted_range(sb, bdev, bdev_off, size, data); +} + +const struct dax_holder_operations fs_dax_holder_ops = { + .corrupted_range = fs_dax_corrupted_range, +}; \ No newline at end of file diff --git a/include/linux/dax.h b/include/linux/dax.h index 6e758daa5004..b35b3b8959a5 100644 --- a/include/linux/dax.h +++ b/include/linux/dax.h @@ -254,6 +254,8 @@ static inline bool dax_mapping(struct address_space *mapping) return mapping->host && IS_DAX(mapping->host); } +extern const struct dax_holder_operations fs_dax_holder_ops; + #ifdef CONFIG_DEV_DAX_HMEM_DEVICES void hmem_register_device(int target_nid, struct resource *r); #else -- 2.31.1 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 X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 39D2CC47098 for ; Fri, 4 Jun 2021 06:28:05 +0000 (UTC) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.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 9FCDD61405 for ; Fri, 4 Jun 2021 06:28:04 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9FCDD61405 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=fujitsu.com Authentication-Results: mail.kernel.org; spf=tempfail smtp.mailfrom=dm-devel-bounces@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-153-oCmORRvnPVa4mWmoJTzuHw-1; Fri, 04 Jun 2021 02:28:00 -0400 X-MC-Unique: oCmORRvnPVa4mWmoJTzuHw-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E5750107ACF4; Fri, 4 Jun 2021 06:27:55 +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 C6DDB5D9F2; Fri, 4 Jun 2021 06:27:55 +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 95FC9180C69B; Fri, 4 Jun 2021 06:27:55 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 1541KE7Z026803 for ; Thu, 3 Jun 2021 21:20:14 -0400 Received: by smtp.corp.redhat.com (Postfix) id 0DABC21144D1; Fri, 4 Jun 2021 01:20:14 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast04.extmail.prod.ext.rdu2.redhat.com [10.11.55.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0936321144C6 for ; Fri, 4 Jun 2021 01:20:14 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (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 E5515101A531 for ; Fri, 4 Jun 2021 01:20:13 +0000 (UTC) Received: from heian.cn.fujitsu.com (mail.cn.fujitsu.com [183.91.158.132]) by relay.mimecast.com with ESMTP id us-mta-89-7KVYDoBuM6y3H4RtKFoqTw-1; Thu, 03 Jun 2021 21:20:12 -0400 X-MC-Unique: 7KVYDoBuM6y3H4RtKFoqTw-1 IronPort-HdrOrdr: =?us-ascii?q?A9a23=3AJRAGG6qYgVw+29Uknxze6CEaV5pOeYIsimQD?= =?us-ascii?q?101hICG9E/b5qynAppkmPHPP4gr5O0tApTnjAsa9qBrnnPYf3WB4B8bAYOCMgg?= =?us-ascii?q?eVxe9Zg7ff/w=3D=3D?= X-IronPort-AV: E=Sophos;i="5.83,246,1616428800"; d="scan'208";a="109209807" Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 04 Jun 2021 09:19:06 +0800 Received: from G08CNEXMBPEKD05.g08.fujitsu.local (unknown [10.167.33.204]) by cn.fujitsu.com (Postfix) with ESMTP id 77CCF4C369E0; Fri, 4 Jun 2021 09:19:06 +0800 (CST) Received: from G08CNEXCHPEKD07.g08.fujitsu.local (10.167.33.80) by G08CNEXMBPEKD05.g08.fujitsu.local (10.167.33.204) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 4 Jun 2021 09:18:55 +0800 Received: from irides.mr.mr.mr (10.167.225.141) by G08CNEXCHPEKD07.g08.fujitsu.local (10.167.33.209) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 4 Jun 2021 09:18:55 +0800 From: Shiyang Ruan To: , , , , , Date: Fri, 4 Jun 2021 09:18:40 +0800 Message-ID: <20210604011844.1756145-7-ruansy.fnst@fujitsu.com> In-Reply-To: <20210604011844.1756145-1-ruansy.fnst@fujitsu.com> References: <20210604011844.1756145-1-ruansy.fnst@fujitsu.com> MIME-Version: 1.0 X-yoursite-MailScanner-ID: 77CCF4C369E0.A2269 X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: ruansy.fnst@fujitsu.com 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.4 X-loop: dm-devel@redhat.com X-Mailman-Approved-At: Fri, 04 Jun 2021 02:21:36 -0400 Cc: snitzer@redhat.com, darrick.wong@oracle.com, rgoldwyn@suse.de, david@fromorbit.com, dan.j.williams@intel.com, hch@lst.de, agk@redhat.com Subject: [dm-devel] [PATCH v4 06/10] fs/dax: Implement dax_holder_operations 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.14 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 This is the case where the holder represents a filesystem. The offset translation from disk to block device is needed before we calling ->corrupted_range(). When a specific filesystem is being mounted, we use dax_set_holder() to associate it with the dax_device. Signed-off-by: Shiyang Ruan --- fs/dax.c | 16 ++++++++++++++++ include/linux/dax.h | 2 ++ 2 files changed, 18 insertions(+) diff --git a/fs/dax.c b/fs/dax.c index 58faca85455a..1a7473f46df2 100644 --- a/fs/dax.c +++ b/fs/dax.c @@ -1762,3 +1762,19 @@ vm_fault_t dax_finish_sync_fault(struct vm_fault *vmf, return dax_insert_pfn_mkwrite(vmf, pfn, order); } EXPORT_SYMBOL_GPL(dax_finish_sync_fault); + +static int fs_dax_corrupted_range(struct dax_device *dax_dev, + struct block_device *bdev, loff_t offset, size_t size, + void *data) +{ + struct super_block *sb = dax_get_holder(dax_dev); + loff_t bdev_off = offset - (get_start_sect(bdev) << SECTOR_SHIFT); + + if (!sb->s_op->corrupted_range) + return -EOPNOTSUPP; + return sb->s_op->corrupted_range(sb, bdev, bdev_off, size, data); +} + +const struct dax_holder_operations fs_dax_holder_ops = { + .corrupted_range = fs_dax_corrupted_range, +}; \ No newline at end of file diff --git a/include/linux/dax.h b/include/linux/dax.h index 6e758daa5004..b35b3b8959a5 100644 --- a/include/linux/dax.h +++ b/include/linux/dax.h @@ -254,6 +254,8 @@ static inline bool dax_mapping(struct address_space *mapping) return mapping->host && IS_DAX(mapping->host); } +extern const struct dax_holder_operations fs_dax_holder_ops; + #ifdef CONFIG_DEV_DAX_HMEM_DEVICES void hmem_register_device(int target_nid, struct resource *r); #else -- 2.31.1 -- dm-devel mailing list dm-devel@redhat.com https://listman.redhat.com/mailman/listinfo/dm-devel