fs/nfs/nfs2xdr.c
Source file repositories/reference/linux-study-clean/fs/nfs/nfs2xdr.c
File Facts
- System
- Linux kernel
- Corpus path
fs/nfs/nfs2xdr.c- Extension
.c- Size
- 24771 bytes
- Lines
- 1089
- Domain
- Core OS
- Bucket
- VFS And Filesystem Core
- Inferred role
- Core OS: implementation source
- Status
- source implementation candidate
Why This File Exists
Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/param.hlinux/time.hlinux/mm.hlinux/errno.hlinux/string.hlinux/in.hlinux/pagemap.hlinux/proc_fs.hlinux/sunrpc/clnt.hlinux/nfs.hlinux/nfs2.hlinux/nfs_fs.hlinux/nfs_common.hinternal.hnfstrace.h
Detected Declarations
function Copyrightfunction decode_nfsdatafunction decode_statfunction encode_fhandlefunction decode_fhandlefunction decode_fattrfunction encode_sattrfunction encode_filenamefunction decode_filename_inlinefunction encode_pathfunction decode_pathfunction decode_attrstatfunction encode_diropargsfunction decode_diropokfunction decode_diropresfunction nfs2_xdr_enc_fhandlefunction nfs2_xdr_enc_sattrargsfunction nfs2_xdr_enc_diropargsfunction nfs2_xdr_enc_readlinkargsfunction encode_readargsfunction nfs2_xdr_enc_readargsfunction encode_writeargsfunction nfs2_xdr_enc_writeargsfunction nfs2_xdr_enc_createargsfunction nfs2_xdr_enc_removeargsfunction nfs2_xdr_enc_renameargsfunction nfs2_xdr_enc_linkargsfunction nfs2_xdr_enc_symlinkargsfunction encode_readdirargsfunction nfs2_xdr_enc_readdirargsfunction nfs2_xdr_dec_statfunction nfs2_xdr_dec_attrstatfunction nfs2_xdr_dec_diropresfunction nfs2_xdr_dec_readlinkresfunction nfs2_xdr_dec_readresfunction nfs2_xdr_dec_writeresfunction nfs2_decode_direntfunction nfs_readdirfunction nfs2_xdr_dec_readdirresfunction statfsresfunction decode_infofunction nfs2_xdr_dec_statfsres
Annotated Snippet
* union attrstat switch (stat status) {
* case NFS_OK:
* fattr attributes;
* default:
* void;
* };
*/
static int decode_attrstat(struct xdr_stream *xdr, struct nfs_fattr *result,
__u32 *op_status,
struct user_namespace *userns)
{
enum nfs_stat status;
int error;
error = decode_stat(xdr, &status);
if (unlikely(error))
goto out;
if (op_status)
*op_status = status;
if (status != NFS_OK)
goto out_default;
error = decode_fattr(xdr, result, userns);
out:
return error;
out_default:
return nfs_stat_to_errno(status);
}
/*
* 2.3.10. diropargs
*
* struct diropargs {
* fhandle dir;
* filename name;
* };
*/
static void encode_diropargs(struct xdr_stream *xdr, const struct nfs_fh *fh,
const char *name, u32 length)
{
encode_fhandle(xdr, fh);
encode_filename(xdr, name, length);
}
/*
* 2.3.11. diropres
*
* union diropres switch (stat status) {
* case NFS_OK:
* struct {
* fhandle file;
* fattr attributes;
* } diropok;
* default:
* void;
* };
*/
static int decode_diropok(struct xdr_stream *xdr, struct nfs_diropok *result,
struct user_namespace *userns)
{
int error;
error = decode_fhandle(xdr, result->fh);
if (unlikely(error))
goto out;
error = decode_fattr(xdr, result->fattr, userns);
out:
return error;
}
static int decode_diropres(struct xdr_stream *xdr, struct nfs_diropok *result,
struct user_namespace *userns)
{
enum nfs_stat status;
int error;
error = decode_stat(xdr, &status);
if (unlikely(error))
goto out;
if (status != NFS_OK)
goto out_default;
error = decode_diropok(xdr, result, userns);
out:
return error;
out_default:
return nfs_stat_to_errno(status);
}
/*
* NFSv2 XDR encode functions
Annotation
- Immediate include surface: `linux/param.h`, `linux/time.h`, `linux/mm.h`, `linux/errno.h`, `linux/string.h`, `linux/in.h`, `linux/pagemap.h`, `linux/proc_fs.h`.
- Detected declarations: `function Copyright`, `function decode_nfsdata`, `function decode_stat`, `function encode_fhandle`, `function decode_fhandle`, `function decode_fattr`, `function encode_sattr`, `function encode_filename`, `function decode_filename_inline`, `function encode_path`.
- Atlas domain: Core OS / VFS And Filesystem Core.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.