From patchwork Wed Sep 28 01:22:37 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Damien Le Moal X-Patchwork-Id: 9353035 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 520916077A for ; Wed, 28 Sep 2016 01:23:20 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3FD8D28A38 for ; Wed, 28 Sep 2016 01:23:20 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3448A291A8; Wed, 28 Sep 2016 01:23:20 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1CD8B28A38 for ; Wed, 28 Sep 2016 01:23:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934925AbcI1BXR (ORCPT ); Tue, 27 Sep 2016 21:23:17 -0400 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:31916 "EHLO esa2.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934474AbcI1BXM (ORCPT ); Tue, 27 Sep 2016 21:23:12 -0400 X-IronPort-AV: E=Sophos;i="5.30,407,1470672000"; d="scan'208";a="18715578" Received: from mail-co1nam03lp0019.outbound.protection.outlook.com (HELO NAM03-CO1-obe.outbound.protection.outlook.com) ([216.32.181.19]) by ob1.hgst.iphmx.com with ESMTP; 28 Sep 2016 09:23:11 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-hgst-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=EMrSLzyL8nUlZ+M0DdLVWVCTAa4chqkK1LHV+Ivyvn4=; b=DSmQE3q2pX/IMltbx8eMwo7L6GCiDNH9QTPgl9DJogIwfIbf2iaTiMgkpCCewaiidxnbYbV37buWBNSM57on24/Kw7f2BfUqJbit4/GdtjCmiVSz+oSVTWEcht38ATPTUkB4vEY0pdY9iSbfy1oYQ0DolA13b0YUnunexADdKvM= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Damien.LeMoal@hgst.com; Received: from washi.fujisawa.hgst.com (199.255.47.8) by BL2PR04MB1972.namprd04.prod.outlook.com (10.167.97.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.639.5; Wed, 28 Sep 2016 01:23:07 +0000 From: Damien Le Moal To: Jens Axboe CC: , , Christoph Hellwig , "Martin K . Petersen" , Hannes Reinecke , Shaun Tancheff , Damien Le Moal , Shaun Tancheff Subject: [PATCH v3 7/7] blk-zoned: implement ioctls Date: Wed, 28 Sep 2016 10:22:37 +0900 Message-ID: <1475025757-6340-8-git-send-email-damien.lemoal@hgst.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1475025757-6340-1-git-send-email-damien.lemoal@hgst.com> References: <1475025757-6340-1-git-send-email-damien.lemoal@hgst.com> MIME-Version: 1.0 X-Originating-IP: [199.255.47.8] X-ClientProxiedBy: CY1PR13CA0119.namprd13.prod.outlook.com (10.164.65.45) To BL2PR04MB1972.namprd04.prod.outlook.com (10.167.97.144) X-MS-Office365-Filtering-Correlation-Id: 77bde6da-02a4-47ce-23a8-08d3e73e01ff X-Microsoft-Exchange-Diagnostics: 1; BL2PR04MB1972; 2:6PRMtONuA7SdPcfB3wa3GkH2Px4YXKe8jL9q7bUoUG7Qcu9/Csc6NB0FYDlsx+O9Corgxr3feqVJVXNVPCKzlxGoDQDjvrCG/Y8AAnR6wXPefVtuDblf2KrJ9b2CLZelL3KZWSqxWMC7sNOLo1LLxIy5gz/guzsDmV1tafKWjxdsvi98RTsNHDGb6Pupdr0Q; 3:tc06830t8LZEY7H1Hvc2vdc8qWwzvKu3oK5wNiPN9isflknx9HzTRLbBCkv8dLZAd7BRphe4POdO8ZbiYZS63N0XArF7cNODPZUyBeAjI1TQ8P8d1lVzFiek9gmzzoK3; 25:C+9GdktrURp4fGenJ6w53KvLooZV4AWEnX3PFnT54JUw6p9QHufTI/2CCmotJ780C/p2r3TfuhdWDSc6T/J+iUOAnBH2eI5h/kEujmJKiXgRGCIsh63R7QsWgKidzoBwhICbL+08NVX7+KULveWJzv8bqbuAYsTvTofYBvOBvtNDFA8RXnS6DkEl1GNT/3UEqxPX5hTPMmONx8CsBhgbtqP0+ZjfhNDeD1SM8pavRGAZvvc33S/cw3B73ISpogQeQE6PDx5a+le7MmZgEdtl0Nu6wsD5gj9PHXJyaq3j2tvFj+2SDQiMOSqKwNJl3Hy2b2P6Vlw9dBQd4T9dWSay9Z7b2Q7iZFNLsq1Rgzye0nOgB942cgKRizGhg/oaXDvF22WQG9xKlk8H4IX8x0qJgxFZKZeUpijrN6dUQyBepCE= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BL2PR04MB1972; X-Microsoft-Exchange-Diagnostics: 1; BL2PR04MB1972; 31:m2ttUv1wHZje4oZ6UXaq4gFvJk//jjW4h9HRy5Y48N7DP3bx0/n/ieJrxSjkBQgyXaA+X+gdjTWVkSwtjocp92hs6r+O03S3YA2NdN1k+P+V6QfGZEwCkaitOnjS19u+DTBMKUDpZWsokdpohQYbAxRhsz7BtBGE3SVXYCH8SCzJEO9MP6ddO9j5q6M9qJ8bR+tiLaRu3qWZnQBJQ+vaJ0Ry337JbjAj+DFPHiuP1+s=; 20:vLB+M1HXlZSU4/kdChLBnBL7xHsBoOm2SweyHG39X7Yve43YaUbJ5ALHO3CMZUfh6XBh0WCi7nXaLzrkBOZqviTNqERiGcPZIF/yino+aCZtQuKjI7zhSowVPxqCsbU7/XGXfMpwIx2ePGrV1OTWgXWC2U5JFPWQd4RSKui612I7QoASoq/8MhotaYeJgcDb3JschW6hnViPqeN/9x4eAcYT73BINQMA7VwdxaQ8Uj6wQZufObRcyT6zWE6klR6YhXnUqEk2n+EB7d3I7JEPTMMQ6MgU8B8Ty/gSPesOQ9ti+oDFTAizrbwdimUR02MlSiBSP6TTgqPsF+6PvtnTzHP8d6MLISkE+9yU4fiKKzHDIJYj3/oCMISXuHRx7lXM4x+Lsj71gsD5QlYdCRr7f1uvoBEgSDK9fWK2sishB9GcSFtvMw1J33VevIwvQSxI6vjmVBV7lPrfXbQArSWGwBnVMQYU5h8gHAe0Rr7SC+QfIidLPyjkj0lG/WquQCW2 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(79135771888625); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026); SRVR:BL2PR04MB1972; BCL:0; PCL:0; RULEID:; SRVR:BL2PR04MB1972; X-Microsoft-Exchange-Diagnostics: 1; BL2PR04MB1972; 4:0c8rk+RNlirHFMrcyoiUhOzFa5mpWVgZo3jVeLBm8cLimxvvCxbW/bLNx3rjuCehEkXdicUxs4VZdgnRlM8EANbhZfcoi+PQz5JRzpE6XG7tbxYXSXd2Q+A/hurq0HNsSDa5w39Rgq46doLThaWab4mFTh9tEIpWgChiiTJBEQ+jn6wt2aY3trWy0ipZBNnvXLsjTKoXHV75cGmIBIqUlklVfP+GNj7Lo3F8uSlxSnhr5K/DlgXeJ9UWKV8S9FuQJrM4c3206WtUsnPnNUxWvHOcR6S6/1e7souishPMijYCEFeFQF+7AMI12RnJjhTRPk0x0LXWJnNkfiahfRUnof4zAX6otVGE2jR0IbexUgU/gwXNatYLXBLd6aLyyIA+8qlelkCFdhjXUZbJQSQliAPpqRH7uagaQUE5yymXiuoJpkUKdIdjRIwotehLwXIsdbsIMyU+xoYwUuYaVY/F9A== X-Forefront-PRVS: 0079056367 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(7916002)(189002)(199003)(33646002)(77096005)(229853001)(3846002)(6116002)(586003)(105586002)(106356001)(97736004)(101416001)(189998001)(6916009)(2950100002)(42186005)(50986999)(76176999)(50226002)(86362001)(575784001)(8676002)(19580395003)(19580405001)(4326007)(66066001)(36756003)(81156014)(81166006)(50466002)(7846002)(48376002)(305945005)(7736002)(68736007)(110136003)(5660300001)(2906002)(92566002)(5003940100001)(47776003)(7099028); DIR:OUT; SFP:1102; SCL:1; SRVR:BL2PR04MB1972; H:washi.fujisawa.hgst.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: hgst.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BL2PR04MB1972; 23:Ij4AE+n0iZYwXjo1wUhdF/2Wy1+mlFFGcyFm8XQD0?= =?us-ascii?Q?fJ1G8EGiVAlvhJlJnEZsQgow/UXpI1eAkHIM0LCKoQuHOZoGujAaEj0YIY1i?= =?us-ascii?Q?We72HsDV1RzwliKdkJy4dnWxe1mj5Sazsc+3BLBDxby7ExSyInkJsBBO2Q9d?= =?us-ascii?Q?KtEq9r6AX6cAfWJsdU3roBaC5NekOC0MVH2s7sWlT5az8couFphcQI/YbOv0?= =?us-ascii?Q?QTgeXqJBrMFouS+p4VrmzhYWPiz1jn6m4j+UvehuFO+hpdKhDjKTOFF7wpNw?= =?us-ascii?Q?4t7B53+M+HJF6cPdp+8rG2lAzuSBw4jNXDhsul40F8oHRisA+l6QTipyH2D7?= =?us-ascii?Q?hGEd6J59Y4qENKw631vICpINBbyciEWbtPOoepbYhBo3XmOAJcIJDxhTAFd9?= =?us-ascii?Q?yNCijUYUUlXwWhIB+Gzprj2gsim6hAMtVXh3daoNpV15DB5feOaQXg7fvGgC?= =?us-ascii?Q?2ewm+7GFcjoilH7/SL3z/+IdL/1tR7/nxEDznbbpQu9OuIvu2AvwpiMEptc8?= =?us-ascii?Q?a1yUNWznnl8sjQf727opTlORf7x/mk4us0CUjCRyNtv9QSIZGtAGzHHn5hbl?= =?us-ascii?Q?80dgh02FVp1ak/yo1jFSpk3wJOaRiOk6g12O7x9k8Ngt1HOZtVGS7NPAJlkR?= =?us-ascii?Q?ezcZxrKoYqhnNW/iDQ7M1YUhQBtWEUPqIeuGw6OqY8iEeQDcmJjJidFUhLib?= =?us-ascii?Q?GnPc7id6c6AXvUbN5UT/RRhcxHqYbR3xbQdO1z2PAOg1mSuG7wFhKCTYwpp9?= =?us-ascii?Q?JAcmiYrYMNOH7KN4YUl80FeGVxZJH9cRSDAd+4qsRCIMEiVABqnNbrbsP6/U?= =?us-ascii?Q?dTk3GMYPLFL4ahhpxu8nd3vR6nQ6fAAfjJhDVdhXJ12O+tabf4D+z487b+Fn?= =?us-ascii?Q?PVPUMoEuweODX0rbKsf9aqSCgG8yajlMi3gVJIHVnNd7sTesg9ke3aWVk2iM?= =?us-ascii?Q?IJ9jmohfVRK/lG5jRecrn68TTcKrQHh8gG2qjl7AbjVytprjQDJl5MOjla2c?= =?us-ascii?Q?S/KP8s8n6PgoF249VhiE91EihI8/+OprsBw6GHDBAuGauhjdDh1sa4HoC2AL?= =?us-ascii?Q?YTHFFO9wlmFqNDkFH+uqDXRiKCb3vguQaY0s8k4h/1JV6mNzw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BL2PR04MB1972; 6:qZnnEfDamz1eQYOQQWVKLRvLVbN0zlE3SJn+gokYu9hjQWPAVijTId5hs/c9LyFrDGwjYAK5rQtdcKUvJtgAnWptxgjeMiwzdTP0ilVfKhcmm3x/aW1zhLSpdI35gwfR9rQeDBSB7LijSOvRM1AKDBBLhQv0V3aecX0SN6hTsUFo4qnPA5uWAQQyJjZxFDCYO36QI829nE3DOsa94U4TjWnqfEXwPlQLrP7ppycO+CTauBzQftKTZWL93JxU5YKDubNKHs1N5TfPcfHXTapk37Otthd/h1QrvKSiM9VmxNxENwVFd5sFzOJRa6TswBDo1q9kAsBJ3883iGpnHkgtzg==; 5:oEdWBdKPgqU3SnxRFeoBh4Amy1EQ2f7LTdT9urRZcXuAd0RvhjhkgvGlx+mLncgpK4k5/uflTHs3DWQRhBf5b2/0GTWD4Y/8v4a/boLvg5WxShz2pLS8F2NGUCdZfCSMlrT/DQjj+B6ASAYU8o5z2Q==; 24:CKmODdIDBXSSLIt2RAOvIHXUzkokCOHHAgN70yjxnAxkZzQuRX3A7cZv+FHOHBidwRfR/XGb8O2SVD/bsLiKGjEy399EWQxqcLJcYx4Yi38=; 7:fLz6rrCEvhOqWi8IUcswBCJdX5yK/LE9cgSGxaZl/s998+pEC/Ppnvmkjdpf9ZvLmtAtDF5q+eyYhg5QA8FzHZM8MFz8Ft8KiFSz/SqH0qG3JOThNix1kWbaTPQRptJ8O2Xb+2QckG+mrwG4G1LaZ2eCmPT86xp85ZjAnvq25n1mwVdqwzsIvhGX0luzEtcfRYmTbGvllVPOgTzE2I6EueRmSiGPnT3gmen2bDAP962LJjl4eqeVg1SNmFVQqI667+QZkXv+21KRBhl/w73G21HVG7UKVmH6JP68JmluQaxIeuykTM4YnjKsBgT5kbdL SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BL2PR04MB1972; 20:eaa9CZ9nLdE8+1JzoGaSlBtMKzFQKk5+bL7NaA2nJTKzVt+wKdimAvj4bL66AOMEw8UvVvnyYHqfrbK1wAw5RWKxnNCTidmyQNVZtf+YijGLKnUjjtsrEHmK6e4C5mmXUTEcQETicWfOMzWql3gU+RkS4+A8NbDCyt1V0Rvq2zMtM3doqiW+WTP3tbxBevzPM4VQ7zOI8DTOCLqq/fmfUtNYCgQDdBwVrPvCy10S1V4OqjVtbHICmIlVSMQR1/ql X-OriginatorOrg: hgst.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Sep 2016 01:23:07.6581 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR04MB1972 Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Shaun Tancheff Adds the new BLKREPORTZONE and BLKRESETZONE ioctls for respectively obtaining the zone configuration of a zoned block device and resetting the write pointer of sequential zones of a zoned block device. The BLKREPORTZONE ioctl maps directly to a single call of the function blkdev_report_zones. The zone information result is passed as an array of struct blk_zone identical to the structure used internally for processing the REQ_OP_ZONE_REPORT operation. The BLKRESETZONE ioctl maps to a single call of the blkdev_reset_zones function. Signed-off-by: Shaun Tancheff Signed-off-by: Damien Le Moal Reviewed-by: Martin K. Petersen --- block/blk-zoned.c | 93 +++++++++++++++++++++++++++++++++++++++++++ block/ioctl.c | 4 ++ include/linux/blkdev.h | 22 ++++++++++ include/uapi/linux/blkzoned.h | 40 +++++++++++++++++++ include/uapi/linux/fs.h | 4 ++ 5 files changed, 163 insertions(+) diff --git a/block/blk-zoned.c b/block/blk-zoned.c index 7ebfc86..d354bea 100644 --- a/block/blk-zoned.c +++ b/block/blk-zoned.c @@ -255,3 +255,96 @@ int blkdev_reset_zones(struct block_device *bdev, return 0; } EXPORT_SYMBOL_GPL(blkdev_reset_zones); + +/** + * BLKREPORTZONE ioctl processing. + * Called from blkdev_ioctl. + */ +int blkdev_report_zones_ioctl(struct block_device *bdev, fmode_t mode, + unsigned int cmd, unsigned long arg) +{ + void __user *argp = (void __user *)arg; + struct request_queue *q; + struct blk_zone_report rep; + struct blk_zone *zones; + int ret; + + if (!argp) + return -EINVAL; + + q = bdev_get_queue(bdev); + if (!q) + return -ENXIO; + + if (!blk_queue_is_zoned(q)) + return -ENOTTY; + + if (!capable(CAP_SYS_ADMIN)) + return -EACCES; + + if (copy_from_user(&rep, argp, sizeof(struct blk_zone_report))) + return -EFAULT; + + if (!rep.nr_zones) + return -EINVAL; + + zones = kcalloc(rep.nr_zones, sizeof(struct blk_zone), GFP_KERNEL); + if (!zones) + return -ENOMEM; + + ret = blkdev_report_zones(bdev, rep.sector, + zones, &rep.nr_zones, + GFP_KERNEL); + if (ret) + goto out; + + if (copy_to_user(argp, &rep, sizeof(struct blk_zone_report))) { + ret = -EFAULT; + goto out; + } + + if (rep.nr_zones) { + if (copy_to_user(argp + sizeof(struct blk_zone_report), zones, + sizeof(struct blk_zone) * rep.nr_zones)) + ret = -EFAULT; + } + + out: + kfree(zones); + + return ret; +} + +/** + * BLKRESETZONE ioctl processing. + * Called from blkdev_ioctl. + */ +int blkdev_reset_zones_ioctl(struct block_device *bdev, fmode_t mode, + unsigned int cmd, unsigned long arg) +{ + void __user *argp = (void __user *)arg; + struct request_queue *q; + struct blk_zone_range zrange; + + if (!argp) + return -EINVAL; + + q = bdev_get_queue(bdev); + if (!q) + return -ENXIO; + + if (!blk_queue_is_zoned(q)) + return -ENOTTY; + + if (!capable(CAP_SYS_ADMIN)) + return -EACCES; + + if (!(mode & FMODE_WRITE)) + return -EBADF; + + if (copy_from_user(&zrange, argp, sizeof(struct blk_zone_range))) + return -EFAULT; + + return blkdev_reset_zones(bdev, zrange.sector, zrange.nr_sectors, + GFP_KERNEL); +} diff --git a/block/ioctl.c b/block/ioctl.c index ed2397f..448f78a 100644 --- a/block/ioctl.c +++ b/block/ioctl.c @@ -513,6 +513,10 @@ int blkdev_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd, BLKDEV_DISCARD_SECURE); case BLKZEROOUT: return blk_ioctl_zeroout(bdev, mode, arg); + case BLKREPORTZONE: + return blkdev_report_zones_ioctl(bdev, mode, cmd, arg); + case BLKRESETZONE: + return blkdev_reset_zones_ioctl(bdev, mode, cmd, arg); case HDIO_GETGEO: return blkdev_getgeo(bdev, argp); case BLKRAGET: diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 6316972..0a75285 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -315,6 +315,28 @@ extern int blkdev_report_zones(struct block_device *, unsigned int *, gfp_t); extern int blkdev_reset_zones(struct block_device *, sector_t, sector_t, gfp_t); + +extern int blkdev_report_zones_ioctl(struct block_device *, fmode_t, + unsigned int, unsigned long); +extern int blkdev_reset_zones_ioctl(struct block_device *, fmode_t, + unsigned int, unsigned long); + +#else /* CONFIG_BLK_DEV_ZONED */ + +static inline int blkdev_report_zones_ioctl(struct block_device *bdev, + fmode_t mode, unsigned int cmd, + unsigned long arg) +{ + return -ENOTTY; +} + +static inline int blkdev_reset_zones_ioctl(struct block_device *bdev, + fmode_t mode, unsigned int cmd, + unsigned long arg) +{ + return -ENOTTY; +} + #endif /* CONFIG_BLK_DEV_ZONED */ struct request_queue { diff --git a/include/uapi/linux/blkzoned.h b/include/uapi/linux/blkzoned.h index a381721..40d1d7b 100644 --- a/include/uapi/linux/blkzoned.h +++ b/include/uapi/linux/blkzoned.h @@ -16,6 +16,7 @@ #define _UAPI_BLKZONED_H #include +#include /** * enum blk_zone_type - Types of zones allowed in a zoned device. @@ -100,4 +101,43 @@ struct blk_zone { __u8 reserved[36]; }; +/** + * struct blk_zone_report - BLKREPORTZONE ioctl request/reply + * + * @sector: starting sector of report + * @nr_zones: IN maximum / OUT actual + * @reserved: padding to 16 byte alignment + * @zones: Space to hold @nr_zones @zones entries on reply. + * + * The array of at most @nr_zones must follow this structure in memory. + */ +struct blk_zone_report { + __u64 sector; + __u32 nr_zones; + __u8 reserved[4]; + struct blk_zone zones[0]; +} __packed; + +/** + * struct blk_zone_range - BLKRESETZONE ioctl request + * @sector: starting sector of the first zone to issue reset write pointer + * @nr_sectors: Total number of sectors of 1 or more zones to reset + */ +struct blk_zone_range { + __u64 sector; + __u64 nr_sectors; +}; + +/** + * Zoned block device ioctl's: + * + * @BLKREPORTZONE: Get zone information. Takes a zone report as argument. + * The zone report will start from the zone containing the + * sector specified in the report request structure. + * @BLKRESETZONE: Reset the write pointer of the zones in the specified + * sector range. The sector range must be zone aligned. + */ +#define BLKREPORTZONE _IOWR(0x12, 130, struct blk_zone_report) +#define BLKRESETZONE _IOW(0x12, 131, struct blk_zone_range) + #endif /* _UAPI_BLKZONED_H */ diff --git a/include/uapi/linux/fs.h b/include/uapi/linux/fs.h index 3b00f7c..e0fc7f0 100644 --- a/include/uapi/linux/fs.h +++ b/include/uapi/linux/fs.h @@ -222,6 +222,10 @@ struct fsxattr { #define BLKSECDISCARD _IO(0x12,125) #define BLKROTATIONAL _IO(0x12,126) #define BLKZEROOUT _IO(0x12,127) +/* + * A jump here: 130-131 are reserved for zoned block devices + * (see uapi/linux/blkzoned.h) + */ #define BMAP_IOCTL 1 /* obsolete - kept for compatibility */ #define FIBMAP _IO(0x00,1) /* bmap access */