[Top][All Lists]

[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


>      return blk_check_byte_request(blk, sector_num * BDRV_SECTOR_SIZE,
>                                    nb_sectors * BDRV_SECTOR_SIZE);
>  }

reply via email to

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