diff options
author | Simon Rettberg | 2018-03-19 17:23:15 +0100 |
---|---|---|
committer | Simon Rettberg | 2018-03-19 17:23:15 +0100 |
commit | ed3c928da64e08f15f3753b1680f6dfed2959c54 (patch) | |
tree | abf2a105dd7e02c67b0f577d7fc63e88dfd28b06 | |
parent | [SERVER] image.c: Add size to RPC data, rename bytesReceived, always add upli... (diff) | |
download | dnbd3-ed3c928da64e08f15f3753b1680f6dfed2959c54.tar.gz dnbd3-ed3c928da64e08f15f3753b1680f6dfed2959c54.tar.xz dnbd3-ed3c928da64e08f15f3753b1680f6dfed2959c54.zip |
[SERVER] Delete image files after releasing image to get rid of stale .map files
-rw-r--r-- | src/server/image.c | 16 |
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; } |