Recent changes (master)

Jens Axboe <[email protected]> Wed, 29 Apr 2026 06:00:01 -0600
Newsgroups org.kernel.vger.fio
Message-ID <[email protected]>
The following changes since commit 7b1fa07c9c7d4624fefd31d40d36742e900f6e44:

  Merge branch 'prevent_large_trim_size_and_high_iodepth_causing_oom' of https://github.com/dennischerchang/fio (2026-04-22 15:59:15 -0400)

are available in the Git repository at:

  git://git.kernel.dk/fio.git master

for you to fetch changes up to a95f84caad2300e73ec9bf7077879f30246f3185:

  sprandom: relax power of 2 block size requirement (2026-04-28 12:25:01 -0400)

----------------------------------------------------------------
Vincent Fu (2):
      Merge branch 'run_HSMR' of https://github.com/rorychen/fio-HSMR
      sprandom: relax power of 2 block size requirement

rorychen (1):
      libzbc: fix fio abort prematurely when encounting SOBR zones

 engines/libzbc.c | 3 +++
 sprandom.c       | 8 +-------
 zbd.h            | 2 +-
 zbd_types.h      | 1 +
 4 files changed, 6 insertions(+), 8 deletions(-)

---

Diff of recent changes:

diff --git a/engines/libzbc.c b/engines/libzbc.c
index 0fa6bfd1..b271cf1e 100644
--- a/engines/libzbc.c
+++ b/engines/libzbc.c
@@ -240,6 +240,9 @@ static int libzbc_report_zones(struct thread_data *td, struct fio_file *f,
 		case ZBC_ZT_SEQUENTIAL_PREF:
 			zbdz->type = ZBD_ZONE_TYPE_SWP;
 			break;
+		case ZBC_ZT_SEQ_OR_BEF_REQ:
+			zbdz->type = ZBD_ZONE_TYPE_SOBR;
+			break;
 		default:
 			td_verror(td, errno, "invalid zone type");
 			log_err("%s: invalid type for zone at sector %llu.\n",
diff --git a/sprandom.c b/sprandom.c
index 429a7754..63eb200b 100644
--- a/sprandom.c
+++ b/sprandom.c
@@ -533,7 +533,7 @@ static uint64_t sprandom_physical_size(double over_provisioning, uint64_t logica
 	uint64_t size;
 
 	size = logical_sz + ceil((double)logical_sz * over_provisioning);
-	return (size + (align_bs - 1)) & ~(align_bs - 1);
+	return size - (size % align_bs);
 }
 
 /**
@@ -840,12 +840,6 @@ int sprandom_init(struct thread_data *td, struct fio_file *f)
 	if (!td->o.sprandom)
 		return 0;
 
-	if (!is_power_of_2(align_bs)) {
-		log_err("fio: sprandom: bs [%"PRIu64"] should be power of 2",
-			align_bs);
-		return -EINVAL;
-	}
-
 	info = calloc(1, sizeof(*info));
 	if (!info)
 		return -ENOMEM;
diff --git a/zbd.h b/zbd.h
index 14204316..676cfaef 100644
--- a/zbd.h
+++ b/zbd.h
@@ -44,7 +44,7 @@ struct fio_zone_info {
 	uint64_t		capacity;
 	uint32_t		writes_in_flight;
 	uint32_t		max_write_error_offset;
-	enum zbd_zone_type	type:2;
+	enum zbd_zone_type	type:4;
 	enum zbd_zone_cond	cond:4;
 	unsigned int		has_wp:1;
 	unsigned int		write:1;
diff --git a/zbd_types.h b/zbd_types.h
index 5f44f308..53e4df6b 100644
--- a/zbd_types.h
+++ b/zbd_types.h
@@ -26,6 +26,7 @@ enum zbd_zone_type {
 	ZBD_ZONE_TYPE_CNV	= 0x1,	/* Conventional */
 	ZBD_ZONE_TYPE_SWR	= 0x2,	/* Sequential write required */
 	ZBD_ZONE_TYPE_SWP	= 0x3,	/* Sequential write preferred */
+	ZBD_ZONE_TYPE_SOBR	= 0x4,	/* Sequential Of Before Required */
 };
 
 /*