From: Damien Le Moal <dlemoal@kernel.org>
To: linux-xfs@vger.kernel.org, Andrey Albershteyn <aalbersh@kernel.org>
Cc: "Darrick J . Wong" <djwong@kernel.org>,
Christoph Hellwig <hch@lst.de>, Carlos Maiolino <cem@kernel.org>
Subject: [PATCH v3 5/6] repair: use xfrog_report_zones()
Date: Sat, 20 Dec 2025 11:53:25 +0900 [thread overview]
Message-ID: <20251220025326.209196-6-dlemoal@kernel.org> (raw)
In-Reply-To: <20251220025326.209196-1-dlemoal@kernel.org>
Use the function xfrog_report_zones() to obtain zones information from
a zoned device instead of directly issuing a BLKREPORTZONE ioctl.
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
---
repair/zoned.c | 29 ++++++++---------------------
1 file changed, 8 insertions(+), 21 deletions(-)
diff --git a/repair/zoned.c b/repair/zoned.c
index 206b0158f95f..c211e02448da 100644
--- a/repair/zoned.c
+++ b/repair/zoned.c
@@ -3,7 +3,7 @@
* Copyright (c) 2024 Christoph Hellwig.
*/
#include <ctype.h>
-#include <linux/blkzoned.h>
+#include "libfrog/zones.h"
#include "libxfs_priv.h"
#include "libxfs.h"
#include "xfs_zones.h"
@@ -51,8 +51,7 @@ check_zones(
uint64_t sector = XFS_FSB_TO_BB(mp, mp->m_sb.sb_rtstart);
unsigned int zone_size, zone_capacity;
uint64_t device_size;
- size_t rep_size;
- struct blk_zone_report *rep;
+ struct blk_zone_report *rep = NULL;
unsigned int i, n = 0;
if (ioctl(fd, BLKGETSIZE64, &device_size))
@@ -67,30 +66,18 @@ check_zones(
return;
}
- rep_size = sizeof(struct blk_zone_report) +
- sizeof(struct blk_zone) * ZONES_PER_IOCTL;
- rep = malloc(rep_size);
- if (!rep) {
- do_warn(_("malloc failed for zone report\n"));
- return;
- }
-
while (n < mp->m_sb.sb_rgcount) {
- struct blk_zone *zones = (struct blk_zone *)(rep + 1);
- int ret;
+ struct blk_zone *zones;
- memset(rep, 0, rep_size);
- rep->sector = sector;
- rep->nr_zones = ZONES_PER_IOCTL;
+ free(rep);
+ rep = xfrog_report_zones(fd, sector);
+ if (!rep)
+ return;
- ret = ioctl(fd, BLKREPORTZONE, rep);
- if (ret) {
- do_error(_("ioctl(BLKREPORTZONE) failed: %d!\n"), ret);
- goto out_free;
- }
if (!rep->nr_zones)
break;
+ zones = (struct blk_zone *)(rep + 1);
for (i = 0; i < rep->nr_zones; i++) {
if (n >= mp->m_sb.sb_rgcount)
break;
--
2.52.0
next prev parent reply other threads:[~2025-12-20 2:58 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-20 2:53 [PATCH v3 0/6] Enable cached zone report Damien Le Moal
2025-12-20 2:53 ` [PATCH v3 1/6] libxfs: add missing forward declaration in xfs_zones.h Damien Le Moal
2026-01-06 16:16 ` Darrick J. Wong
2026-01-07 6:20 ` Christoph Hellwig
2025-12-20 2:53 ` [PATCH v3 2/6] mkfs: remove unnecessary return value affectation Damien Le Moal
2026-01-06 16:17 ` Darrick J. Wong
2026-01-07 6:20 ` Christoph Hellwig
2025-12-20 2:53 ` [PATCH v3 3/6] libfrog: introduce xfrog_report_zones Damien Le Moal
2026-01-06 16:29 ` Darrick J. Wong
2025-12-20 2:53 ` [PATCH v3 4/6] mkfs: use xfrog_report_zones() Damien Le Moal
2026-01-06 16:31 ` Darrick J. Wong
2025-12-20 2:53 ` Damien Le Moal [this message]
2025-12-20 2:53 ` [PATCH v3 6/6] libfrog: enable cached report zones Damien Le Moal
2026-01-06 16:34 ` Darrick J. Wong
2026-01-07 6:22 ` Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251220025326.209196-6-dlemoal@kernel.org \
--to=dlemoal@kernel.org \
--cc=aalbersh@kernel.org \
--cc=cem@kernel.org \
--cc=djwong@kernel.org \
--cc=hch@lst.de \
--cc=linux-xfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox