From 052a248020ac82a2d090537e8986fcf2a37640e5 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 26 Mar 2021 13:48:24 +0100 Subject: [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. --- src/kernel/sysfs.c | 52 ++++++++++++++++++---------------------------------- src/kernel/sysfs.h | 6 ------ 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_ */ -- cgit v1.2.3-55-g7522