From patchwork Thu Aug 11 14:30:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pankaj Raghav X-Patchwork-Id: 12941485 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D8037C19F2A for ; Thu, 11 Aug 2022 14:31:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235537AbiHKObN (ORCPT ); Thu, 11 Aug 2022 10:31:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43962 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235542AbiHKObC (ORCPT ); Thu, 11 Aug 2022 10:31:02 -0400 Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 014586CD11 for ; Thu, 11 Aug 2022 07:31:01 -0700 (PDT) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20220811143059euoutp019fc1c868ab9a83f1a21d5dc0c67bef59~KUM5brWEu2260022600euoutp01O for ; Thu, 11 Aug 2022 14:30:59 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20220811143059euoutp019fc1c868ab9a83f1a21d5dc0c67bef59~KUM5brWEu2260022600euoutp01O DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1660228259; bh=ZgoaFDwLzDUOxKE5rEa1NqlfNa53+tMH9mlTVfvbwSo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fWoF1bMy6CKpts2llSxoX8miVOk3ZZmJgmPvPlQoZxbsGowDjhWrLMxPyG7ihx85n pYT+dQOezPbwT0z+jfoykl4/6mK8lWnfNb0DOM6HV36IQNabKJxGWehx/7/qy/+Y3G UFk2DGX+xo4d+snDV7nXVIXfH0vhD1lxOEv9foVc= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20220811143058eucas1p17dcf2b8581d292ab7fe10362a23a4ae1~KUM34Vt8V1645216452eucas1p1X; Thu, 11 Aug 2022 14:30:58 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id 4B.3A.09664.2A215F26; Thu, 11 Aug 2022 15:30:58 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20220811143057eucas1p1210aba036ebd96d290d74bfe0231299c~KUM3fVZDf2154221542eucas1p1E; Thu, 11 Aug 2022 14:30:57 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20220811143057eusmtrp2433e006f90ec6fae8023f2db37972a14~KUM3ek6H_0786307863eusmtrp2A; Thu, 11 Aug 2022 14:30:57 +0000 (GMT) X-AuditID: cbfec7f2-d81ff700000025c0-0e-62f512a2c3d8 Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 68.9F.09095.1A215F26; Thu, 11 Aug 2022 15:30:57 +0100 (BST) Received: from localhost (unknown [106.210.248.43]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20220811143057eusmtip13d5e96b5dd5157117d672e5efbd7ce57~KUM3LYK1X3243132431eusmtip1G; Thu, 11 Aug 2022 14:30:57 +0000 (GMT) From: Pankaj Raghav To: snitzer@kernel.org, axboe@kernel.dk, hch@lst.de, agk@redhat.com, damien.lemoal@opensource.wdc.com Cc: linux-block@vger.kernel.org, Johannes.Thumshirn@wdc.com, bvanassche@acm.org, matias.bjorling@wdc.com, hare@suse.de, gost.dev@samsung.com, linux-nvme@lists.infradead.org, jaegeuk@kernel.org, pankydev8@gmail.com, linux-kernel@vger.kernel.org, dm-devel@redhat.com, Pankaj Raghav Subject: [PATCH v10 12/13] dm: introduce DM_EMULATED_ZONES target type Date: Thu, 11 Aug 2022 16:30:42 +0200 Message-Id: <20220811143043.126029-13-p.raghav@samsung.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220811143043.126029-1-p.raghav@samsung.com> MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrLKsWRmVeSWpSXmKPExsWy7djP87qLhL4mGZzt47BYf+oYs8Xqu/1s FtM+/GS2+H32PLPF3nezWS1uHtjJZLFn0SQmi5WrjzJZPFk/i9nib9c9Jou9t7QtLu+aw2Yx f9lTdosJbV+ZLT4vbWG3WHPzKYvFiVvSDoIel694e+ycdZfd4/LZUo9NqzrZPDYvqffYfbOB zWNn631Wj/f7rrJ59G1Zxeix+XS1x+dNch7tB7qZAniiuGxSUnMyy1KL9O0SuDKaFooUNIhV XJq7jamBcbdQFyMHh4SAicTG3zxdjFwcQgIrGCWe7TvBDOF8YZTYOHktlPOZUWL/sv9MXYyc YB0zbu1kgkgsZ5Q4dvMTK4TzglFi0t0vbCBz2QS0JBo72UEaRATSJdYvWM4CYjMLbGOS2PJA GMQWFnCTuHWjjxXEZhFQlbi25ymYzStgLbFm5kyoZfISMy99B5vDCRSfsOgiE0SNoMTJmU+g ZspLNG+dDXaphMBqTolbv/qgml0kjvw7ywphC0u8Or6FHcKWkfi/cz5UTbXE0xu/oZpbGCX6 d65ngwSMtUTfmRwQk1lAU2L9Ln2IckeJwz++M0NU8EnceCsIcQKfxKRt06HCvBIdbUIQ1UoS O38+gVoqIXG5aQ4LhO0hsf38E/YJjIqzkDwzC8kzsxD2LmBkXsUonlpanJueWmyYl1quV5yY W1yal66XnJ+7iRGYAk//O/5pB+PcVx/1DjEycTAeYpTgYFYS4S1b9DlJiDclsbIqtSg/vqg0 J7X4EKM0B4uSOG9y5oZEIYH0xJLU7NTUgtQimCwTB6dUA9OEzanz14sduH7li5QlP4OMwFvn CM9qC04el9WmMeY5e6P4Ar/qtkTW75USZT5x6c6ppubLprcvGL89tvFTjOf2y0tOqmr3/1ew z9p33eTF+oTkk5yRQem/A9R2/NlfmvGtVVj59bQzp7oNXzwPSj4Y8ToqXGjdiTtbYxMWya5/ evYVp7GscgR7yZ7Y6mXbfjOHVPZN28E0LSVcc69aVOGv5Cma0eF+jGkqfx4q+028d7JkciPj y5mP79T9nTsvtW/rw1c6zte2ZMtHH7JhmHOo5uy7AxLv9eo5Y6tPpOnl3yyRfHxwz4yfHx/X NbGmrt5imeM1Z7LBdGE7UZ+1vWcyBJ7cWpUaKLBnzWQeDxklluKMREMt5qLiRAA31r0p8AMA AA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrDIsWRmVeSWpSXmKPExsVy+t/xu7oLhb4mGUydo22x/tQxZovVd/vZ LKZ9+Mls8fvseWaLve9ms1rcPLCTyWLPoklMFitXH2WyeLJ+FrPF3657TBZ7b2lbXN41h81i /rKn7BYT2r4yW3xe2sJusebmUxaLE7ekHQQ9Ll/x9tg56y67x+WzpR6bVnWyeWxeUu+x+2YD m8fO1vusHu/3XWXz6NuyitFj8+lqj8+b5DzaD3QzBfBE6dkU5ZeWpCpk5BeX2CpFG1oY6Rla WugZmVjqGRqbx1oZmSrp29mkpOZklqUW6dsl6GU0LRQpaBCruDR3G1MD426hLkZODgkBE4kZ t3YygdhCAksZJdaf4oWIS0jcXtjECGELS/y51sXWxcgFVPOMUWLugrPsXYwcHGwCWhKNnWCm iECuxMEjgSAlzAJHmCSa3+5iAekVFnCTuHWjjxXEZhFQlbi25ymYzStgLbFm5kwmiPnyEjMv fWcHsTmB4hMWXYS6x0piQscxdoh6QYmTM5+AzWQGqm/eOpt5AqPALCSpWUhSCxiZVjGKpJYW 56bnFhvqFSfmFpfmpesl5+duYgRG67ZjPzfvYJz36qPeIUYmDsZDjBIczEoivGWLPicJ8aYk VlalFuXHF5XmpBYfYjQFunsis5Rocj4wXeSVxBuaGZgamphZGphamhkrifN6FnQkCgmkJ5ak ZqemFqQWwfQxcXBKNTDt/f1G3zn6R95p5Zh6lW/Ne6M49XQ+2x+S9A//eDl7dWuL6EuNiICV tr+KddSecXzgddPj2PhtcYjGz3b9+U3VsR4X7i8S8zuzQvrO7rrd7NUH2bcwPty1/ua2datm LjIyt3R663OjLjxAnWsG5/Et7o+f3f44wVk1/tty0fnZ/POv8SwMvpE25c0ln2PPQld7Tfm0 8L6bvvbqtesNb/F7n555zPCcg0Bo1X/13gjpN2Hifmu0r5a+Z9x8+kfYpV3t9bw/Dl9+w/5I eMnWPypXKtYrFa5+o1nBMreqMcvyOF/5pv1zYtnvM53fZy251e/VPjvZV4+OZ/6U/XyK6fK7 y/Ib2I1zU6fYVU75mKv6S4mlOCPRUIu5qDgRAIqwiJhfAwAA X-CMS-MailID: 20220811143057eucas1p1210aba036ebd96d290d74bfe0231299c X-Msg-Generator: CA X-RootMTR: 20220811143057eucas1p1210aba036ebd96d290d74bfe0231299c X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20220811143057eucas1p1210aba036ebd96d290d74bfe0231299c References: <20220811143043.126029-1-p.raghav@samsung.com> Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org Introduce a new target type DM_EMULATED_ZONES for targets with a different number of sectors per zone (aka zone size) than the underlying device zone size. This target type is introduced as the existing zoned targets assume that the target and the underlying device have the same zone size. The new target: dm-po2zone will use this new target type as it emulates the zone boundary that is different from the underlying zoned device. Signed-off-by: Pankaj Raghav Reviewed-by: Damien Le Moal --- drivers/md/dm-table.c | 13 ++++++++++--- include/linux/device-mapper.h | 9 +++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c index 31eb1d29d136..b37991ea3ffb 100644 --- a/drivers/md/dm-table.c +++ b/drivers/md/dm-table.c @@ -1614,13 +1614,20 @@ static bool dm_table_supports_zoned_model(struct dm_table *t, return true; } -static int device_not_matches_zone_sectors(struct dm_target *ti, struct dm_dev *dev, +/* + * Callback function to check for device zone sector across devices. If the + * DM_TARGET_EMULATED_ZONES target feature flag is not set, then the target + * should have the same zone sector as the underlying devices. + */ +static int check_valid_device_zone_sectors(struct dm_target *ti, struct dm_dev *dev, sector_t start, sector_t len, void *data) { unsigned int *zone_sectors = data; - if (!bdev_is_zoned(dev->bdev)) + if (!bdev_is_zoned(dev->bdev) || + dm_target_supports_emulated_zones(ti->type)) return 0; + return bdev_zone_sectors(dev->bdev) != *zone_sectors; } @@ -1645,7 +1652,7 @@ static int validate_hardware_zoned_model(struct dm_table *t, if (!zone_sectors) return -EINVAL; - if (dm_table_any_dev_attr(t, device_not_matches_zone_sectors, &zone_sectors)) { + if (dm_table_any_dev_attr(t, check_valid_device_zone_sectors, &zone_sectors)) { DMERR("%s: zone sectors is not consistent across all zoned devices", dm_device_name(t->md)); return -EINVAL; diff --git a/include/linux/device-mapper.h b/include/linux/device-mapper.h index 04c6acf7faaa..83e20de264c9 100644 --- a/include/linux/device-mapper.h +++ b/include/linux/device-mapper.h @@ -294,6 +294,15 @@ struct target_type { #define dm_target_supports_mixed_zoned_model(type) (false) #endif +#ifdef CONFIG_BLK_DEV_ZONED +#define DM_TARGET_EMULATED_ZONES 0x00000400 +#define dm_target_supports_emulated_zones(type) \ + ((type)->features & DM_TARGET_EMULATED_ZONES) +#else +#define DM_TARGET_EMULATED_ZONES 0x00000000 +#define dm_target_supports_emulated_zones(type) (false) +#endif + struct dm_target { struct dm_table *table; struct target_type *type;