From 278fcb346fa53d94ad018cdd2f80dfd8b99335c2 Mon Sep 17 00:00:00 2001 From: Frederic Robra Date: Wed, 17 Jul 2019 15:24:49 +0200 Subject: fixed various bugs --- src/kernel/dnbd3.h | 67 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 47 insertions(+), 20 deletions(-) (limited to 'src/kernel/dnbd3.h') diff --git a/src/kernel/dnbd3.h b/src/kernel/dnbd3.h index 43b923f..c9f9fab 100644 --- a/src/kernel/dnbd3.h +++ b/src/kernel/dnbd3.h @@ -31,32 +31,49 @@ #include "serialize.h" -#define NUMBER_CONNECTIONS 4 // power of 2 +#define NUMBER_CONNECTIONS 2 // power of 2 #define DEBUG extern struct workqueue_struct *dnbd3_wq; +/** + * struct dnbd3_server - defining a server for dnbd3 + * @host: host of this server + * @rtts: last four round trip time measurements in microseconds + * @protocol_version: dnbd3 protocol version of this server + * @failures: how many times the server was unreachable + */ struct dnbd3_server { dnbd3_host_t host; - uint64_t rtts[4]; // Last four round trip time measurements in microsecond - uint16_t protocol_version; // dnbd3 protocol version of this server - uint8_t failures; // How many times the server was unreachable + uint64_t rtts[4]; + uint16_t protocol_version; + uint8_t failures; }; - +/** + * struct dnbd3_sock - defining a socket for dnbd3 + * @sock_nr: nr of this socket + * @device: the dnbd3_device this socket belongs to + * @server: the server this socket is connected to, 'NULL' if not connected + * + */ struct dnbd3_sock { - uint16_t sock_nr; - struct socket *sock; - struct mutex lock; - struct request *pending; + uint8_t sock_nr; + struct dnbd3_device *device; struct dnbd3_server *server; + + struct mutex tx_lock; + struct socket *sock; + + bool panic;//, discover, panic_count; uint32_t cookie; - uint8_t panic;//, discover, panic_count; - struct dnbd3_device *device; + struct work_struct keepalive_worker; - struct timer_list keepalive_timer; struct work_struct receive_worker; + + struct request *pending; + uint16_t receive_command; }; struct dnbd3_device { @@ -79,13 +96,13 @@ struct dnbd3_device { struct dnbd3_server alt_servers[NUMBER_SERVERS]; // array of alt servers int new_servers_num; // number of new alt servers that are waiting to be copied to above array dnbd3_server_entry_t new_servers[NUMBER_SERVERS]; // pending new alt servers - uint8_t update_available; - uint8_t use_server_provided_alts; + bool update_available; + bool use_server_provided_alts; uint16_t rid; uint64_t reported_size; struct work_struct panic_worker; - struct work_struct discovery_worker; // if in irq and need to send request + struct work_struct discovery_worker; uint8_t discovery_count; struct timer_list timer; uint8_t timer_count; @@ -95,11 +112,9 @@ struct dnbd3_device { struct dnbd3_cmd { struct dnbd3_device *dnbd3; struct mutex lock; -// int index; uint32_t cookie; blk_status_t status; - unsigned long flags; -// uint32_t cmd_cookie; + bool requed; }; @@ -112,7 +127,7 @@ struct dnbd3_cmd { } \ } while (0) -#define print_server(level, dev, server, fmt, ...) \ +#define _print_server(level, dev, server, fmt, ...) \ do { \ if ((server)->host.type == HOST_IP4) { \ printk(level "dnbd%d: " fmt " %pI4:%d\n", (dev)->minor, ## __VA_ARGS__, (server)->host.addr, (server)->host.port); \ @@ -133,6 +148,8 @@ struct dnbd3_cmd { #define debug_sock(sock, fmt, ...) \ _print_sock(KERN_DEBUG, sock, fmt, ## __VA_ARGS__) +#define debug_server(dev, server, fmt, ...) \ + _print_server(KERN_DEBUG, dev, server, fmt, ## __VA_ARGS__) #else @@ -142,6 +159,7 @@ struct dnbd3_cmd { #define debug_sock(sock, fmt, ...) +#define debug_server(dev, server, fmt, ...) #endif @@ -152,7 +170,10 @@ struct dnbd3_cmd { printk(KERN_INFO "dnbd%d: " fmt "\n", (dev)->minor, ## __VA_ARGS__) #define info_sock(sock, fmt, ...) \ - _print_sock(KERN_DEBUG, sock, fmt, ## __VA_ARGS__) + _print_sock(KERN_INFO, sock, fmt, ## __VA_ARGS__) + +#define info_server(dev, server, fmt, ...) \ + _print_server(KERN_INFO, dev, server, fmt, ## __VA_ARGS__) #define warn(fmt, ...) \ @@ -164,6 +185,9 @@ struct dnbd3_cmd { #define warn_sock(sock, fmt, ...) \ _print_sock(KERN_WARNING, sock, fmt, ## __VA_ARGS__) +#define warn_server(dev, server, fmt, ...) \ + _print_server(KERN_WARNING, dev, server, fmt, ## __VA_ARGS__) + #define error(fmt, ...) \ printk(KERN_ERR "dnbd: " fmt "\n", ## __VA_ARGS__) @@ -174,4 +198,7 @@ struct dnbd3_cmd { #define error_sock(sock, fmt, ...) \ _print_sock(KERN_ERR, sock, fmt, ## __VA_ARGS__) +#define error_server(dev, server, fmt, ...) \ + _print_server(KERN_ERR, dev, server, fmt, ## __VA_ARGS__) + #endif /* DNBD_H_ */ -- cgit v1.2.3-55-g7522