summaryrefslogtreecommitdiffstats
path: root/src/kernel/dnbd3.h
diff options
context:
space:
mode:
authorFrederic Robra2019-07-17 15:24:49 +0200
committerFrederic Robra2019-07-17 15:24:49 +0200
commit278fcb346fa53d94ad018cdd2f80dfd8b99335c2 (patch)
tree1e59a5dc51a5827f624133e56aec28264123bd2f /src/kernel/dnbd3.h
parentdiscovery now connects to new slots (diff)
downloaddnbd3-ng-278fcb346fa53d94ad018cdd2f80dfd8b99335c2.tar.gz
dnbd3-ng-278fcb346fa53d94ad018cdd2f80dfd8b99335c2.tar.xz
dnbd3-ng-278fcb346fa53d94ad018cdd2f80dfd8b99335c2.zip
fixed various bugs
Diffstat (limited to 'src/kernel/dnbd3.h')
-rw-r--r--src/kernel/dnbd3.h67
1 files changed, 47 insertions, 20 deletions
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_ */