summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2026-01-28 10:19:32 -0500
committerChuck Lever <chuck.lever@oracle.com>2026-03-29 21:25:09 -0400
commit615384a24b1e6b0f091ebc1dfbf7ec8b4c27fa81 (patch)
tree7da844897c4ffe5fe8c53dc9682640bb6029790d /include/linux
parent236f3171ac690f632e13d391f47c68c3a8519bd2 (diff)
lockd: Move xdr.h from include/linux/lockd/ to fs/lockd/
The lockd subsystem unnecessarily exposes internal NLM XDR type definitions through the global include path. These definitions are not used by any code outside fs/lockd/, making them inappropriate for include/linux/lockd/. Moving xdr.h to fs/lockd/ narrows the API surface and clarifies that these types are internal implementation details. The comment in linux/lockd/bind.h stating xdr.h was needed for "xdr-encoded error codes" is stale: no lockd API consumers use those codes. Forward declarations for struct nfs_fh and struct file_lock are added to bind.h because their definitions were previously pulled in transitively through xdr.h. Additionally, nfs3proc.c and proc.c need explicit includes of filelock.h for FL_CLOSE and for accessing struct file_lock members, respectively. Built and tested with lockd client/server operations. No functional change. Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/lockd/bind.h5
-rw-r--r--include/linux/lockd/xdr.h113
2 files changed, 2 insertions, 116 deletions
diff --git a/include/linux/lockd/bind.h b/include/linux/lockd/bind.h
index 077da0696f12..ba9258c96bfd 100644
--- a/include/linux/lockd/bind.h
+++ b/include/linux/lockd/bind.h
@@ -11,10 +11,9 @@
#define LINUX_LOCKD_BIND_H
#include <linux/lockd/nlm.h>
-/* need xdr-encoded error codes too, so... */
-#include <linux/lockd/xdr.h>
-/* Dummy declarations */
+struct file_lock;
+struct nfs_fh;
struct svc_rqst;
struct rpc_task;
struct rpc_clnt;
diff --git a/include/linux/lockd/xdr.h b/include/linux/lockd/xdr.h
deleted file mode 100644
index 292e4e38d17d..000000000000
--- a/include/linux/lockd/xdr.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * linux/include/linux/lockd/xdr.h
- *
- * XDR types for the NLM protocol
- *
- * Copyright (C) 1996 Olaf Kirch <okir@monad.swb.de>
- */
-
-#ifndef LOCKD_XDR_H
-#define LOCKD_XDR_H
-
-#include <linux/fs.h>
-#include <linux/filelock.h>
-#include <linux/nfs.h>
-#include <linux/sunrpc/xdr.h>
-
-#define SM_MAXSTRLEN 1024
-#define SM_PRIV_SIZE 16
-
-struct nsm_private {
- unsigned char data[SM_PRIV_SIZE];
-};
-
-struct svc_rqst;
-
-#define NLM_MAXCOOKIELEN 32
-#define NLM_MAXSTRLEN 1024
-
-#define nlm_granted cpu_to_be32(NLM_LCK_GRANTED)
-#define nlm_lck_denied cpu_to_be32(NLM_LCK_DENIED)
-#define nlm_lck_denied_nolocks cpu_to_be32(NLM_LCK_DENIED_NOLOCKS)
-#define nlm_lck_blocked cpu_to_be32(NLM_LCK_BLOCKED)
-#define nlm_lck_denied_grace_period cpu_to_be32(NLM_LCK_DENIED_GRACE_PERIOD)
-
-/* Lock info passed via NLM */
-struct nlm_lock {
- char * caller;
- unsigned int len; /* length of "caller" */
- struct nfs_fh fh;
- struct xdr_netobj oh;
- u32 svid;
- u64 lock_start;
- u64 lock_len;
- struct file_lock fl;
-};
-
-/*
- * NLM cookies. Technically they can be 1K, but Linux only uses 8 bytes.
- * FreeBSD uses 16, Apple Mac OS X 10.3 uses 20. Therefore we set it to
- * 32 bytes.
- */
-
-struct nlm_cookie
-{
- unsigned char data[NLM_MAXCOOKIELEN];
- unsigned int len;
-};
-
-/*
- * Generic lockd arguments for all but sm_notify
- */
-struct nlm_args {
- struct nlm_cookie cookie;
- struct nlm_lock lock;
- u32 block;
- u32 reclaim;
- u32 state;
- u32 monitor;
- u32 fsm_access;
- u32 fsm_mode;
-};
-
-/*
- * Generic lockd result
- */
-struct nlm_res {
- struct nlm_cookie cookie;
- __be32 status;
- struct nlm_lock lock;
-};
-
-/*
- * statd callback when client has rebooted
- */
-struct nlm_reboot {
- char *mon;
- unsigned int len;
- u32 state;
- struct nsm_private priv;
-};
-
-/*
- * Contents of statd callback when monitored host rebooted
- */
-#define NLMSVC_XDRSIZE sizeof(struct nlm_args)
-
-bool nlmsvc_decode_void(struct svc_rqst *rqstp, struct xdr_stream *xdr);
-bool nlmsvc_decode_testargs(struct svc_rqst *rqstp, struct xdr_stream *xdr);
-bool nlmsvc_decode_lockargs(struct svc_rqst *rqstp, struct xdr_stream *xdr);
-bool nlmsvc_decode_cancargs(struct svc_rqst *rqstp, struct xdr_stream *xdr);
-bool nlmsvc_decode_unlockargs(struct svc_rqst *rqstp, struct xdr_stream *xdr);
-bool nlmsvc_decode_res(struct svc_rqst *rqstp, struct xdr_stream *xdr);
-bool nlmsvc_decode_reboot(struct svc_rqst *rqstp, struct xdr_stream *xdr);
-bool nlmsvc_decode_shareargs(struct svc_rqst *rqstp, struct xdr_stream *xdr);
-bool nlmsvc_decode_notify(struct svc_rqst *rqstp, struct xdr_stream *xdr);
-
-bool nlmsvc_encode_testres(struct svc_rqst *rqstp, struct xdr_stream *xdr);
-bool nlmsvc_encode_res(struct svc_rqst *rqstp, struct xdr_stream *xdr);
-bool nlmsvc_encode_void(struct svc_rqst *rqstp, struct xdr_stream *xdr);
-bool nlmsvc_encode_shareres(struct svc_rqst *rqstp, struct xdr_stream *xdr);
-
-#endif /* LOCKD_XDR_H */