Expand description
Protocol-neutral vectorized filesystem contracts for the VFSI workspace.
Vfsi provides native vector execution; VfsiExt adds blanket scalar
conveniences and composed workflows without replacing batching with loops.
Portable requests, results, options, and imports live in api.
No filesystem backend, RPC library, or async runtime is required.
The vnfs crate supplies NFS clients and re-exports these same contracts.
use vfsi_core::{Vfsi, VfsiExt};
fn load_parts(fs: &impl Vfsi) -> vfsi_core::api::Result<Vec<Vec<u8>>> {
fs.read_files(&["/file-1", "/file-2"])
}The other root types support backend implementation; application read/write
operations should be imported from api for the portable specializations.
api::WriteOp and the native WriteOp share one operation definition;
their offset types preserve positional versus cursor/append semantics.
Re-exports§
pub use api::AsTarget;pub use api::DirHandle;pub use api::FileHandle;pub use api::MkDirOp;pub use api::SetAttrsOp;pub use api::Target;pub use api::Vfsi;pub use api::VfsiExt;
Modules§
- api
- Portable application contracts, operations, options, and extension workflows. Portable synchronous vectorized filesystem API.
- path
- Byte-preserving path helpers for Unix-native
Path/OsStrtypes.
Structs§
- Adb
- An Application Data Block (ADB) pattern, mirroring
struct tc_adb. - Attr
Mask - A bitflags set of requested attributes.
- Attrs
- Idiomatic metadata returned by the Rust-native path API.
- Capabilities
- Typed backend capabilities. Unlike the legacy integer constants, this rejects accidental mixing with unrelated bit fields.
- Copy
Options - Options for whole-file copies through
crate::api::Vfsi::vcopy. Source final symlinks are followed by default; ancestor symlinks use normal namespace resolution. This is not a snapshot. When preserving a source symlink, its link text is copied and an existing destination is not replaced. Destination symlinks for data copies retain normal following behavior. - DirEntry
- One native directory entry with its already-fetched metadata.
- Extent
Pair - One extent to copy, mirroring
struct tc_extent_pair. - Filesystem
Stats - Filesystem capacity and limits for the filesystem containing a target.
Values are observations, not reservations.
Nonemeans unknown or unsupported. Byte counts use the filesystem allocation unit, not its preferred I/O size. Getters preserve zero and false as known values. Fluentwith_*setters acceptNoneto restore an unknown value. - FsObjId
- Filesystem-scoped identifier for an underlying filesystem object.
- Open
Flags - Typed file-open behavior for the Rust-native API.
- OpenOp
- One complete open request. This replaces three error-prone parallel slices of paths, flags, and modes.
- Permissions
- Rust-native permission bits, independent of protocol wire attributes.
- Read
Into Result - Metadata for a read placed directly into caller-provided storage.
- ReadOp
- One element of a batched read, replacing the C
tc_iovec(which mixed input and output fields in a single mutable struct). - Read
Result - The result of one
ReadOp: the data and whether end-of-file was hit.fileechoes the request’s file reference so results can be paired back to mixed fd/path inputs without reordering assumptions. - Remove
Options - Options controlling recursive removal.
- RpcError
- An error from the low-level client: either an NFS4ERR_* status reported by the server for a compound operation, or a transport/RPC-level failure.
- VfAttrs
- File attributes, mirroring
struct tc_attrs.modeis the fullst_mode(permission bits plusS_IFMTfile-type bits); themtime/atime/ctimefields hold seconds and nanoseconds. - VfError
- The failure of one operation in a vectorized call.
- Walk
Entry - A directory and its entries, as returned by a filesystem walk.
pathis the directory’s root-relative path;entriesare its immediate children. - Write
Result - The result of one
crate::WriteOp.fileechoes the request’s file reference.
Enums§
- Error
Domain - Namespace in which a status code is meaningful.
- File
Operand - Native backend operand: a File Descriptor, path, or special directory target.
- Seek
From - How filesystem seek operations interpret their offset, mirroring
SEEK_SET/SEEK_CUR/SEEK_ENDas an enum. - Status
Code - Typed protocol/filesystem status. Transport failures have no status.
- Transport
Kind - Transport provenance, not a guarantee that an operation is safe to retry.
Unknown failures remain
Other; messages are never parsed to classify them. - VfDir
- An opaque handle to an open directory.
- VfOffset
- The offset of a read or write operation.
- VfPath
Base - The base a path is resolved against, replacing the C
VF_FD_CWD/VF_FD_ABSsentinel descriptors. - VfType
- The NFSv4 object type, replacing the raw
NF4*wire codes inVfAttrs::ftype.
Constants§
- ERR_
ACCES - ERR_
EBADF - ERR_
EXIST - ERR_
INVAL - ERR_IO
- ERR_
ISDIR - ERR_
NOENT - Generic errno-style error codes (they coincide with the NFS4ERR codes for the same conditions, which the NFS backend reports).
- ERR_
NOTDIR - NF4BLK
- NF4CHR
- NF4DIR
- NF4FIFO
- NF4LNK
- NF4REG
- NFSv4 wire type codes (NF4*), used to decode/encode
VfType. - NF4SOCK
- STATUS_
TRANSPORT - NFS4 status used for transport-level failures (there is no NFS status).
- VF_
CAP_ HARDLINKS - The backend can create hard links and report their shared identity.
- VF_
CAP_ LSTAT - The backend implements no-follow metadata operations (
lstatsemantics). - VF_
CAP_ NON_ UTF8_ PATHS - The backend accepts paths containing arbitrary non-UTF-8 Unix bytes.
- VF_
CAP_ POSIX_ METADATA - The backend reports and honors Unix mode/ownership/link-count metadata.
- VF_
CAP_ SERVER_ COPY - Capability bit returned by a backend’s capability query when it will currently attempt a server-side copy operation (NFSv4.2 COPY or SMB FSCTL_SRV_COPYCHUNK).
- VF_
CAP_ SYMLINKS - The backend can create, inspect, and copy symbolic links without following them.
- VF_
CAP_ UNIX_ SEMANTICS - Capabilities shared by the complete Unix-like NFS and dummy backends.
- VF_
ERR_ RPC - Errors that have no filesystem status (transport / client side).
- VF_
ERR_ UNSUPPORTED - Requested feature is not implemented by this backend.
Functions§
- error_
from_ rpc - Convert an RPC error using an explicitly chosen logical request index.
Nonekeeps the failure unattributed; it never invents index zero. Transport errors retain their transport category rather than becoming a filesystem status. The RPC’s wire-operation index is not used here. - error_
from_ rpc_ indexed - Convert a semantic RPC failure using its wire-operation index.
Transport failures have no trustworthy operation index and remain
unattributed. Callers mapping compound operations to logical requests
should instead use
error_from_rpcwith their mapped index. - file_
type_ from_ nfs - file_
type_ to_ nfs - The NFSv4 wire type code.
- metadata_
from_ attrs - Backend attribute conversion; absent fields remain absent.
- open_
flags_ to_ libc - Translate the typed flags for compatibility backends.
Type Aliases§
- Fd
- Backend-assigned numeric File Descriptor, represented as a C
int. - Read
Stream Callback - Callback used by vectorized streaming reads.
- RpcResult
- Convenience alias used throughout the low-level client.
- VfRes
- Result of a compound-style operation:
()on success, or the index and error of the first failing operation. - VfResult
- WriteOp
- A native write with owned or borrowed target and payload storage.
Positioning is always
VfOffset, with packed create/truncate flags. The fixed policy types let constructors infer storage without annotations.