pub enum FilesystemOperation {
Show 13 variants
CreateDirectory {
path: AbsolutePath,
parents: bool,
},
CreateDirectoryByInode {
parent_inode_id: InodeId,
display_name: DisplayName,
},
PutFile {
path: AbsolutePath,
content_ref: ContentRef,
behavior: DestinationBehavior,
expected_revision_no: Option<RevisionNo>,
},
PutFileByInode {
parent_inode_id: InodeId,
display_name: DisplayName,
content_ref: ContentRef,
},
PutFileRevisionByInode {
inode_id: InodeId,
content_ref: ContentRef,
expected_revision_no: RevisionNo,
},
DeletePath {
path: AbsolutePath,
behavior: DeleteDirectoryBehavior,
expected_inode_id: Option<InodeId>,
},
DeleteByInode {
inode_id: InodeId,
expected_binding_generation: String,
behavior: DeleteDirectoryBehavior,
},
MovePath {
from_path: AbsolutePath,
to_path: AbsolutePath,
behavior: DestinationBehavior,
},
MoveByInode {
inode_id: InodeId,
expected_binding_generation: String,
to_parent_inode_id: InodeId,
to_display_name: DisplayName,
behavior: DestinationBehavior,
},
CopyPath {
from_path: AbsolutePath,
to_path: AbsolutePath,
behavior: DestinationBehavior,
},
Undelete {
inode_id: InodeId,
deletion_seq: ChangeSeq,
path: Option<AbsolutePath>,
},
RestoreRevision {
path: AbsolutePath,
source_revision_no: RevisionNo,
},
UpdateAttributes {
path: AbsolutePath,
set: BTreeMap<AttributeKey, AttributeValue>,
remove: Vec<AttributeKey>,
expected_inode_id: Option<InodeId>,
expected_attributes_revision_no: Option<AttributeRevisionNo>,
},
}Expand description
One filesystem operation.
Unknown fields are rejected so a misspelled concurrency guard cannot be ignored. Fieldless variants must use empty braces so serde rejects unexpected fields.
Variants§
CreateDirectory
Create one directory.
Fields
path: AbsolutePathAbsolute destination path, rejected when invalid or already bound.
CreateDirectoryByInode
Create a directory under an existing parent inode.
PutFile
Create or replace one file with an already-durable content ref.
Fields
path: AbsolutePathAbsolute destination path; missing ancestors are created automatically.
content_ref: ContentRefImmutable bytes that must be covered by a valid preparation proof.
behavior: DestinationBehaviorWhether an existing file may receive a new revision instead of causing a conflict.
expected_revision_no: Option<RevisionNo>When set (with replace behavior), the put applies only while
the file’s current revision is still this one; a raced write
fails the request instead of silently stacking on it, and a
missing file answers path_not_found.
PutFileByInode
Create a file under an existing parent inode. The name must be unused.
Fields
display_name: DisplayNameNew file name.
content_ref: ContentRefImmutable bytes that must be covered by a valid preparation proof.
PutFileRevisionByInode
Append a revision to a file inode if its current revision matches.
Fields
content_ref: ContentRefImmutable bytes that must be covered by a valid preparation proof.
expected_revision_no: RevisionNoCurrent revision required for the write.
DeletePath
Delete one path.
Fields
path: AbsolutePathAbsolute path that must resolve to a visible inode.
behavior: DeleteDirectoryBehaviorWhether a non-empty directory may be tombstoned recursively.
DeleteByInode
Delete an inode if its current binding matches.
Fields
behavior: DeleteDirectoryBehaviorWhether a non-empty directory may be tombstoned recursively.
MovePath
Move one path to another path.
Fields
from_path: AbsolutePathAbsolute source path that must resolve to a visible inode.
to_path: AbsolutePathAbsolute destination whose parent must be visible and writable.
behavior: DestinationBehaviorWhether an existing destination file may be replaced.
MoveByInode
Move an inode if its current binding matches.
Fields
to_display_name: DisplayNameNew name.
behavior: DestinationBehaviorWhether an existing destination file may be replaced.
CopyPath
Copy one file path to another path.
Fields
from_path: AbsolutePathAbsolute source path that must resolve to a visible file.
to_path: AbsolutePathAbsolute destination whose parent must be visible and writable.
behavior: DestinationBehaviorWhether an existing destination file may receive a copied revision.
Undelete
Restore a deleted file or subtree.
inode_id and deletion_seq identify one exact deletion. A stale
sequence returns not_deleted and cannot undo a later deletion.
Fields
deletion_seq: ChangeSeqObserved deletion sequence, which prevents cancelling a newer tombstone generation.
path: Option<AbsolutePath>Optional destination for the restored inode.
When absent, the inode is rebound to the parent and name recorded by the deletion. Parent identity, rather than an old path string, keeps this correct after ancestor renames. An explicit path is required when the deletion recorded no binding.
RestoreRevision
Restore an older revision as the current revision for a path.
Fields
path: AbsolutePathAbsolute path that must resolve to a visible file.
source_revision_no: RevisionNoExisting historical revision whose content will be copied into a new current revision.
UpdateAttributes
Write and remove attributes on the inode one path resolves to.
Fields
path: AbsolutePathAbsolute path that must resolve to a visible file or directory.
set: BTreeMap<AttributeKey, AttributeValue>Attributes to write. Each key replaces whatever the inode currently holds under it; keys the inode holds and this map does not name are left alone.
remove: Vec<AttributeKey>Attribute keys to remove.
A list preserves duplicate entries so validation can report them instead of silently deduplicating the request.
expected_inode_id: Option<InodeId>When set, the update applies only if the path still resolves to this inode; a raced rebinding fails the request instead of writing attributes onto the wrong inode.
expected_attributes_revision_no: Option<AttributeRevisionNo>When set, the update applies only while the inode’s attribute revision is still this one. Absent means the update is applied over whatever revision is current; either way the write carries its own revision guard, so a concurrent update never merges silently.
Implementations§
Source§impl FilesystemOperation
impl FilesystemOperation
Sourcepub const fn content_ref(&self) -> Option<&ContentRef>
pub const fn content_ref(&self) -> Option<&ContentRef>
Returns the content written by this operation, if any.
Trait Implementations§
Source§impl Clone for FilesystemOperation
impl Clone for FilesystemOperation
Source§fn clone(&self) -> FilesystemOperation
fn clone(&self) -> FilesystemOperation
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more