---
name: "gnop"
section: "8"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/gnop"
---

# gnop(8)

control utility for NOP GEOM class

## NAME

**gnop** – control utility for NOP GEOM class

## SYNOPSIS

**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** \[**--libxo**\] **list**

**gnop** \[**--libxo**\] **status**

**gnop** **load**

**gnop** **unload**

## DESCRIPTION

The **gnop** utility is used for setting up transparent providers on existing ones. Its main purpose is testing other GEOM classes, as it allows 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. **gnop** can also be used as a good starting point for implementing new GEOM classes.

The first argument to **gnop** indicates an action to be performed:

- **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 module *geom\_nop.ko* will be loaded if it is not loaded already.

- **configure**

  Configure existing transparent provider. At the moment it is only used for changing failure probability.

- **destroy**

  Turn off the given transparent providers.

- **reset**

  Reset statistics for the given transparent providers.

- **list**

  See [geom(8)](/geom/8.md).

- **status**

  See [geom(8)](/geom/8.md).

- **load**

  See [geom(8)](/geom/8.md).

- **unload**

  See [geom(8)](/geom/8.md).

- **--libxo**

  Generate output via [libxo(3)](/libxo/3.md) in a selection of different human and machine readable formats. See [xo\_options(7)](/xo_options/7.md) for details on command line arguments.

Additional options:

- **-c** *count\_until\_fail*

  Specifies the number of I/O requests to allow before setting the read, write and delay failure probabilities.

- **-d** *delaymsec*

  Specifies the delay of the requests in milliseconds. Note that requests will be delayed before they are sent to the backing device.

- **-e** *error*

  Specifies the error number to return on failure.

- **-f**

  Force the removal of the specified provider.

- **-o** *offset*

  Where to begin on the original provider.

- **-p** *stripesize*

  Value of the stripesize property of the transparent provider.

- **-P** *stripeoffset*

  Value of the stripeoffset property 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.

- **-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 “.nop” will be appended to the provider name.

## SYSCTL VARIABLES

The following [sysctl(8)](/sysctl/8.md) 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 between 0 and 2 inclusive. If set to 0, minimal debug information is printed. If set to 1, basic debug information is logged along with the I/O requests that were returned as errors. If set to 2, the maximum amount of debug information is printed including all I/O requests.

## EXIT STATUS

Exit status is 0 on success, and 1 if the command fails.

## 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.

```
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)](/newfs/8.md):

```
gnop create da0
newfs /dev/da0.nop
gnop list
```

## SEE ALSO

[geom(4)](/geom/4.md), [xo\_options(7)](/xo_options/7.md), [geom(8)](/geom/8.md)

## HISTORY

The **gnop** utility appeared in FreeBSD 5.3.

## AUTHORS

Pawel Jakub Dawidek ⟨*pjd@FreeBSD.org*⟩
