On 12.10.20 19:43, Andrey Shinkevich wrote:
Add support for the BDRV_REQ_PREFETCH flag to the
supported_write_flags
s/write/read/
of the COR-filter.
Signed-off-by: Andrey Shinkevich <andrey.shinkevich(a)virtuozzo.com>
---
block/copy-on-read.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/block/copy-on-read.c b/block/copy-on-read.c
index dfbd6ad..b136895 100644
--- a/block/copy-on-read.c
+++ b/block/copy-on-read.c
@@ -50,6 +50,7 @@ static int cor_open(BlockDriverState *bs, QDict *options, int flags,
return -EINVAL;
}
+ bs->supported_read_flags = BDRV_REQ_PREFETCH;
bs->supported_write_flags = BDRV_REQ_WRITE_UNCHANGED |
(BDRV_REQ_FUA & bs->file->bs->supported_write_flags);
Then we mustn’t let cor_co_preadv_part() pass the flag on to
bdrv_co_preadv_part() unless BDRV_REQ_COPY_ON_READ is set, too. I
suspect the following patch is going to do that, but in the meantime the
code is wrong.
Perhaps just swap both patches?
And by the way, I’m also missing a patch that makes the block layer
evaluate supported_read_flags and e.g. strip BDRV_REQ_PREFETCH if it
isn’t supported, before it gets passed to such a block driver.
Max