All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.