fsd: the thox filesystem daemon¶
The filesystem on thox is managed by fsd.
Todo
This daemon occupies a special place as loading other binaries cannot take place without this one. How is this managed?
Todo
Metadata file structure suggested by Lyqyd:
fsd RPC bindings¶
The RPC calls provided by fsd are the following:
-
os.rpc.fs.
open
(path, mode)¶ Open a file descriptor on the given path. The mode can be one of the following:
- “r”
Open the file for reading.
- “w”
Open the file for writing. Deletes the destination file if it already existed. Copy on write is used.
In all cases, bytes will be returned; no byte transformation will be performed. Use iconv: character encoding conversions if you want to transpose from the file’s encoding to another.
The function returns the following:
If the request has succeeded,
true
followed by the numerical file descriptor to be used in subsequent calls.If the request has failed,
false
followed by an error message.
- Parameters
path (string) – Path of the file to open.
mode (string) – Opening mode.
- Returns
The file context.
- Return type
number
File descriptor calls¶
These calls happen on the file context provided by os.rpc.fs.open()
.
-
os.rpc.fs.file.
read
(count)¶ Read
count
bytes from the file descriptor represented by its numerical identifierfd
. The function returns the bytes as a Lua string.- Parameters
count (number) – Number of requested bytes.
- Returns
Up to
count
bytes.- Return type
string
-
os.rpc.fs.file.
write
(bytes)¶ Write the given bytes to the given file descriptor.
- Parameters
bytes (string) – The bytes to write.
- Returns
The number of written bytes.
- Return type
number
-
os.rpc.fs.file.
sync
()¶ Synchronize the file’s in-core state with the storage device (what others call “flushing” for write handles).
-
os.rpc.fs.file.
seek
(whence, offset)¶ Seek to a position.
- Parameters
whence (string) – “set”, “cur” or “end”.
offset (number) – The offset.
- Returns
The new position.
- Return type
number