On 06/22/2016 01:51 PM, John Snow wrote: > During the refactor of mirror_iteration in e5b43573, > we regressed the fix introduced in cae98cb8. > > This patch re-adds IOV_MAX checking to cases where we > aren't checking alignment (and size) already. > > Signed-off-by: John Snow <js...@redhat.com> > --- > block/mirror.c | 3 +++ > 1 file changed, 3 insertions(+)
Reviewed-by: Eric Blake <ebl...@redhat.com> > > diff --git a/block/mirror.c b/block/mirror.c > index 2ba9642..377339d 100644 > --- a/block/mirror.c > +++ b/block/mirror.c > @@ -231,11 +231,14 @@ static int mirror_do_read(MirrorBlockJob *s, int64_t > sector_num, > int sectors_per_chunk, nb_chunks; > int ret; > MirrorOp *op; > + int max_sectors; > > sectors_per_chunk = s->granularity >> BDRV_SECTOR_BITS; > + max_sectors = sectors_per_chunk * s->max_iov; > > /* We can only handle as much as buf_size at a time. */ > nb_sectors = MIN(s->buf_size >> BDRV_SECTOR_BITS, nb_sectors); > + nb_sectors = MIN(max_sectors, nb_sectors); > assert(nb_sectors); > ret = nb_sectors; > > -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature