[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 01/11] block: Add op blocker type "device IO"
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH v2 01/11] block: Add op blocker type "device IO" |
Date: |
Wed, 13 May 2015 14:04:03 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 |
On 13/05/2015 19:28, Fam Zheng wrote:
> @@ -478,6 +478,10 @@ static int blk_check_request(BlockBackend *blk, int64_t
> sector_num,
> return -EIO;
> }
>
> + if (bdrv_op_is_blocked(blk->bs, BLOCK_OP_TYPE_DEVICE_IO, NULL)) {
> + return -EBUSY;
> + }
I think this is incorrect. It's fine for backends to generate more I/O
after a blocker is submitted, as long as it's bounded.
For example, SCSI requests can result in many consecutive I/Os:
(1) FUA requests are split in write+flush
(2) adapters that do not use QEMUSGList-based I/O only read 128K at a time
(3) WRITE SAME operations are also split in chunks
(4) UNMAP operations process one descriptor at a time
Paolo
> return blk_check_byte_request(blk, sector_num * BDRV_SECTOR_SIZE,
> nb_sectors * BDRV_SECTOR_SIZE);
> }
[Qemu-devel] [PATCH v2 02/11] block: Add op blocker notifier list, Fam Zheng, 2015/05/13
[Qemu-devel] [PATCH v2 04/11] virtio-blk: Move complete_request to 'ops' structure, Fam Zheng, 2015/05/13
[Qemu-devel] [PATCH v2 03/11] block-backend: Add blk_op_blocker_add_notifier, Fam Zheng, 2015/05/13
[Qemu-devel] [PATCH v2 05/11] virtio-blk: Don't handle output when there is "device IO" op blocker, Fam Zheng, 2015/05/13