qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 2/4] block: immediately cancel oversized read/wr


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH 2/4] block: immediately cancel oversized read/write requests
Date: Mon, 08 Sep 2014 15:49:22 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0

Il 08/09/2014 15:44, Benoît Canet ha scritto:
>> > +    if (bs->bl.max_transfer_length && nb_sectors > 
>> > bs->bl.max_transfer_length) {
>> > +        error_report("read of %d sectors at sector %ld exceeds device max"
>> > +                     " transfer length of %d sectors.", nb_sectors, 
>> > sector_num,
>> > +                     bs->bl.max_transfer_length);
>> > +        return -EINVAL;
>> > +    }
>> > +
>> >      return bdrv_co_do_preadv(bs, sector_num << BDRV_SECTOR_BITS,
>> >                               nb_sectors << BDRV_SECTOR_BITS, qiov, flags);
>> >  }
>> > @@ -3507,6 +3514,13 @@ static int coroutine_fn 
>> > bdrv_co_do_writev(BlockDriverState *bs,
>> >          return -EINVAL;
>> >      }
>> >  
>> > +    if (bs->bl.max_transfer_length && nb_sectors > 
>> > bs->bl.max_transfer_length) {
>> > +        error_report("write of %d sectors at sector %ld exceeds device 
>> > max"
>> > +                     " transfer length of %d sectors.", nb_sectors, 
>> > sector_num,
>> > +                     bs->bl.max_transfer_length);
>> > +        return -EINVAL;
>> > +    }
>> > +
>> >      return bdrv_co_do_pwritev(bs, sector_num << BDRV_SECTOR_BITS,
>> >                                nb_sectors << BDRV_SECTOR_BITS, qiov, 
>> > flags);
>> >  }
>> > -- 
>> > 1.7.9.5
>> > 
>> > 
> Look like you are changing the coroutine version.
> 
> Some hardware like virtio-blk uses the AIO version of read and writes.
> What would happen if all the block drivers down the chain are AIO enabled ?

The AIO version still goes through bdrv_co_do_readv/writev.

However, error_report is not something you can use for guest-accessible
error messages, unless you want your logs to fill up with error messages. :)

Paolo



reply via email to

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