summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2021-03-26 13:48:24 +0100
committerSimon Rettberg2021-03-26 13:48:24 +0100
commit052a248020ac82a2d090537e8986fcf2a37640e5 (patch)
treec29126a8445414cd7a6dfdee66e60408bed35f7d
parent[KERNEL] Implement best_count logic for load balancing (diff)
downloaddnbd3-052a248020ac82a2d090537e8986fcf2a37640e5.tar.gz
dnbd3-052a248020ac82a2d090537e8986fcf2a37640e5.tar.xz
dnbd3-052a248020ac82a2d090537e8986fcf2a37640e5.zip
[KERNEL] Overhaul sysfs files
Remove superflous, reduntant or otherwise useless information. Use space as separator instead of comma for better readability and easier parsing in shell etc.
-rw-r--r--src/kernel/sysfs.c52
-rw-r--r--src/kernel/sysfs.h6
2 files changed, 18 insertions, 40 deletions
diff --git a/src/kernel/sysfs.c b/src/kernel/sysfs.c
index 3355080..5b07ae3 100644
--- a/src/kernel/sysfs.c
+++ b/src/kernel/sysfs.c
@@ -28,27 +28,18 @@
#define MIN(a, b) ((a) < (b) ? (a) : (b))
#endif
+/**
+ * Print currently connected server IP:PORT
+ */
ssize_t show_cur_server_addr(char *buf, dnbd3_device_t *dev)
{
return MIN(snprintf(buf, PAGE_SIZE, "%pISpc\n", &dev->cur_server.host), PAGE_SIZE);
}
-ssize_t show_cur_server_rtt(char *buf, dnbd3_device_t *dev)
-{
- return MIN(snprintf(buf, PAGE_SIZE, "%lu\n", dev->cur_server.rtt), PAGE_SIZE);
-}
-
-ssize_t show_alt_server_num(char *buf, dnbd3_device_t *dev)
-{
- int i, num = 0;
-
- for (i = 0; i < NUMBER_SERVERS; ++i) {
- if (dev->alt_servers[i].host.ss_family != 0)
- ++num;
- }
- return MIN(snprintf(buf, PAGE_SIZE, "%d\n", num), PAGE_SIZE);
-}
-
+/**
+ * List alt servers. One line per server, format is:
+ * IP:PORT RTT consecutive_failures best_count
+ */
ssize_t show_alt_servers(char *buf, dnbd3_device_t *dev)
{
int i, size = PAGE_SIZE, ret;
@@ -57,12 +48,13 @@ ssize_t show_alt_servers(char *buf, dnbd3_device_t *dev)
if (dev->alt_servers[i].host.ss_family == 0)
continue;
- ret = MIN(snprintf(buf, size, "%pISpc,%llu,%d\n", &dev->alt_servers[i].host,
+ ret = MIN(snprintf(buf, size, "%pISpc %llu %d %d\n", &dev->alt_servers[i].host,
(unsigned long long)((dev->alt_servers[i].rtts[0] +
dev->alt_servers[i].rtts[1] +
dev->alt_servers[i].rtts[2] +
dev->alt_servers[i].rtts[3]) / 4),
- (int)dev->alt_servers[i].failures),
+ (int)dev->alt_servers[i].failures,
+ (int)dev->alt_servers[i].best_count),
size);
size -= ret;
buf += ret;
@@ -74,13 +66,17 @@ ssize_t show_alt_servers(char *buf, dnbd3_device_t *dev)
return PAGE_SIZE - size;
}
+/**
+ * Show name of image in use
+ */
ssize_t show_image_name(char *buf, dnbd3_device_t *dev)
{
- if (dev->imgname == NULL)
- return sprintf(buf, "(null)");
return MIN(snprintf(buf, PAGE_SIZE, "%s\n", dev->imgname), PAGE_SIZE);
}
+/**
+ * Show rid of image in use
+ */
ssize_t show_rid(char *buf, dnbd3_device_t *dev)
{
return MIN(snprintf(buf, PAGE_SIZE, "%d\n", dev->rid), PAGE_SIZE);
@@ -97,18 +93,6 @@ device_attr_t cur_server_addr = {
.store = NULL,
};
-device_attr_t cur_server_rtt = {
- .attr = { .name = "cur_server_rtt", .mode = 0444 },
- .show = show_cur_server_rtt,
- .store = NULL,
-};
-
-device_attr_t alt_server_num = {
- .attr = { .name = "alt_server_num", .mode = 0444 },
- .show = show_alt_server_num,
- .store = NULL,
-};
-
device_attr_t alt_servers = {
.attr = { .name = "alt_servers", .mode = 0444 },
.show = show_alt_servers,
@@ -142,8 +126,8 @@ ssize_t device_show(struct kobject *kobj, struct attribute *attr, char *buf)
}
struct attribute *device_attrs[] = {
- &cur_server_addr.attr, &cur_server_rtt.attr,
- &alt_server_num.attr, &alt_servers.attr,
+ &cur_server_addr.attr,
+ &alt_servers.attr,
&image_name.attr, &rid.attr,
&update_available.attr, NULL,
};
diff --git a/src/kernel/sysfs.h b/src/kernel/sysfs.h
index b744c8b..015147b 100644
--- a/src/kernel/sysfs.h
+++ b/src/kernel/sysfs.h
@@ -34,10 +34,4 @@ typedef struct {
ssize_t (*store)(const char *buf, size_t len, dnbd3_device_t *dev);
} device_attr_t;
-typedef struct {
- struct attribute attr;
- ssize_t (*show)(char *buf, dnbd3_alt_server_t *dev);
- ssize_t (*store)(const char *buf, size_t len, dnbd3_alt_server_t *dev);
-} server_attr_t;
-
#endif /* SYSFS_H_ */