=head1 NAME

nbdkit-pattern-plugin - plugin to serve a fixed pattern of data for testing

=head1 SYNOPSIS

 nbdkit pattern [size=]SIZE

=head1 DESCRIPTION

C<nbdkit-pattern-plugin> is a plugin for L<nbdkit(1)> which serves a
fixed pattern of data, read only.  This is used for testing nbdkit
filters and NBD clients.  To create test disks filled with other
repeated patterns use L<nbdkit-data-plugin(1)> or
L<nbdkit-ones-plugin(1)> instead.

The fixed pattern is the offset, as a 64 bit big endian integer, every
8 bytes.  In hexadecimal this looks like:

 offset                         data
  0000:   00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 08
  0010:   00 00 00 00 00 00 00 10   00 00 00 00 00 00 00 18
  0020:   00 00 00 00 00 00 00 20   00 00 00 00 00 00 00 28
                                  ↗ └──────────┬──────────┘
              byte at offset 0x28              │
                                               │
                                     64 bit big endian int
                                     encoding offset 0x28

The size of the virtual disk must be specified using the C<size>
parameter.  If the size is not a multiple of 8 then the last 8 byte
offset in the pattern is truncated.

=head2 Largest possible size

nbdkit itself limits plugins to S<2⁶³-1> bytes
(S<decimal: 9223372036854775807>,
S<hexadecimal: 0x7fff_ffff_ffff_ffff>).

To test if NBD clients are free of bugs (not to mention nbdkit itself)
you can use:

 nbdkit pattern 9223372036854775807

Note this is too large for qemu to open.

=head2 Little endian pattern

To get a little endian pattern instead of big endian apply
L<nbdkit-swab-filter(1)> on top of this plugin:

 nbdkit pattern 1G --filter=swab swab-bits=64

=head1 PARAMETERS

=over 4

=item [B<size=>]SIZE

Specify the virtual size of the disk image.

This parameter is required.

C<size=> is a magic config key and may be omitted in most cases.
See L<nbdkit(1)/Magic parameters>.

=back

=head1 FILES

=over 4

=item F<$plugindir/nbdkit-pattern-plugin.so>

The plugin.

Use C<nbdkit --dump-config> to find the location of C<$plugindir>.

=back

=head1 VERSION

C<nbdkit-pattern-plugin> first appeared in nbdkit 1.6.

=head1 SEE ALSO

L<nbdkit(1)>,
L<nbdkit-plugin(3)>,
L<nbdkit-data-plugin(1)>,
L<nbdkit-full-plugin(1)>,
L<nbdkit-null-plugin(1)>,
L<nbdkit-ones-plugin(1)>,
L<nbdkit-offset-filter(1)>,
L<nbdkit-random-plugin(1)>,
L<nbdkit-sparse-random-plugin(1)>,
L<nbdkit-swab-filter(1)>,
L<nbdkit-zero-plugin(1)>.

=head1 AUTHORS

Richard W.M. Jones

=head1 COPYRIGHT

Copyright Red Hat
