GNOP(8)
π GNOP(8) β the manual, but make it make sense π
Okay bestie, welcome to the GNOP(8) era! This is the control utility for the NOP GEOM class, and yes, we're gonna get through it together. It's giving "niche but iconic" and honestly? Kinda obsessed. Let's go. π
β¨ NAME β¨
gnop β control utility for the NOP GEOM class. That's the whole vibe. Short, sweet, slays.
πΈ SYNOPSIS πΈ
Here's the main character energy. Copy these exact, don't get creative:
gnop create [-v] [-c count_until_fail] [-d delaymsec] [-e error]
[-o offset] [-p stripesize] [-P stripeoffset] [-q rdelayprob]
[-r rfailprob] [-s size] [-S secsize] [-w wfailprob]
[-x wdelayprob] [-z physpath] [-Z gnopname] dev ...
gnop configure [-v] [-c count_until_fail] [-d delaymsec] [-e error]
[-q rdelayprob] [-r rfailprob] [-w wfailprob] [-x wdelayprob] prov
...
gnop destroy [-fv] prov ...
gnop reset [-v] prov ...
gnop list
gnop status
gnop load
gnop unload
Lowkey a lot of brackets, but we move. π
π¦ DESCRIPTION π¦
So the tea is: the gnop utility is used for setting up transparent providers on existing ones. Its main purpose is testing other GEOM classes, because it lets you do forced provider removal and I/O error simulation with a given probability. It also gathers statistics on the number of read, write, delete, getattr, flush, and other requests, and the number of bytes read and written. Not me being a whole stats girlie. gnop can also be used as a good starting point for implementing new GEOM classes β like a little starter pack, iykyk.
The first argument to gnop indicates an action to be performed. Here's the rundown:
createβ Set up a transparent provider on the given devices. If the operation succeeds, the new provider should appear with name/dev/β¨devβ©.nop. The kernel modulegeom_nop.kowill be loaded if it is not loaded already. It's giving "set it up and let it cook."configureβ Configure an existing transparent provider. At the moment it is only used for changing failure probability. Lowkey a one-trick pony but she's doing her best.destroyβ Turn off the given transparent providers. Bye bestie, it was real. πresetβ Reset statistics for the given transparent providers. Fresh start era.listβ Seegeom(8).statusβ Seegeom(8).loadβ Seegeom(8).unloadβ Seegeom(8).
Additional options β the whole menu π
-c count_until_failβ Specifies the number of I/O requests to allow before setting the read, write and delay failure probabilities. Like a countdown to chaos.-d delaymsecβ Specifies the delay of the requests in milliseconds. Note that requests will be delayed before they are sent to the backing device. Important detail, don't skip it.-e errorβ Specifies the error number to return on failure.-fβ Force the removal of the specified provider. Forceful, but make it fashion.-o offsetβ Where to begin on the original provider.-p stripesizeβ Value of thestripesizeproperty of the transparent provider.-P stripeoffsetβ Value of thestripeoffsetproperty of the transparent provider.-q rdelayprobβ Specifies read delay probability in percent.-r rfailprobβ Specifies read failure probability in percent.-s sizeβ Size of the transparent provider.-S secsizeβ Sector size of the transparent provider.-w wfailprobβ Specifies write failure probability in percent.-vβ Be more verbose. Talk to me, tell me everything.-x wdelayprobβ Specifies write delay probability in percent.-z physpathβ Physical path of the transparent provider.-Z gnopnameβ The name of the new provider. The suffix.nopwill be appended to the provider name. Cute little signature, no cap.
π SYSCTL VARIABLES π
The following sysctl(8) variables can be used to control the behavior of the NOP GEOM class. The default value is shown next to each variable.
kern.geom.nop.debug: 0β Debug level of the NOP GEOM class. This can be set to a number between0and2inclusive. If set to0, minimal debug information is printed. If set to1, basic debug information is logged along with the I/O requests that were returned as errors. If set to2, the maximum amount of debug information is printed including all I/O requests. Choose your fighter: minimal, basic, or maximum overdrive. π
π EXIT STATUS π
Exit status is 0 on success, and 1 if the command fails. Simple as that. We love a binary queen.
π EXAMPLES π
The following example shows how to create a transparent provider for disk /dev/da0 with 50% write failure probability, and how to destroy it. Living dangerously, we respect it.
gnop create -v -w 50 da0
gnop destroy -v da0.nop
The traffic statistics for the given transparent providers can be obtained with the list command. The example below shows the number of bytes written with newfs(8):
gnop create da0
newfs /dev/da0.nop
gnop list
It's giving "watch me work." β¨
π§ SEE ALSO π§
geom(4), geom(8). The homework, bestie. Do the reading.
π HISTORY π
The gnop utility appeared in FreeBSD 5.3. A classic. We stan an OG.
π«Ά AUTHORS π«Ά
Pawel Jakub Dawidek <pjd@FreeBSD.org>. Icon behavior.
Debian Β· December 29, 2019 Β· GNOP(8) β that's a wrap, bestie! Screenshot this, study it, live it. You're gonna slay. π
πβ¨
π¦ where this page comes from
- freebsd 14.5: base 14.5
- freebsd 15.1: base 15.1
- Copyright (c) 2004-2006 Pawel Jakub Dawidek <pjd@FreeBSD.org>
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms