From: Donald Hunter <donald.hunter@gmail.com>
To: Hristo Venev <hristo@venev.name>
Cc: Jakub Kicinski <kuba@kernel.org>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Paolo Abeni <pabeni@redhat.com>,
Simon Horman <horms@kernel.org>,
netdev@vger.kernel.org, Josef Bacik <josef@toxicpanda.com>,
Jens Axboe <axboe@kernel.dk>,
linux-block@vger.kernel.org, nbd@other.debian.org
Subject: Re: [PATCH] netlink: specs: add specification for NBD
Date: Tue, 17 Feb 2026 12:17:25 +0000 [thread overview]
Message-ID: <m2o6lnlg2y.fsf@gmail.com> (raw)
In-Reply-To: <20260215180309.2255721-3-hristo@venev.name>
Hristo Venev <hristo@venev.name> writes:
> This patch adds an initial YNL specification for NBD. The specification
> can be used to produce a UAPI header that is equivalent to the one
> currently shipped in the kernel.
>
> The spec appears to be accurate enough so that commands can be issued
> with pyynl.
>
> Signed-off-by: Hristo Venev <hristo@venev.name>
> ---
> Documentation/netlink/specs/nbd.yaml | 206 +++++++++++++++++++++++++++
> 1 file changed, 206 insertions(+)
> create mode 100644 Documentation/netlink/specs/nbd.yaml
There are yamllint errors:
make -C tools/net/ynl lint
make: Entering directory '/home/donaldh/net-next/tools/net/ynl'
yamllint ../../../Documentation/netlink/specs
../../../Documentation/netlink/specs/nbd.yaml
159:81 error line too long (104 > 80 characters) (line-length)
169:6 error syntax error: expected <block end>, but found '<block mapping start>' (syntax)
170:7 error wrong indentation: expected 5 but found 6 (indentation)
>
> diff --git a/Documentation/netlink/specs/nbd.yaml b/Documentation/netlink/specs/nbd.yaml
> new file mode 100644
> index 0000000000000..a84912a867d91
> --- /dev/null
> +++ b/Documentation/netlink/specs/nbd.yaml
> @@ -0,0 +1,206 @@
> +# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
> +---
> +name: nbd
> +protocol: genetlink-c
> +uapi-header: linux/nbd-netlink.h
> +doc: See :file:`drivers/block/nbd.c`
Prefer to see a meaningful doc string here.
> +
> +c-family-name: nbd-genl-family-name
> +c-version-name: nbd-genl-version
> +max-by-define: true
> +
> +attribute-sets:
> + -
> + name: nbd-attrs
> + name-prefix: nbd-attr-
> + doc: Configuration policy attributes, used for CONNECT
> + attributes:
> + -
> + name: unspec
> + value: 0
> + type: unused
No need for unspec in the attribute list, ynl codegen does the right thing.
> + -
> + name: index
> + type: u32
> + -
> + name: size-bytes
> + type: u64
> + -
> + name: block-size-bytes
> + type: u64
> + -
> + name: timeout
> + type: u64
> + -
> + name: server-flags
> + type: u64
> + -
> + name: client-flags
> + type: u64
> + -
> + name: sockets
> + type: nest
> + nested-attributes: sock-item-attrs
> + -
> + name: dead-conn-timeout
> + type: u64
> + -
> + name: device-list
> + type: nest
> + nested-attributes: device-item-attrs
> + -
> + name: backend-identifier
> + type: string
> + -
> + name: device-item-attrs
> + name-prefix: nbd-device-item-
> + doc: |
> + This is the format for multiple devices with :code:`NBD_ATTR_DEVICE_LIST`
> +
> + .. code-block::
> +
> + [NBD_ATTR_DEVICE_LIST]
> + [NBD_DEVICE_ITEM]
> + [NBD_DEVICE_INDEX]
> + [NBD_DEVICE_CONNECTED]
> + attributes:
> + -
> + name: unspec
> + value: 0
> + type: unused
Not required.
> + -
> + name: item
> + name-prefix: nbd-device-
> + type: nest
> + nested-attributes: device-attrs
> + multi-attr: true
> + -
> + name: device-attrs
> + name-prefix: nbd-device-
> + attr-max-name: nbd-device-attr-max
> + attributes:
> + -
> + name: unspec
> + value: 0
> + type: unused
Not required.
> + -
> + name: index
> + type: u32
> + -
> + name: connected
> + type: u8
> + -
> + name: sock-item-attrs
> + name-prefix: nbd-sock-item-
> + doc: |
> + This is the format for multiple sockets with :code:`NBD_ATTR_SOCKETS`
> +
> + .. code-block::
> +
> + [NBD_ATTR_SOCKETS]
> + [NBD_SOCK_ITEM]
> + [NBD_SOCK_FD]
> + [NBD_SOCK_ITEM]
> + [NBD_SOCK_FD]
> + attributes:
> + -
> + name: unspec
> + value: 0
> + type: unused
Not required.
> + -
> + name: item
> + name-prefix: nbd-sock-
> + type: nest
> + nested-attributes: sock-attrs
> + multi-attr: true
> + -
> + name: sock-attrs
> + name-prefix: nbd-sock-
> + attributes:
> + -
> + name: unspec
> + value: 0
> + type: unused
Not required.
> + -
> + name: fd
> + type: u32
> +
> +operations:
> + enum-model: unified
> + name-prefix: nbd-cmd-
> + list:
> + -
> + name: unspec
> + value: 0
> + doc: NBD_CMD_UNSPEC
Not required.
> + -
> + name: connect
> + doc: See :file:`drivers/block/nbd.c`, :code:`nbd_genl_connect()`
Prefer to see meaningful doc string (same for other ops)
> + attribute-set: nbd-attrs
> + dont-validate: [strict]
nbd.c has strict & dump, should this be [strict, dump] ? (same for other ops)
> + do:
> + request:
> + attributes:
> + - index
> + - size-bytes
> + - block-size-bytes
> + - timeout
> + - server-flags
> + - client-flags
> + - sockets
> + - dead-conn-timeout
> + - backend-identifier
> + reply:
> + attributes:
> + - index
> + -
> + name: disconnect
> + doc: See :file:`drivers/block/nbd.c`, :code:`nbd_genl_disconnect()`
> + attribute-set: nbd-attrs
> + dont-validate: [strict]
> + do:
> + request:
> + attributes:
> + - index
> + -
> + name: reconfigure
> + doc: See :file:`drivers/block/nbd.c`, :code:`nbd_genl_reconfigure()`
> + attribute-set: nbd-attrs
> + dont-validate: [strict]
> + do:
> + request:
> + attributes:
> + - index
> + - size-bytes
> + - block-size-bytes
> + - timeout
> + - client-flags
> + - sockets
> + - dead-conn-timeout
> + - backend-identifier
> + -
> + name: link-dead
> + doc: See :file:`drivers/block/nbd.c`, :code:`nbd_mark_nsock_dead()` / :code:`nbd_dead_link_work()`
> + attribute-set: nbd-attrs
> + event:
> + attributes:
> + - index
> + mcgrp: nbd_mc_group
> + -
> + name: status
> + doc: See :file:`drivers/block/nbd.c`, :code:`nbd_genl_status()`
> + attribute-set: nbd-attrs
> + dont-validate: [strict]
> + do:
> + request:
> + attributes:
> + - index
> + reply:
> + attributes:
> + - device-list
> +
> +mcast-groups:
> + list:
> + -
> + name: nbd_mc_group
> + c-define-name: nbd-genl-mcast-group-name
next prev parent reply other threads:[~2026-02-17 12:18 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-15 18:03 [PATCH] netlink: specs: add specification for NBD Hristo Venev
2026-02-17 12:17 ` Donald Hunter [this message]
2026-02-17 17:40 ` Hristo Venev
2026-02-18 11:28 ` Donald Hunter
2026-02-23 9:40 ` Wouter Verhelst
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m2o6lnlg2y.fsf@gmail.com \
--to=donald.hunter@gmail.com \
--cc=axboe@kernel.dk \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=hristo@venev.name \
--cc=josef@toxicpanda.com \
--cc=kuba@kernel.org \
--cc=linux-block@vger.kernel.org \
--cc=nbd@other.debian.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox