summaryrefslogtreecommitdiffstats
path: root/src/server
diff options
context:
space:
mode:
authorSimon Rettberg2018-03-19 17:23:15 +0100
committerSimon Rettberg2018-03-19 17:23:15 +0100
commited3c928da64e08f15f3753b1680f6dfed2959c54 (patch)
treeabf2a105dd7e02c67b0f577d7fc63e88dfd28b06 /src/server
parent[SERVER] image.c: Add size to RPC data, rename bytesReceived, always add upli... (diff)
downloaddnbd3-ed3c928da64e08f15f3753b1680f6dfed2959c54.tar.gz
dnbd3-ed3c928da64e08f15f3753b1680f6dfed2959c54.tar.xz
dnbd3-ed3c928da64e08f15f3753b1680f6dfed2959c54.zip
[SERVER] Delete image files after releasing image to get rid of stale .map files
Diffstat (limited to 'src/server')
-rw-r--r--src/server/image.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/server/image.c b/src/server/image.c
index ec0ab7b..13627d8 100644
--- a/src/server/image.c
+++ b/src/server/image.c
@@ -1761,17 +1761,19 @@ static bool image_ensureDiskSpace(uint64_t size, bool force)
oldest = image_lock( oldest );
if ( oldest == NULL ) continue; // Image freed in the meantime? Try again
logadd( LOG_INFO, "'%s:%d' has to go!", oldest->name, (int)oldest->rid );
- unlink( oldest->path );
- size_t len = strlen( oldest->path ) + 5 + 1;
+ char *filename = strdup( oldest->path );
+ oldest = image_remove( oldest );
+ oldest = image_release( oldest );
+ unlink( filename );
+ size_t len = strlen( filename ) + 10;
char buffer[len];
- snprintf( buffer, len, "%s.map", oldest->path );
+ snprintf( buffer, len, "%s.map", filename );
unlink( buffer );
- snprintf( buffer, len, "%s.crc", oldest->path );
+ snprintf( buffer, len, "%s.crc", filename );
unlink( buffer );
- snprintf( buffer, len, "%s.meta", oldest->path );
+ snprintf( buffer, len, "%s.meta", filename );
unlink( buffer );
- oldest = image_remove( oldest );
- oldest = image_release( oldest );
+ free( filename );
}
return false;
}