Il 21/09/2012 16:08, Juan Quintela ha scritto: > We call buffered_put_buffer with iothread held, and buffered_flush() does > synchronous writes. We only want to do the synchronous writes outside. > > Signed-off-by: Juan Quintela <quint...@redhat.com> > --- > buffered_file.c | 6 ------ > 1 file changed, 6 deletions(-) > > diff --git a/buffered_file.c b/buffered_file.c > index f4a788d..929b911 100644 > --- a/buffered_file.c > +++ b/buffered_file.c > @@ -107,12 +107,6 @@ static int buffered_put_buffer(void *opaque, const > uint8_t *buf, int64_t pos, in > buffered_append(s, buf, size); > } > > - error = buffered_flush(s); > - if (error < 0) { > - DPRINTF("buffered flush error. bailing: %s\n", strerror(-error)); > - return error; > - } > - > return size; > } >
This means that the buffer can grow to up to s->xfer_limit bytes. Perhaps you want to make the granularity (currently fixed to 100ms) a bit smaller, like 20-30 ms, if the bandwidth limit grows above say 100 MB/sec? This can be done on top of this series however. Reviewed-by: Paolo Bonzini <pbonz...@redhat.com>