s = format (s, "cursize %u nitems %u has_event %d\n",
f->cursize, f->nitems, f->has_event);
- s = format (s, "head %d tail %d\n", f->head, f->tail);
+ s = format (s, " head %d tail %d\n", f->head, f->tail);
if (verbose > 1)
s = format
- (s, "server session %d thread %d client session %d thread %d\n",
+ (s, " server session %d thread %d client session %d thread %d\n",
f->master_session_index, f->master_thread_index,
f->client_session_index, f->client_thread_index);
if (verbose)
{
- s = format (s, "ooo pool %d active elts\n",
+ s = format (s, " ooo pool %d active elts\n",
pool_elts (f->ooo_segments));
- s = format (s, "%U", format_ooo_list, f);
+ if (svm_fifo_has_ooo_data (f))
+ s = format (s, " %U", format_ooo_list, f);
}
return s;
}
/* read cursize, which can only increase while we're working */
cursize = svm_fifo_max_dequeue (f);
- if (PREDICT_FALSE (cursize == 0))
+ if (PREDICT_FALSE (cursize < relative_offset))
return -2; /* nothing in the fifo */
nitems = f->nitems;
real_head = real_head >= nitems ? real_head - nitems : real_head;
/* Number of bytes we're going to copy */
- total_copy_bytes = (cursize < max_bytes) ? cursize : max_bytes;
+ total_copy_bytes = (cursize - relative_offset < max_bytes) ?
+ cursize - relative_offset : max_bytes;
if (PREDICT_TRUE (copy_here != 0))
{