summaryrefslogtreecommitdiffstats
path: root/src/server/altservers.c
diff options
context:
space:
mode:
authorSimon Rettberg2017-09-02 18:03:15 +0200
committerSimon Rettberg2017-09-02 18:03:15 +0200
commit9858ab5bbb2fc5d1569257c0ee8f794fdae1c512 (patch)
tree7bb448cc73f852f5ed0f258daf8c9280755bb52d /src/server/altservers.c
parent[*] Continue splitting #defines to clientconfig.h etc. (diff)
downloaddnbd3-9858ab5bbb2fc5d1569257c0ee8f794fdae1c512.tar.gz
dnbd3-9858ab5bbb2fc5d1569257c0ee8f794fdae1c512.tar.xz
dnbd3-9858ab5bbb2fc5d1569257c0ee8f794fdae1c512.zip
[SERVER] Implement closeUnusedFd config option
This will close the readFd of images that have no active clients after some idle period (1 hour currently). Prevents deleted images from taking up space until the server is shut down.
Diffstat (limited to 'src/server/altservers.c')
-rw-r--r--src/server/altservers.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/server/altservers.c b/src/server/altservers.c
index 4c87344..7c55ab9 100644
--- a/src/server/altservers.c
+++ b/src/server/altservers.c
@@ -345,6 +345,7 @@ static void *altservers_main(void *data UNUSED)
serialized_buffer_t serialized;
struct timespec start, end;
time_t nextCacheMapSave = time( NULL ) + 90;
+ time_t nextCloseUnusedFd = time( NULL ) + 900;
setThreadName( "altserver-check" );
blockNoncriticalSignals();
@@ -525,6 +526,10 @@ static void *altservers_main(void *data UNUSED)
nextCacheMapSave = now + SERVER_CACHE_MAP_SAVE_INTERVAL;
image_saveAllCacheMaps();
}
+ // TODO: More random crap
+ if ( _closeUnusedFd && now > nextCloseUnusedFd ) {
+ image_closeUnusedFd();
+ }
}
cleanup: ;
if ( runSignal != NULL ) signal_close( runSignal );