diff options
-rw-r--r-- | ot_sync.c | 19 |
1 files changed, 5 insertions, 14 deletions
@@ -96,19 +96,10 @@ static void sync_make( int *iovec_entries, struct iovec **iovector ) { | |||
96 | /* If we reached our low watermark in buffer... */ | 96 | /* If we reached our low watermark in buffer... */ |
97 | if( re - r <= (ssize_t)(/* strlen( "20:" ) == */ 3 + sizeof( ot_hash ) + /* strlen_max( "%zd" ) == */ 12 + byte_count ) ) { | 97 | if( re - r <= (ssize_t)(/* strlen( "20:" ) == */ 3 + sizeof( ot_hash ) + /* strlen_max( "%zd" ) == */ 12 + byte_count ) ) { |
98 | 98 | ||
99 | /* crop current output buffer to the amount really used */ | 99 | /* Allocate a fresh output buffer at the end of our buffers list |
100 | iovec_fixlast( iovec_entries, iovector, OT_SYNC_CHUNK_SIZE - ( re - r ) ); | 100 | release bucket and return, if that fails */ |
101 | 101 | if( !( r = iovec_fix_increase_or_free( iovec_entries, iovector, r, OT_SYNC_CHUNK_SIZE ) ) ) | |
102 | /* And allocate a fresh output buffer at the end of our buffers list */ | 102 | return mutex_bucket_unlock( bucket ); |
103 | if( !( r = iovec_increase( iovec_entries, iovector, OT_SYNC_CHUNK_SIZE ) ) ) { | ||
104 | |||
105 | /* If this fails: free buffers */ | ||
106 | iovec_free( iovec_entries, iovector ); | ||
107 | |||
108 | /* Release lock on current bucket and return */ | ||
109 | mutex_bucket_unlock( bucket ); | ||
110 | return; | ||
111 | } | ||
112 | 103 | ||
113 | /* Adjust new end of output buffer */ | 104 | /* Adjust new end of output buffer */ |
114 | re = r + OT_SYNC_CHUNK_SIZE; | 105 | re = r + OT_SYNC_CHUNK_SIZE; |
@@ -128,7 +119,7 @@ static void sync_make( int *iovec_entries, struct iovec **iovector ) { | |||
128 | *r++='e'; *r++='e'; | 119 | *r++='e'; *r++='e'; |
129 | 120 | ||
130 | /* Release unused memory in current output buffer */ | 121 | /* Release unused memory in current output buffer */ |
131 | iovec_fixlast( iovec_entries, iovector, OT_SYNC_CHUNK_SIZE - ( re - r ) ); | 122 | iovec_fixlast( iovec_entries, iovector, r ); |
132 | } | 123 | } |
133 | 124 | ||
134 | /* This is the entry point into this worker thread | 125 | /* This is the entry point into this worker thread |