[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH] block: document semanatics of bdrv_co_preadv|pw
From: |
Fam Zheng |
Subject: |
Re: [Qemu-block] [PATCH] block: document semanatics of bdrv_co_preadv|pwritev |
Date: |
Tue, 8 Aug 2017 10:39:29 +0800 |
User-agent: |
Mutt/1.8.3 (2017-05-23) |
On Fri, 08/04 16:49, Daniel P. Berrange wrote:
> This is odd. In the bdrv_aligned_readv() it looks very much like
> we'll reference qiov->niov, if bytes != 0, so if qiov was NULL we
> would crash.
It doesn't make sense if read doesn't have an iov, where should the data be
placed? :)
>
> In bdrv_aligned_writev(), qiov->niov is also refernced if bytes != 0,
> *unless* flags contains BDRV_REQ_ZERO_WRITE, in which case we'll
> invoke bdrv_co_do_pwrite_zeroes() instead.
This is intended. Zero-write doesn't need qiov, hence the BDRV_REQ_ZERO_WRITE
branch. Otherwise, we can assert qiov != NULL.
>
> So unless I'm missing something, bdrv_co_preadv|writev cannot be
> called with a NULL qiov, and bdrv_aligned_writev|readv might
> need their assertions tightened up.
bdrv_co_pwritev _is_ called with a NULL qiov from blk_aio_pwrite_zeroes. Your
other reasonings are right.
So for write we cannot remove the bytes parameter.
Fam