Message ID | 1602524605-481160-9-git-send-email-andrey.shinkevich@virtuozzo.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Apply COR-filter to the block-stream permanently | expand |
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@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
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);
Add support for the BDRV_REQ_PREFETCH flag to the supported_write_flags of the COR-filter. Signed-off-by: Andrey Shinkevich <andrey.shinkevich@virtuozzo.com> --- block/copy-on-read.c | 1 + 1 file changed, 1 insertion(+)