Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp10693370pxu; Wed, 30 Dec 2020 09:04:26 -0800 (PST) X-Google-Smtp-Source: ABdhPJwAycjAm/bIBwneL/wXLIvGnCuB87X5CuTklWXqqs/GekarRzIclX8MErmNqngc1zQey0T/ X-Received: by 2002:a17:907:961b:: with SMTP id gb27mr32240985ejc.313.1609347866123; Wed, 30 Dec 2020 09:04:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1609347866; cv=none; d=google.com; s=arc-20160816; b=KF9pOcYfYxecKAwEcrVHo5TXxH9CCe6aAGfxFHw9DgccLGFmmwwQa1f1rWSzN6pTMd cbnrIlEferCMDWcm4KdWWZ1BOnJf4gc6qkG1XiWBawmSNeyisz1IIuTfieViyH09YfTy tNWkpDCdqpqLNhnvz/5t+hW7e2fIGyJLS9rKQYX7rggNd3FKyvK/VaTLRVspZ6jvisAc /rLIOXVODHBsHQwif+O9pF8TzGufbKyKdNVc2OtddADy1NkM9AiKWngltHp/14R8hiNo oiXKeWKhSyO+lchrkl1cC1Nkchg1y88HCXJZNNBRNtLfvfW2O4l1/qmAE83358UC7cXC 3Hpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=BqfzlKhdbqOMot1DmZJho1N48hhBEooHE5P7tCgvzWU=; b=Y4OwQxxg9P32q4SX/JVTTA0KdDckVHC1qduMAjUhqsaa5JqLZ7tg3/WVDjtCqTE8OH DBKf3aP7EJ8XKMCh3fev3/sIGYcZtkHoVDKR/JyROVfJBYM1ODewshxfV3M2rWDyVHBA gP9e0tC5T2yeAD8hNjNcO2a5FZCWj939SyCtK3P87QI/rGV0aAIRFNrIbpHWYAmH8JNr 6tOprwxmQ8Tqb/qP3uNBLbsKBKS3qS81H9tTX3eXwmKGh8xyE2lIvRdDJLExGfaUEXiW nm7rSGnGtxxiECNHX4tKZog2jGLaVHWg9ICXlKYCtz7s6HzjMphOvZmwWV7eVge1cd3m taPw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a89si24554184ede.326.2020.12.30.09.04.02; Wed, 30 Dec 2020 09:04:26 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727015AbgL3RAv (ORCPT + 99 others); Wed, 30 Dec 2020 12:00:51 -0500 Received: from mail.cn.fujitsu.com ([183.91.158.132]:10914 "EHLO heian.cn.fujitsu.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726949AbgL3RAv (ORCPT ); Wed, 30 Dec 2020 12:00:51 -0500 X-IronPort-AV: E=Sophos;i="5.78,461,1599494400"; d="scan'208";a="103085838" Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 31 Dec 2020 00:58:45 +0800 Received: from G08CNEXMBPEKD05.g08.fujitsu.local (unknown [10.167.33.204]) by cn.fujitsu.com (Postfix) with ESMTP id B00484CE6020; Thu, 31 Dec 2020 00:58:41 +0800 (CST) Received: from G08CNEXJMPEKD02.g08.fujitsu.local (10.167.33.202) by G08CNEXMBPEKD05.g08.fujitsu.local (10.167.33.204) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 31 Dec 2020 00:58:41 +0800 Received: from G08CNEXCHPEKD04.g08.fujitsu.local (10.167.33.200) by G08CNEXJMPEKD02.g08.fujitsu.local (10.167.33.202) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 31 Dec 2020 00:58:40 +0800 Received: from irides.mr (10.167.225.141) by G08CNEXCHPEKD04.g08.fujitsu.local (10.167.33.209) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 31 Dec 2020 00:58:40 +0800 From: Shiyang Ruan To: , , , CC: , , , , , , , , , Subject: [PATCH 07/10] dm: Introduce ->rmap() to find bdev offset Date: Thu, 31 Dec 2020 00:55:58 +0800 Message-ID: <20201230165601.845024-8-ruansy.fnst@cn.fujitsu.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201230165601.845024-1-ruansy.fnst@cn.fujitsu.com> References: <20201230165601.845024-1-ruansy.fnst@cn.fujitsu.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-yoursite-MailScanner-ID: B00484CE6020.A8C1A X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: ruansy.fnst@cn.fujitsu.com X-Spam-Status: No Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Pmem device could be a target of mapped device. In order to obtain superblock on the mapped device, we introduce this to translate offset from target device to md device. Currently, we implement it on linear target, which is easy to do the translation. Other targets will be supported in the future. However, some targets may not support it because of the non-linear mapping. Signed-off-by: Shiyang Ruan --- drivers/md/dm-linear.c | 8 ++++++++ include/linux/device-mapper.h | 2 ++ 2 files changed, 10 insertions(+) diff --git a/drivers/md/dm-linear.c b/drivers/md/dm-linear.c index 00774b5d7668..7a7719e9958d 100644 --- a/drivers/md/dm-linear.c +++ b/drivers/md/dm-linear.c @@ -119,6 +119,13 @@ static void linear_status(struct dm_target *ti, status_type_t type, } } +static sector_t linear_rmap(struct dm_target *ti, sector_t offset) +{ + struct linear_c *lc = (struct linear_c *) ti->private; + + return offset - dm_target_offset(ti, lc->start); +} + static int linear_prepare_ioctl(struct dm_target *ti, struct block_device **bdev) { struct linear_c *lc = (struct linear_c *) ti->private; @@ -238,6 +245,7 @@ static struct target_type linear_target = { .ctr = linear_ctr, .dtr = linear_dtr, .map = linear_map, + .rmap = linear_rmap, .status = linear_status, .prepare_ioctl = linear_prepare_ioctl, .iterate_devices = linear_iterate_devices, diff --git a/include/linux/device-mapper.h b/include/linux/device-mapper.h index 61a66fb8ebb3..4a2afff6937e 100644 --- a/include/linux/device-mapper.h +++ b/include/linux/device-mapper.h @@ -58,6 +58,7 @@ typedef void (*dm_dtr_fn) (struct dm_target *ti); * = 2: The target wants to push back the io */ typedef int (*dm_map_fn) (struct dm_target *ti, struct bio *bio); +typedef sector_t (*dm_rmap_fn) (struct dm_target *ti, sector_t offset); typedef int (*dm_clone_and_map_request_fn) (struct dm_target *ti, struct request *rq, union map_info *map_context, @@ -175,6 +176,7 @@ struct target_type { dm_ctr_fn ctr; dm_dtr_fn dtr; dm_map_fn map; + dm_rmap_fn rmap; dm_clone_and_map_request_fn clone_and_map_rq; dm_release_clone_request_fn release_clone_rq; dm_endio_fn end_io; -- 2.29.2