Claude f856bd0e05 Track actual bytes read in read operations
Add functionality to determine the actual number of bytes read during
read operations, making it possible to detect when a read was truncated
because it went past the end of the file.

Changes:
- Modified file_tree_read() to calculate and return actual_bytes via
  new output parameter
- Updated metadata server to send actual_bytes in READ_SUCCESS messages
- Added bytes_read field to ToastyResult structure
- Modified client to parse, store, and report actual bytes read
- Updated toasty_read() to return the actual number of bytes read
  instead of always returning 0
- Fixed web server to use bytes_read field instead of non-existent
  count field

This allows clients to distinguish between:
- Reading zeros because the file is sparse (has holes)
- Reading past the end of the file (truncated read)
2025-11-22 22:22:43 +00:00
2025-11-16 02:10:59 +01:00
2025-11-17 22:49:20 +01:00
2025-11-22 12:30:47 +01:00

ToastyFS

ToastyFS is a distributed file system designed for self-hosting, so it aims to be pragmatic, understandable, and robust. You can use ToastyFS to store your files reliably over multiple machines knowing they will be automatically replicated and healed in case of hardware failure. ToastyFS works by running nodes on multiple machines. Clients using the ToastyFS C library can then send file operations to the cluster. Here's a quick example:

#include <ToastyFS.h>

int main(void)
{
    ToastyString addr = TOASTY_STR("127.0.0.1");
    int          port = 8080;
    
    // Connect to cluster
    ToastyFS *toasty = toasty_connect(addr, port);
    
    ToastyString file = TOASTY_STR("/my_file.txt");

    // Create and write to a file
    toasty_create_file(toasty, file, 4096);
    toasty_write(toasty, file, 0, "Hello!", 6);
    
    // Read it back
    char buf[6];
    toasty_read(toasty, file, 0, buf, 6);
    
    // Done!
    toasty_disconnect(toasty);
    return 0;
}

⚠️ Note that ToastyFS is still in early development ⚠️

🎵 Now let's get toasty 🎵

Features

  • Cross-platform (runs on Windows and Linux)
  • Automatic Replication & Self-Healing
  • Automatic content deduplication via internal content-addressing
  • Configurable file chunk sizes
  • Small and understandable

But ToastyFS is still in early development, so here are the missing features:

  • No master replication
  • No authentication or encryption

Testing

ToastyFS is tested by running an in-memory simulation of a cluster with many clients running hundreds of random operations in parallel. The test is run for long periods of times under valgrind or compiled with sanitizers.

S
Description
A simple, fault-tolerant, highly available object storage
Readme MIT
1.1 MiB
Languages
C 98.4%
Shell 1%
Zig 0.4%
Batchfile 0.2%