summaryrefslogtreecommitdiffstats
path: root/src/server
diff options
context:
space:
mode:
authorSimon Rettberg2017-09-08 16:22:45 +0200
committerSimon Rettberg2017-09-08 16:22:45 +0200
commit68ac73f3256c7a25e3f3e0eaaeb5fe29d1fa05ee (patch)
tree532213771c1ed9c9388896ae0b5f3435b496b59b /src/server
parent[SERVER] Refactor: Move client list to net.* and isolate (diff)
downloaddnbd3-68ac73f3256c7a25e3f3e0eaaeb5fe29d1fa05ee.tar.gz
dnbd3-68ac73f3256c7a25e3f3e0eaaeb5fe29d1fa05ee.tar.xz
dnbd3-68ac73f3256c7a25e3f3e0eaaeb5fe29d1fa05ee.zip
[SERVER] Fix closing timeout reset, fix log messages
Diffstat (limited to 'src/server')
-rw-r--r--src/server/altservers.c1
-rw-r--r--src/server/image.c5
2 files changed, 5 insertions, 1 deletions
diff --git a/src/server/altservers.c b/src/server/altservers.c
index 7c55ab9..208af92 100644
--- a/src/server/altservers.c
+++ b/src/server/altservers.c
@@ -528,6 +528,7 @@ static void *altservers_main(void *data UNUSED)
}
// TODO: More random crap
if ( _closeUnusedFd && now > nextCloseUnusedFd ) {
+ nextCloseUnusedFd = now + 900;
image_closeUnusedFd();
}
}
diff --git a/src/server/image.c b/src/server/image.c
index 4061e1a..1504dae 100644
--- a/src/server/image.c
+++ b/src/server/image.c
@@ -370,7 +370,7 @@ dnbd3_image_t* image_get(char *name, uint16_t revision, bool checkIfWorking)
logadd( LOG_DEBUG2, "Reading first %d bytes from %s failed (errno=%d)%s.",
(int)sizeof(buffer), candidate->path, errno, removingText );
reload = true;
- } else {
+ } else if ( !candidate->working ) {
// Seems everything is fine again \o/
candidate->working = true;
logadd( LOG_INFO, "Changed state of %s:%d to 'working'", candidate->name, candidate->rid );
@@ -1667,6 +1667,7 @@ void image_closeUnusedFd()
{
int fd, i;
time_t deadline = time( NULL ) - UNUSED_FD_TIMEOUT;
+ char imgstr[300];
spin_lock( &imageListLock );
for (i = 0; i < _num_images; ++i) {
dnbd3_image_t * const image = _images[i];
@@ -1675,6 +1676,7 @@ void image_closeUnusedFd()
spin_lock( &image->lock );
spin_unlock( &imageListLock );
if ( image->users == 0 && image->atime < deadline ) {
+ snprintf( imgstr, sizeof(imgstr), "%s:%d", image->name, (int)image->rid );
fd = image->readFd;
image->readFd = -1;
} else {
@@ -1683,6 +1685,7 @@ void image_closeUnusedFd()
spin_unlock( &image->lock );
if ( fd != -1 ) {
close( fd );
+ logadd( LOG_DEBUG1, "Inactive fd closed for %s", imgstr );
}
spin_lock( &imageListLock );
}