From: Chuck Lever <cel@kernel.org>
To: NeilBrown <neil@brown.name>, Jeff Layton <jlayton@kernel.org>,
Olga Kornievskaia <okorniev@redhat.com>,
Dai Ngo <dai.ngo@oracle.com>, Tom Talpey <tom@talpey.com>
Cc: <linux-nfs@vger.kernel.org>, Chuck Lever <chuck.lever@oracle.com>,
Thomas Haynes <loghyr@hammerspace.com>
Subject: [PATCH v1] NFSD: Use struct knfsd_fh in struct pnfs_ff_layout
Date: Mon, 8 Dec 2025 14:44:28 -0500 [thread overview]
Message-ID: <20251208194428.174229-1-cel@kernel.org> (raw)
From: Chuck Lever <chuck.lever@oracle.com>
In NFSD's pNFS flexfile layout implementation, struct pnfs_ff_layout
defines a struct nfs_fh field. This comes from <linux/nfs.h> :
> /*
> * This is the kernel NFS client file handle representation
> */
> #define NFS_MAXFHSIZE 128
> struct nfs_fh {
> unsigned short size;
> unsigned char data[NFS_MAXFHSIZE];
> };
But NFSD has an equivalent struct, knfsd_fh.
To reduce cross-subsystem header dependencies, avoid using a struct
defined by the kernel's NFS client implementation in NFSD's flexfile
layout implementation.
Cc: Thomas Haynes <loghyr@hammerspace.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---
fs/nfsd/flexfilelayout.c | 3 +--
fs/nfsd/flexfilelayoutxdr.c | 4 ++--
fs/nfsd/flexfilelayoutxdr.h | 2 +-
3 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/fs/nfsd/flexfilelayout.c b/fs/nfsd/flexfilelayout.c
index 0f1a35400cd5..971368877006 100644
--- a/fs/nfsd/flexfilelayout.c
+++ b/fs/nfsd/flexfilelayout.c
@@ -61,8 +61,7 @@ nfsd4_ff_proc_layoutget(struct svc_rqst *rqstp, struct inode *inode,
if (error)
goto out_error;
- fl->fh.size = fhp->fh_handle.fh_size;
- memcpy(fl->fh.data, &fhp->fh_handle.fh_raw, fl->fh.size);
+ fh_copy_shallow(&fl->fh, &fhp->fh_handle);
/* Give whole file layout segments */
seg->offset = 0;
diff --git a/fs/nfsd/flexfilelayoutxdr.c b/fs/nfsd/flexfilelayoutxdr.c
index f9f7e38cba13..88686532f03e 100644
--- a/fs/nfsd/flexfilelayoutxdr.c
+++ b/fs/nfsd/flexfilelayoutxdr.c
@@ -30,7 +30,7 @@ nfsd4_ff_encode_layoutget(struct xdr_stream *xdr,
struct ff_idmap uid;
struct ff_idmap gid;
- fh_len = 4 + fl->fh.size;
+ fh_len = 4 + fl->fh.fh_size;
uid.len = sprintf(uid.buf, "%u", from_kuid(&init_user_ns, fl->uid));
gid.len = sprintf(gid.buf, "%u", from_kgid(&init_user_ns, fl->gid));
@@ -63,7 +63,7 @@ nfsd4_ff_encode_layoutget(struct xdr_stream *xdr,
sizeof(stateid_opaque_t));
*p++ = cpu_to_be32(1); /* single file handle */
- p = xdr_encode_opaque(p, fl->fh.data, fl->fh.size);
+ p = xdr_encode_opaque(p, fl->fh.fh_raw, fl->fh.fh_size);
p = xdr_encode_opaque(p, uid.buf, uid.len);
p = xdr_encode_opaque(p, gid.buf, gid.len);
diff --git a/fs/nfsd/flexfilelayoutxdr.h b/fs/nfsd/flexfilelayoutxdr.h
index 6d5a1066a903..5dee1722834f 100644
--- a/fs/nfsd/flexfilelayoutxdr.h
+++ b/fs/nfsd/flexfilelayoutxdr.h
@@ -39,7 +39,7 @@ struct pnfs_ff_layout {
kgid_t gid;
struct nfsd4_deviceid deviceid;
stateid_t stateid;
- struct nfs_fh fh;
+ struct knfsd_fh fh;
};
__be32 nfsd4_ff_encode_getdeviceinfo(struct xdr_stream *xdr,
--
2.52.0
next reply other threads:[~2025-12-08 19:44 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-08 19:44 Chuck Lever [this message]
2025-12-08 21:35 ` [PATCH v1] NFSD: Use struct knfsd_fh in struct pnfs_ff_layout NeilBrown
2025-12-08 21:45 ` Chuck Lever
2025-12-08 23:00 ` NeilBrown
2025-12-08 23:13 ` Chuck Lever
2025-12-09 1:04 ` Chuck Lever
2025-12-09 11:22 ` Jeff Layton
2025-12-09 21:42 ` NeilBrown
2025-12-09 22:13 ` Chuck Lever
2025-12-10 0:25 ` NeilBrown
2025-12-10 0:59 ` Chuck Lever
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=20251208194428.174229-1-cel@kernel.org \
--to=cel@kernel.org \
--cc=chuck.lever@oracle.com \
--cc=dai.ngo@oracle.com \
--cc=jlayton@kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=loghyr@hammerspace.com \
--cc=neil@brown.name \
--cc=okorniev@redhat.com \
--cc=tom@talpey.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.