From 220e8d7720138f9de10072ba4d9596afa138235b Mon Sep 17 00:00:00 2001 From: Frederic Robra Date: Wed, 4 Sep 2019 15:24:44 +0200 Subject: removed initial server and removed replacement of alt servers --- src/kernel/net.c | 58 +++++++++++++++++--------------------------------------- 1 file changed, 17 insertions(+), 41 deletions(-) (limited to 'src/kernel/net.c') diff --git a/src/kernel/net.c b/src/kernel/net.c index 061deb1..8f71b5a 100644 --- a/src/kernel/net.c +++ b/src/kernel/net.c @@ -291,32 +291,6 @@ static int dnbd3_compare_plan(const void *lhs, const void *rhs) return l - r; } -static void dnbd3_lock_all_socks(struct dnbd3_device *dev) -{ - int i; - for (i = 0; i < dev->number_connections; i++) { - mutex_lock(&dev->socks[i].tx_lock); - } -} - -static void dnbd3_unlock_all_socks(struct dnbd3_device *dev) -{ - int i; - for (i = 0; i < dev->number_connections; i++) { - mutex_unlock(&dev->socks[i].tx_lock); - } -} - -static void dnbd3_print_conenction_plan(struct dnbd3_device *dev, - struct dnbd3_server **plan) -{ - int i; - debug_dev(dev, "connection plan:"); - for (i = 0; i < dev->number_connections; i++) { - debug_server(dev, plan[i], "server %d with avg rtt %llu:", - i, plan[i]->avg_rtt); - } -} /** * dnbd3_adjust_connections - create a connection plan and connect @@ -361,9 +335,17 @@ static int dnbd3_adjust_connections(struct dnbd3_device *dev) { sort(plan, dev->number_connections, sizeof(struct dnbd3_server *), &dnbd3_compare_plan, NULL); - dnbd3_print_conenction_plan(dev, plan); - dnbd3_lock_all_socks(dev); + /* lock all mutex at once, so nothing can be send */ + debug_dev(dev, "connection plan:"); + for (i = 0; i < dev->number_connections; i++) { + debug_server(dev, plan[i], + "server %d with avg rtt %llu:", + i, plan[i]->avg_rtt); + + mutex_lock(&dev->socks[i].tx_lock); + } + alive = 0; for (i = 0; i < dev->number_connections; i++) { if (plan[i] != dev->socks[i].server || @@ -379,8 +361,9 @@ static int dnbd3_adjust_connections(struct dnbd3_device *dev) { } else { alive++; } + mutex_unlock(&dev->socks[i].tx_lock); } - dnbd3_unlock_all_socks(dev); + if (alive == 0) { return -EIO; } @@ -540,10 +523,8 @@ static void dnbd3_merge_new_server(struct dnbd3_device *dev, dnbd3_server_entry_t *new_server) { int i; - struct dnbd3_server *existing_server, *free_server, *failed_server; - existing_server = NULL; - free_server = NULL; - failed_server = NULL; + struct dnbd3_server *existing_server = NULL; + struct dnbd3_server *free_server = NULL; /* find servers in alternative servers */ for (i = 0; i < NUMBER_SERVERS; i++) { @@ -557,8 +538,6 @@ static void dnbd3_merge_new_server(struct dnbd3_device *dev, existing_server = &dev->alt_servers[i]; } else if (dev->alt_servers[i].host.type == 0) { free_server = &dev->alt_servers[i]; - } else if (dev->alt_servers[i].failures > 20) { - failed_server = &dev->alt_servers[i]; } } @@ -566,19 +545,16 @@ static void dnbd3_merge_new_server(struct dnbd3_device *dev, if (new_server->failures == 1) { /* remove is requested */ info_server(dev, new_server, "remove server is requested"); - // adjust connection will remove it later + /* adjust connection will remove it later */ existing_server->host.type = 0; dnbd3_set_rtt_unreachable(existing_server); } -// existing_server->failures = 0; // reset failure count return; } else if (free_server) { - //TODO disconnect the server if it is connected free_server->host = new_server->host; - } else if (failed_server) { - failed_server->host = new_server->host; - free_server = failed_server; } else { + warn_dev(dev, "reached the maximum of %d servers", + NUMBER_SERVERS); /* no server found to replace */ return; } -- cgit v1.2.3-55-g7522