Skip to content

Commit

Permalink
block/quorum: Provide .bdrv_co_flush instead of .bdrv_co_flush_to_disk
Browse files Browse the repository at this point in the history
The quorum block driver uses a custom flush callback to handle the
case when some children return io errors. In that case it still
returns success if enough children are healthy.
However, it provides it as the .bdrv_co_flush_to_disk callback, not
as .bdrv_co_flush. This causes the block layer to do it's own
generic flushing for the children instead, which doesn't handle
errors properly.

Fix this by providing .bdrv_co_flush instead of
.bdrv_co_flush_to_disk so the block layer uses the custom flush
callback.

Signed-off-by: Lukas Straub <lukasstraub2@web.de>
Reported-by: Minghao Yuan <meeho@qq.com>
Message-Id: <20210518134214.11ccf05f@gecko.fritz.box>
Tested-by: Zhang Chen <chen.zhang@intel.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  • Loading branch information
Lukey3332 authored and kevmw committed Jun 2, 2021
1 parent dd2db39 commit 5529b02
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion block/quorum.c
Expand Up @@ -1279,7 +1279,7 @@ static BlockDriver bdrv_quorum = {
.bdrv_dirname = quorum_dirname,
.bdrv_co_block_status = quorum_co_block_status,

.bdrv_co_flush_to_disk = quorum_co_flush,
.bdrv_co_flush = quorum_co_flush,

.bdrv_getlength = quorum_getlength,

Expand Down

0 comments on commit 5529b02

Please sign in to comment.