linux/Documentation/netlink/specs/sunrpc_cache.yaml
Chuck Lever 80ec8054fe NFSD: Put cache get-reqs dump attrs under reply
The new get-reqs dump operations added to sunrpc_cache.yaml and
nfsd.yaml place the "requests" nested attribute under dump.request.
A netlink dump carries an empty request; its payload travels back
in the reply. Because the spec names no reply attributes, the YNL
C code generator synthesizes a forward reference to a
<op>_rsp struct that is never defined, breaking any consumer of
these specs.

This first surfaced when Thorsten Leemhuis built tools/net/ynl
against -next:

  nfsd-user.h:746: error: field 'obj' has incomplete type
    struct nfsd_svc_export_get_reqs_rsp obj ...
  nfsd-user.h:826: error: field 'obj' has incomplete type
    struct nfsd_expkey_get_reqs_rsp obj ...
  nfsd-user.c:1211: error: 'nfsd_svc_export_get_reqs_rsp_parse'
    undeclared

sunrpc_cache.yaml has the same defect in ip-map-get-reqs and
unix-gid-get-reqs, but nfsd.yaml errors out first in the Makefile's
alphabetical build order and hides the sunrpc failures.

These bugs were introduced by incorrect merge conflict resolution.

Reported-by: Thorsten Leemhuis <linux@leemhuis.info>
Closes: https://lore.kernel.org/linux-nfs/f6a3ca6d-e5cb-4a5c-9af2-8d2b1ce33ef0@leemhuis.info/
Fixes: 1045ccf519ce30 ("sunrpc: add netlink upcall for the auth.unix.ip cache")
Tested-by: Thorsten Leemhuis <linux@leemhuis.info>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2026-06-01 11:08:18 -04:00

150 lines
2.8 KiB
YAML

# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
---
name: sunrpc
protocol: genetlink
uapi-header: linux/sunrpc_netlink.h
doc: SUNRPC cache upcall support over generic netlink.
definitions:
-
type: flags
name: cache-type
entries: [ip_map, unix_gid]
attribute-sets:
-
name: cache-notify
attributes:
-
name: cache-type
type: u32
enum: cache-type
-
name: ip-map
attributes:
-
name: seqno
type: u64
-
name: class
type: string
-
name: addr
type: string
-
name: domain
type: string
-
name: negative
type: flag
-
name: expiry
type: u64
-
name: ip-map-reqs
attributes:
-
name: requests
type: nest
nested-attributes: ip-map
multi-attr: true
-
name: unix-gid
attributes:
-
name: seqno
type: u64
-
name: uid
type: u32
-
name: gids
type: u32
multi-attr: true
-
name: negative
type: flag
-
name: expiry
type: u64
-
name: unix-gid-reqs
attributes:
-
name: requests
type: nest
nested-attributes: unix-gid
multi-attr: true
-
name: cache-flush
attributes:
-
name: mask
type: u32
enum: cache-type
enum-as-flags: true
operations:
list:
-
name: cache-notify
doc: Notification that there are cache requests that need servicing
attribute-set: cache-notify
mcgrp: exportd
event:
attributes:
- cache-type
-
name: ip-map-get-reqs
doc: Dump all pending ip_map requests
attribute-set: ip-map-reqs
flags: [admin-perm]
dump:
reply:
attributes:
- requests
-
name: ip-map-set-reqs
doc: Respond to one or more ip_map requests
attribute-set: ip-map-reqs
flags: [admin-perm]
do:
request:
attributes:
- requests
-
name: unix-gid-get-reqs
doc: Dump all pending unix_gid requests
attribute-set: unix-gid-reqs
flags: [admin-perm]
dump:
reply:
attributes:
- requests
-
name: unix-gid-set-reqs
doc: Respond to one or more unix_gid requests
attribute-set: unix-gid-reqs
flags: [admin-perm]
do:
request:
attributes:
- requests
-
name: cache-flush
doc: Flush sunrpc caches (ip_map and/or unix_gid)
attribute-set: cache-flush
flags: [admin-perm]
do:
request:
attributes:
- mask
mcast-groups:
list:
-
name: none
-
name: exportd