This commit is contained in:
2025-11-09 13:20:04 +01:00
parent 7282176a9c
commit c3e20eceef
5 changed files with 12 additions and 5 deletions
+5 -2
View File
@@ -318,8 +318,9 @@ int file_tree_delete_entity(FileTree *ft, string path)
} }
int file_tree_write(FileTree *ft, string path, int file_tree_write(FileTree *ft, string path,
uint64_t off, uint64_t len, SHA256 *prev_hashes, uint64_t off, uint64_t len, uint32_t num_chunks,
SHA256 *hashes, SHA256 *removed_hashes, int *num_removed) SHA256 *prev_hashes, SHA256 *hashes,
SHA256 *removed_hashes, int *num_removed)
{ {
int num_comps; int num_comps;
string comps[MAX_COMPS]; string comps[MAX_COMPS];
@@ -341,6 +342,8 @@ int file_tree_write(FileTree *ft, string path,
uint64_t first_chunk_index = off / f->chunk_size; uint64_t first_chunk_index = off / f->chunk_size;
uint64_t last_chunk_index = first_chunk_index + (len - 1) / f->chunk_size; uint64_t last_chunk_index = first_chunk_index + (len - 1) / f->chunk_size;
assert(last_chunk_index - first_chunk_index + 1 == num_chunks);
if (last_chunk_index >= f->num_chunks) { if (last_chunk_index >= f->num_chunks) {
uint64_t old_num_chunks = f->num_chunks; uint64_t old_num_chunks = f->num_chunks;
SHA256 *new_chunks = sys_malloc((last_chunk_index+1) * sizeof(SHA256)); SHA256 *new_chunks = sys_malloc((last_chunk_index+1) * sizeof(SHA256));
+1 -1
View File
@@ -55,7 +55,7 @@ bool file_tree_uses_hash(FileTree *ft, SHA256 hash);
int file_tree_list(FileTree *ft, string path, ListItem *items, int max_items); int file_tree_list(FileTree *ft, string path, ListItem *items, int max_items);
int file_tree_create_entity(FileTree *ft, string path, bool is_dir, uint64_t chunk_size); int file_tree_create_entity(FileTree *ft, string path, bool is_dir, uint64_t chunk_size);
int file_tree_delete_entity(FileTree *ft, string path); int file_tree_delete_entity(FileTree *ft, string path);
int file_tree_write(FileTree *ft, string path, uint64_t off, uint64_t len, SHA256 *prev_hashes, SHA256 *hashes, SHA256 *removed_hashes, int *num_removed); int file_tree_write(FileTree *ft, string path, uint64_t off, uint64_t len, uint32_t num_chunks, SHA256 *prev_hashes, SHA256 *hashes, SHA256 *removed_hashes, int *num_removed);
int file_tree_read(FileTree *ft, string path, uint64_t off, uint64_t len, uint64_t *chunk_size, SHA256 *hashes, int max_hashes); int file_tree_read(FileTree *ft, string path, uint64_t off, uint64_t len, uint64_t *chunk_size, SHA256 *hashes, int max_hashes);
string file_tree_strerror(int code); string file_tree_strerror(int code);
+5
View File
@@ -1,5 +1,10 @@
#include <string.h> #include <string.h>
#ifdef _WIN32
#include <ws2tcpip.h>
#else
#include <arpa/inet.h> // inet_ntop #include <arpa/inet.h> // inet_ntop
#endif
#include "message.h" #include "message.h"
+1 -1
View File
@@ -628,7 +628,7 @@ process_client_write(MetadataServer *state, int conn_idx, ByteView msg)
} }
int ret = file_tree_write(&state->file_tree, path, offset, length, int ret = file_tree_write(&state->file_tree, path, offset, length,
old_hashes, new_hashes, removed_hashes, &num_removed); num_chunks, old_hashes, new_hashes, removed_hashes, &num_removed);
if (ret < 0) { if (ret < 0) {
-1
View File
@@ -9,7 +9,6 @@
#define WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN
#include <direct.h> // _mkdir #include <direct.h> // _mkdir
#include <bcrypt.h>
#include <windows.h> #include <windows.h>
#include <winsock2.h> #include <winsock2.h>
#include <ws2tcpip.h> #include <ws2tcpip.h>