From 69e2ce904f48471900da425fc9d26c64baf06c3e Mon Sep 17 00:00:00 2001 From: Frederic Robra Date: Tue, 23 Jul 2019 13:59:27 +0200 Subject: removed blocking code added better macros for debugging --- src/kernel/dnbd3.h | 78 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 64 insertions(+), 14 deletions(-) (limited to 'src/kernel/dnbd3.h') diff --git a/src/kernel/dnbd3.h b/src/kernel/dnbd3.h index 72294b0..ccd3bf1 100644 --- a/src/kernel/dnbd3.h +++ b/src/kernel/dnbd3.h @@ -41,6 +41,7 @@ #define RTT_THRESOULD_LIMIT(best_rtt) ((best_rtt) * 10) #define DEBUG +#define DEBUG_FILE extern struct workqueue_struct *dnbd3_wq; @@ -57,6 +58,24 @@ struct dnbd3_server { uint64_t rtts[4]; uint16_t protocol_version; uint8_t failures; + + /* + * TODO would this help? + * uint8_t failures[4] + * uint8_t avg_failures; + * + * in timer, calculate each x iterations average over failure array + * then move elements in array to left + * for (i = 3; i > 0; i--) { + * server->failures[i] = server->failures[i - 1] + * } + * server-failures[0] = 0; + * failures always go to failures[0] / *failures + * + * - is this to much effort? + * - what are the benefits? + * - could increase the rtt e.g. (rtt = rtt * failures) + */ }; /** @@ -71,7 +90,6 @@ struct dnbd3_server { * @keepalive_worker: worker to send a keepalive package * @receive_worker: worker to handle the incoming packages * @pending: the pending request which is going to be send - * @receive_command: the last command the receiver got */ struct dnbd3_sock { uint8_t sock_nr; @@ -88,7 +106,6 @@ struct dnbd3_sock { struct work_struct receive_worker; struct request *pending; - uint16_t receive_command; }; /** @@ -165,21 +182,54 @@ struct dnbd3_cmd { }; +/** + * macros for logging + * levels: + * - debug + * - info + * - warn + * - error + * methods: + * (fmt,...) + * print fmt + * _dev(dev, fmt,...) + * print fmt, adds device information to the log + * _sock(sock, fmt,...) + * print fmt, adds sock and device information to log + * _server(dev, server, fmt,...) + * print fmt, adds device and appends server information to the log + * DEBUG - if not defined switch of all debug messages + * DEBUG_FILE - if not defined switch of file and line number information + */ + + +#ifdef DEBUG_FILE + +#define __print(level, fmt,...) \ + printk(level "%s:%d " fmt "\n", __FILE__, __LINE__, ## __VA_ARGS__) + +#else + +#define __print(level, fmt,...) \ + printk(fmt, ## __VA_ARGS__) + +#endif + #define __print_sock(level, sock, fmt, ...) \ do { \ if ((sock)->server->host.type == HOST_IP4) { \ - printk(level "dnbd%d/%d %pI4:%d: " fmt "\n", (sock)->device->minor, (sock)->sock_nr, (sock)->server->host.addr, (sock)->server->host.port, ## __VA_ARGS__); \ + __print(level, "dnbd%d/%d %pI4:%d: " fmt, (sock)->device->minor, (sock)->sock_nr, (sock)->server->host.addr, (sock)->server->host.port, ## __VA_ARGS__); \ } else { \ - printk(level "dnbd%d/%d %pI6:%d: " fmt "\n", (sock)->device->minor, (sock)->sock_nr, (sock)->server->host.addr, (sock)->server->host.port, ## __VA_ARGS__); \ + __print(level, "dnbd%d/%d %pI6:%d: " fmt, (sock)->device->minor, (sock)->sock_nr, (sock)->server->host.addr, (sock)->server->host.port, ## __VA_ARGS__); \ } \ } while (0) #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); \ + __print(level, "dnbd%d: " fmt " %pI4:%d", (dev)->minor, ## __VA_ARGS__, (server)->host.addr, (server)->host.port); \ } else { \ - printk(level "dnbd%d: " fmt " %pI6:%d\n", (dev)->minor, ## __VA_ARGS__, (server)->host.addr, (server)->host.port); \ + __print(level, "dnbd%d: " fmt " %pI6:%d", (dev)->minor, ## __VA_ARGS__, (server)->host.addr, (server)->host.port); \ } \ } while (0) @@ -187,10 +237,10 @@ struct dnbd3_cmd { #ifdef DEBUG #define debug(fmt, ...) \ - printk(KERN_DEBUG "dnbd: " fmt "\n", ## __VA_ARGS__) + __print(KERN_DEBUG, "dnbd: " fmt, ## __VA_ARGS__) #define debug_dev(dev, fmt, ...) \ - printk(KERN_DEBUG "dnbd%d: " fmt "\n", (dev)->minor, ## __VA_ARGS__) + __print(KERN_DEBUG, "dnbd%d: " fmt, (dev)->minor, ## __VA_ARGS__) #define debug_sock(sock, fmt, ...) \ __print_sock(KERN_DEBUG, sock, fmt, ## __VA_ARGS__) @@ -211,10 +261,10 @@ struct dnbd3_cmd { #endif #define info(fmt, ...) \ - printk(KERN_INFO "dnbd: " fmt "\n", ## __VA_ARGS__) + __print(KERN_INFO, "dnbd: " fmt, ## __VA_ARGS__) #define info_dev(dev, fmt, ...) \ - printk(KERN_INFO "dnbd%d: " fmt "\n", (dev)->minor, ## __VA_ARGS__) + __print(KERN_INFO, "dnbd%d: " fmt, (dev)->minor, ## __VA_ARGS__) #define info_sock(sock, fmt, ...) \ __print_sock(KERN_INFO, sock, fmt, ## __VA_ARGS__) @@ -224,10 +274,10 @@ struct dnbd3_cmd { #define warn(fmt, ...) \ - printk(KERN_WARNING "dnbd: " fmt "\n", ## __VA_ARGS__) + __print(KERN_WARNING, "dnbd: " fmt, ## __VA_ARGS__) #define warn_dev(dev, fmt, ...) \ - printk(KERN_WARNING "dnbd%d: " fmt "\n", (dev)->minor, ## __VA_ARGS__) + __print(KERN_WARNING, "dnbd%d: " fmt, (dev)->minor, ## __VA_ARGS__) #define warn_sock(sock, fmt, ...) \ __print_sock(KERN_WARNING, sock, fmt, ## __VA_ARGS__) @@ -237,10 +287,10 @@ struct dnbd3_cmd { #define error(fmt, ...) \ - printk(KERN_ERR "dnbd: " fmt "\n", ## __VA_ARGS__) + __print(KERN_ERR, "dnbd: " fmt, ## __VA_ARGS__) #define error_dev(dev, fmt, ...) \ - printk(KERN_ERR "dnbd%d: " fmt "\n", (dev)->minor, ## __VA_ARGS__) + __print(KERN_ERR, "dnbd%d: " fmt, (dev)->minor, ## __VA_ARGS__) #define error_sock(sock, fmt, ...) \ __print_sock(KERN_ERR, sock, fmt, ## __VA_ARGS__) -- cgit v1.2.3-55-g7522