summaryrefslogtreecommitdiffstats
path: root/src/kernel/dnbd3.h
diff options
context:
space:
mode:
authorFrederic Robra2019-07-23 13:59:27 +0200
committerFrederic Robra2019-07-23 13:59:27 +0200
commit69e2ce904f48471900da425fc9d26c64baf06c3e (patch)
treecab90fa31d58b939f207d28ff039e218506b1411 /src/kernel/dnbd3.h
parentadded some comments and macros (diff)
downloaddnbd3-ng-69e2ce904f48471900da425fc9d26c64baf06c3e.tar.gz
dnbd3-ng-69e2ce904f48471900da425fc9d26c64baf06c3e.tar.xz
dnbd3-ng-69e2ce904f48471900da425fc9d26c64baf06c3e.zip
removed blocking code
added better macros for debugging
Diffstat (limited to 'src/kernel/dnbd3.h')
-rw-r--r--src/kernel/dnbd3.h78
1 files changed, 64 insertions, 14 deletions
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:
+ * <level>(fmt,...)
+ * print fmt
+ * <level>_dev(dev, fmt,...)
+ * print fmt, adds device information to the log
+ * <level>_sock(sock, fmt,...)
+ * print fmt, adds sock and device information to log
+ * <level>_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__)