diff options
author | Simon Rettberg | 2021-03-26 13:44:47 +0100 |
---|---|---|
committer | Simon Rettberg | 2021-03-26 13:44:47 +0100 |
commit | 3a7891e26aec9e5d15d21a78cb317926d96f51e9 (patch) | |
tree | 9c221489ad96ca3f6d7207a4b1c171ef0554b294 /src/kernel/dnbd3_main.h | |
parent | [KERNEL] Use sockaddr instead of dnbd3_host_t where possible (diff) | |
download | dnbd3-3a7891e26aec9e5d15d21a78cb317926d96f51e9.tar.gz dnbd3-3a7891e26aec9e5d15d21a78cb317926d96f51e9.tar.xz dnbd3-3a7891e26aec9e5d15d21a78cb317926d96f51e9.zip |
[KERNEL] Implement best_count logic for load balancing
Similar logic already exists in the fuse client:
Count how many times in a row a server was fastest when
measuring RTTs, and lower the switching threshold
more the higher the count gets.
Diffstat (limited to 'src/kernel/dnbd3_main.h')
-rw-r--r-- | src/kernel/dnbd3_main.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/kernel/dnbd3_main.h b/src/kernel/dnbd3_main.h index 42b9f58..71c3cf8 100644 --- a/src/kernel/dnbd3_main.h +++ b/src/kernel/dnbd3_main.h @@ -40,6 +40,7 @@ typedef struct { unsigned long rtts[4]; // Last four round trip time measurements in µs uint16_t protocol_version; // dnbd3 protocol version of this server uint8_t failures; // How many times the server was unreachable + uint8_t best_count; // Number of times server measured best struct sockaddr_storage host; // Address of server } dnbd3_alt_server_t; @@ -93,7 +94,8 @@ extern int dnbd3_host_to_sockaddr(const dnbd3_host_t *host, struct sockaddr_stor extern dnbd3_alt_server_t *get_existing_alt_from_host(const dnbd3_host_t *const host, dnbd3_device_t *const dev); -extern dnbd3_alt_server_t *get_existing_alt_from_addr(const struct sockaddr_storage *const addr, dnbd3_device_t *const dev); +extern dnbd3_alt_server_t *get_existing_alt_from_addr(const struct sockaddr_storage *const addr, + dnbd3_device_t *const dev); extern int dnbd3_add_server(dnbd3_device_t *dev, dnbd3_host_t *host); |