qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC V6 04/33] qcow2: Add qcow2_dedup_read_missing_and_


From: Benoît Canet
Subject: Re: [Qemu-devel] [RFC V6 04/33] qcow2: Add qcow2_dedup_read_missing_and_concatenate
Date: Fri, 8 Feb 2013 15:12:57 +0100
User-agent: Mutt/1.5.21 (2010-09-15)

> > +    /* Fix cluster_ending_nr if we are at risk of reading outside the image
> > +     * (Cluster unaligned image size)
> > +     */
> > +    max_cluster_ending_nr = bs->total_sectors - first_sector_after_qiov;
> > +    cluster_ending_nr = max_cluster_ending_nr < (uint64_t) 
> > cluster_ending_nr ?
> > +                        (int) max_cluster_ending_nr : cluster_ending_nr;
> 
> Is there a test case for the cluster unaligned image size scenario?

I discovered this case using qemu-io-tests one of the test case trigger this.

> > +    iov.iov_len = nb_sectors * BDRV_SECTOR_SIZE;
> > +    iov.iov_base = data;
> > +    qemu_iovec_init_external(&qiov, &iov, 1);
> > +    qemu_co_mutex_unlock(&s->lock);
> > +    ret = bdrv_co_readv(bs, sector_num, nb_sectors, &qiov);
> 
> This function should be marked coroutine_fn - it may only be called from
> inside a coroutine.  It's good to mark all coroutine functions so the
> reader knows immediately this will run in coroutine context.
> 
> bdrv_co_readv() is does I/O throttling.  This is wrong here since we
> don't want to charge for internal I/O.
Should I use qcow2_co_readv to bypass the I/O throttling ?

Benoît



reply via email to

[Prev in Thread] Current Thread [Next in Thread]