summaryrefslogtreecommitdiffstats
path: root/src/server/uplink.c
diff options
context:
space:
mode:
authorSimon Rettberg2020-03-06 15:00:46 +0100
committerSimon Rettberg2020-03-06 15:00:46 +0100
commitff4e770e645c05da48baddb30a77b9dc15ca76fd (patch)
tree7eb155343d7b5ece21479fa8f81524cfba7b672e /src/server/uplink.c
parent[SERVER] Reload cache maps periodically for local images (diff)
downloaddnbd3-ff4e770e645c05da48baddb30a77b9dc15ca76fd.tar.gz
dnbd3-ff4e770e645c05da48baddb30a77b9dc15ca76fd.tar.xz
dnbd3-ff4e770e645c05da48baddb30a77b9dc15ca76fd.zip
[SERVER] Handle "warn unused result" cases
Diffstat (limited to 'src/server/uplink.c')
-rw-r--r--src/server/uplink.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/server/uplink.c b/src/server/uplink.c
index e644e56..71d9f94 100644
--- a/src/server/uplink.c
+++ b/src/server/uplink.c
@@ -1098,7 +1098,8 @@ static void uplink_addCrc32(dnbd3_uplink_t *uplink)
lists_crc = crc32( lists_crc, (uint8_t*)buffer, bytes );
lists_crc = net_order_32( lists_crc );
if ( lists_crc != masterCrc ) {
- logadd( LOG_WARNING, "Received corrupted crc32 list from uplink server (%s)!", uplink->image->name );
+ logadd( LOG_WARNING, "Received corrupted crc32 list from uplink server (%s:%d)!",
+ uplink->image->name, (int)uplink->image->rid );
free( buffer );
return;
}
@@ -1108,10 +1109,15 @@ static void uplink_addCrc32(dnbd3_uplink_t *uplink)
char path[len];
snprintf( path, len, "%s.crc", uplink->image->path );
const int fd = open( path, O_WRONLY | O_CREAT, 0644 );
- if ( fd >= 0 ) {
- write( fd, &masterCrc, sizeof(uint32_t) );
- write( fd, buffer, bytes );
+ if ( fd != -1 ) {
+ ssize_t ret = write( fd, &masterCrc, sizeof(masterCrc) );
+ ret += write( fd, buffer, bytes );
close( fd );
+ if ( (size_t)ret != sizeof(masterCrc) + bytes ) {
+ unlink( path );
+ logadd( LOG_WARNING, "Could not write crc32 file for %s:%d",
+ uplink->image->name, (int)uplink->image->rid );
+ }
}
}