summaryrefslogtreecommitdiffstats
path: root/src/server/uplink.c
diff options
context:
space:
mode:
authorSimon Rettberg2018-06-25 16:09:15 +0200
committerSimon Rettberg2018-06-25 16:09:15 +0200
commitc73deeb2903831b63025f9d2f38dc01e93346d1e (patch)
tree7717940567465232ea7e9a19b0ab577983ac2e6b /src/server/uplink.c
parent[SERVER] Try to re-open cacheFd if writing fails (diff)
downloaddnbd3-c73deeb2903831b63025f9d2f38dc01e93346d1e.tar.gz
dnbd3-c73deeb2903831b63025f9d2f38dc01e93346d1e.tar.xz
dnbd3-c73deeb2903831b63025f9d2f38dc01e93346d1e.zip
[SERVER] Use likely/unlikely in uplink disk writing loop
Diffstat (limited to 'src/server/uplink.c')
-rw-r--r--src/server/uplink.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/server/uplink.c b/src/server/uplink.c
index 8a6a33a..c0babaa 100644
--- a/src/server/uplink.c
+++ b/src/server/uplink.c
@@ -594,17 +594,17 @@ static void uplink_handleReceive(dnbd3_connection_t *link)
link->bytesReceived += inReply.size;
spin_unlock( &link->image->lock );
// 1) Write to cache file
- if ( link->image->cacheFd == -1 ) {
+ if ( unlikely( link->image->cacheFd == -1 ) ) {
image_reopenCacheFd( link->image, false );
}
- if ( link->image->cacheFd != -1 ) {
+ if ( likely( link->image->cacheFd != -1 ) ) {
int err = 0;
bool tryAgain = true; // Allow one retry in case we run out of space or the write fd became invalid
uint32_t done = 0;
ret = 0;
while ( done < inReply.size ) {
ret = (int)pwrite( link->image->cacheFd, link->recvBuffer + done, inReply.size - done, start + done );
- if ( ret == -1 ) {
+ if ( unlikely( ret == -1 ) ) {
err = errno;
if ( err == EINTR ) continue;
if ( err == ENOSPC || err == EDQUOT ) {
@@ -622,7 +622,7 @@ static void uplink_handleReceive(dnbd3_connection_t *link)
logadd( LOG_DEBUG1, "Error trying to cache data for %s:%d -- errno=%d", link->image->name, (int)link->image->rid, err );
break;
}
- if ( ret <= 0 || (uint32_t)ret > inReply.size - done ) {
+ if ( unlikely( ret <= 0 || (uint32_t)ret > inReply.size - done ) ) {
logadd( LOG_WARNING, "Unexpected return value %d from pwrite to %s:%d", ret, link->image->name, (int)link->image->rid );
break;
}