139acb7fdSMateusz Piotrowski.\" 239acb7fdSMateusz Piotrowski.\" Copyright (c) 2019 Greg White <gkwhite@gmail.com>. All rights reserved. 339acb7fdSMateusz Piotrowski.\" Copyright (c) 2025 Mateusz Piotrowski <0mp@FreeBSD.org> 439acb7fdSMateusz Piotrowski.\" 539acb7fdSMateusz Piotrowski.\" SPDX-License-Identifier: BSD-2-Clause 639acb7fdSMateusz Piotrowski.\" 739acb7fdSMateusz Piotrowski.Dd November 9, 2025 839acb7fdSMateusz Piotrowski.Dt GEOM_ZERO 4 939acb7fdSMateusz Piotrowski.Os 1039acb7fdSMateusz Piotrowski.Sh NAME 1139acb7fdSMateusz Piotrowski.Nm gzero , 1239acb7fdSMateusz Piotrowski.Nm geom_zero 1339acb7fdSMateusz Piotrowski.Nd GEOM-based zero disk/block device 1439acb7fdSMateusz Piotrowski.Sh SYNOPSIS 1539acb7fdSMateusz Piotrowski.Cd "options GEOM_ZERO" 1639acb7fdSMateusz Piotrowski.Pp 1739acb7fdSMateusz PiotrowskiIn 1839acb7fdSMateusz Piotrowski.Xr loader.conf 5 1939acb7fdSMateusz Piotrowskior 2039acb7fdSMateusz Piotrowski.Xr sysctl.conf 5 : 2139acb7fdSMateusz Piotrowski.Cd kern.geom.zero.byte 2239acb7fdSMateusz Piotrowski.Cd kern.geom.zero.clear 2339acb7fdSMateusz Piotrowski.Sh DESCRIPTION 2439acb7fdSMateusz Piotrowski.Nm 2539acb7fdSMateusz Piotrowskiis a 2639acb7fdSMateusz Piotrowski.Xr GEOM 4 2739acb7fdSMateusz Piotrowskidevice simulating a one-exabyte disk. 2839acb7fdSMateusz PiotrowskiIt throws away any data written to it, 2939acb7fdSMateusz Piotrowskiand returns the value of 3039acb7fdSMateusz Piotrowski.Va kern.geom.zero.byte 3139acb7fdSMateusz Piotrowskifor every byte read from it. 3239acb7fdSMateusz Piotrowski.Pp 3339acb7fdSMateusz Piotrowski.Nm 3439acb7fdSMateusz Piotrowskidiffers from 3539acb7fdSMateusz Piotrowski.Xr zero 4 , 3639acb7fdSMateusz Piotrowskiwhich is a regular character device and has an infinite length, 3739acb7fdSMateusz Piotrowskiwhile 3839acb7fdSMateusz Piotrowski.Pa /dev/gzero 3939acb7fdSMateusz Piotrowskiis a 4039acb7fdSMateusz Piotrowski.Xr GEOM 4 4139acb7fdSMateusz Piotrowskiprovider of large, but limited, size. 4239acb7fdSMateusz Piotrowski.Pp 4339acb7fdSMateusz PiotrowskiConsult 4439acb7fdSMateusz Piotrowski.Xr geom 8 4539acb7fdSMateusz Piotrowskifor instructions on how to use the supported commands of the 4639acb7fdSMateusz Piotrowski.Xr GEOM 4 4739acb7fdSMateusz Piotrowski.Nm ZERO 4839acb7fdSMateusz Piotrowskiclass. 4939acb7fdSMateusz Piotrowski.Pp 5039acb7fdSMateusz Piotrowski.Nm 5139acb7fdSMateusz Piotrowskiis useful for benchmarking performance of GEOM and GEOM classes 5239acb7fdSMateusz Piotrowskiwhere compression of the data does not affect the results 5339acb7fdSMateusz Piotrowski.Po blocks from 5439acb7fdSMateusz Piotrowski.Pa /dev/gzero 5539acb7fdSMateusz Piotrowskicompress exceptionally well 5639acb7fdSMateusz Piotrowski.Pc . 5739acb7fdSMateusz PiotrowskiExamples of such benchmarks include 5839acb7fdSMateusz Piotrowskicomparing the speed of two disk encryption algorithms and 5939acb7fdSMateusz Piotrowskicomparing a hardware versus software implementation 6039acb7fdSMateusz Piotrowskiof a single encryption algorithm. 6139acb7fdSMateusz Piotrowski.Sh MIB VARIABLES 6239acb7fdSMateusz PiotrowskiThe following variables are available as both 6339acb7fdSMateusz Piotrowski.Xr sysctl 8 6439acb7fdSMateusz Piotrowskivariables and 6539acb7fdSMateusz Piotrowski.Xr loader 8 6639acb7fdSMateusz Piotrowskitunables: 6739acb7fdSMateusz Piotrowski.Bl -tag -width "kern.geom.zero.clear" 6839acb7fdSMateusz Piotrowski.It Va kern.geom.zero.byte 6939acb7fdSMateusz PiotrowskiThis variable sets the fill byte of the 7039acb7fdSMateusz Piotrowski.Nm 7139acb7fdSMateusz Piotrowskidevice. 7239acb7fdSMateusz PiotrowskiDefault: 7339acb7fdSMateusz Piotrowski.Ql 0 . 7439acb7fdSMateusz Piotrowski.It Va kern.geom.zero.clear 7539acb7fdSMateusz PiotrowskiThis variable controls the clearing of the read data buffer. 7639acb7fdSMateusz PiotrowskiIf set to 7739acb7fdSMateusz Piotrowski.Ql 0 , 7839acb7fdSMateusz Piotrowski.Nm 7939acb7fdSMateusz Piotrowskiwill not copy any data into the read data buffers 8039acb7fdSMateusz Piotrowskiand just return the read data buffers as they are without modifying them. 81*80ca573fSMaxim KonovalovIn particular, it will not fill the read buffer with the value of 8239acb7fdSMateusz Piotrowski.Va kern.geom.zero.byte . 8339acb7fdSMateusz PiotrowskiThis is useful for read benchmarking to reduce the measurement noise 8439acb7fdSMateusz Piotrowskicaused by extra memory initialization. 8539acb7fdSMateusz PiotrowskiDefault: 8639acb7fdSMateusz Piotrowski.Ql 1 . 8739acb7fdSMateusz Piotrowski.El 8839acb7fdSMateusz Piotrowski.Sh FILES 8939acb7fdSMateusz Piotrowski.Bl -tag -width /dev/gzero 9039acb7fdSMateusz Piotrowski.It Pa /dev/gzero 9139acb7fdSMateusz PiotrowskiThe 9239acb7fdSMateusz Piotrowski.Nm 9339acb7fdSMateusz Piotrowskidevice. 9439acb7fdSMateusz Piotrowski.El 9539acb7fdSMateusz Piotrowski.Sh EXAMPLES 9639acb7fdSMateusz PiotrowskiCreate the 9739acb7fdSMateusz Piotrowski.Pa /dev/gzero 9839acb7fdSMateusz Piotrowskidevice by loading the 9939acb7fdSMateusz Piotrowski.Nm geom_zero 10039acb7fdSMateusz Piotrowskikernel module: 10139acb7fdSMateusz Piotrowski.Bd -literal -offset indent 10239acb7fdSMateusz Piotrowski# geom zero load 10339acb7fdSMateusz Piotrowski.Ed 10439acb7fdSMateusz Piotrowski.Pp 10539acb7fdSMateusz PiotrowskiShow information about the 10639acb7fdSMateusz Piotrowski.Nm 10739acb7fdSMateusz Piotrowskidevice: 10839acb7fdSMateusz Piotrowski.Bd -literal -offset indent 10939acb7fdSMateusz Piotrowski# geom zero list 11039acb7fdSMateusz PiotrowskiGeom name: gzero 11139acb7fdSMateusz PiotrowskiProviders: 11239acb7fdSMateusz Piotrowski1. Name: gzero 11339acb7fdSMateusz Piotrowski Mediasize: 1152921504606846976 (1.0E) 11439acb7fdSMateusz Piotrowski Sectorsize: 512 11539acb7fdSMateusz Piotrowski Mode: r0w0egzero0 11639acb7fdSMateusz Piotrowski.Ed 11739acb7fdSMateusz Piotrowski.Pp 11839acb7fdSMateusz PiotrowskiSet the fill byte of the 11939acb7fdSMateusz Piotrowski.Nm 12039acb7fdSMateusz Piotrowskidevice to 70 12139acb7fdSMateusz Piotrowski.Po decimal for letter 12239acb7fdSMateusz Piotrowski.Dq F 12339acb7fdSMateusz Piotrowskiin 12439acb7fdSMateusz Piotrowski.Xr ascii 7 12539acb7fdSMateusz Piotrowski.Pc : 12639acb7fdSMateusz Piotrowski.Bd -literal -offset indent 12739acb7fdSMateusz Piotrowski# sysctl kern.geom.zero.byte=70 12839acb7fdSMateusz Piotrowskikern.geom.zero.byte: 0 -> 70 12939acb7fdSMateusz Piotrowski# head -c 1 /dev/gzero 13039acb7fdSMateusz PiotrowskiF 13139acb7fdSMateusz Piotrowski.Ed 13239acb7fdSMateusz Piotrowski.Pp 13339acb7fdSMateusz PiotrowskiBenchmark read and write throughput of 13439acb7fdSMateusz Piotrowski.Xr geli 8 Ap s 13539acb7fdSMateusz Piotrowskidefault encryption algorithm with a 4-KiB sector size: 13639acb7fdSMateusz Piotrowski.Bd -literal -offset indent 13739acb7fdSMateusz Piotrowski# geom zero load 13839acb7fdSMateusz Piotrowski# geli onetime -s 4096 gzero 13939acb7fdSMateusz Piotrowski# sysctl kern.geom.zero.clear=0 14039acb7fdSMateusz Piotrowski# dd if=/dev/gzero.eli of=/dev/zero bs=4k count=$((1024 * 256)) 14139acb7fdSMateusz Piotrowski262144+0 records in 14239acb7fdSMateusz Piotrowski262144+0 records out 14339acb7fdSMateusz Piotrowski1073741824 bytes transferred in 1.258195 secs (853398307 bytes/sec) 14439acb7fdSMateusz Piotrowski# dd if=/dev/zero of=/dev/gzero.eli bs=4k count=$((1024 * 256)) 14539acb7fdSMateusz Piotrowski262144+0 records in 14639acb7fdSMateusz Piotrowski262144+0 records out 14739acb7fdSMateusz Piotrowski1073741824 bytes transferred in 1.663118 secs (645619658 bytes/sec) 14839acb7fdSMateusz Piotrowski.Ed 14939acb7fdSMateusz Piotrowski.Sh SEE ALSO 15039acb7fdSMateusz Piotrowski.Xr GEOM 4 , 15139acb7fdSMateusz Piotrowski.Xr zero 4 , 15239acb7fdSMateusz Piotrowski.Xr geom 8 , 15339acb7fdSMateusz Piotrowski.Xr sysctl 8 , 15439acb7fdSMateusz Piotrowski.Xr bio 9 15539acb7fdSMateusz Piotrowski.Sh HISTORY 15639acb7fdSMateusz PiotrowskiA 15739acb7fdSMateusz Piotrowski.Nm 15839acb7fdSMateusz Piotrowskidevice first appeared in 15939acb7fdSMateusz Piotrowski.Fx 6 . 16039acb7fdSMateusz Piotrowski.Sh AUTHORS 16139acb7fdSMateusz Piotrowski.An -nosplit 16239acb7fdSMateusz PiotrowskiThe 16339acb7fdSMateusz Piotrowski.Nm 16439acb7fdSMateusz Piotrowskidevice was written by 16539acb7fdSMateusz Piotrowski.An Paweł Jakub Dawidek Aq Mt pjd@FreeBSD.org . 16639acb7fdSMateusz Piotrowski.Pp 16739acb7fdSMateusz PiotrowskiThe 16839acb7fdSMateusz Piotrowski.Nm 16939acb7fdSMateusz Piotrowskimanual page was originally written by 17039acb7fdSMateusz Piotrowski.An Greg White Aq Mt gkwhite@gmail.com 17139acb7fdSMateusz Piotrowskiand rewritten by 17239acb7fdSMateusz Piotrowski.An Mateusz Piotrowski Aq Mt 0mp@FreeBSD.org 17339acb7fdSMateusz Piotrowskibefore landing in 17439acb7fdSMateusz Piotrowski.Fx . 175