aboutsummaryrefslogtreecommitdiff
path: root/block
diff options
context:
space:
mode:
authorLukas Straub <lukasstraub2@web.de>2021-05-18 13:42:14 +0200
committerKevin Wolf <kwolf@redhat.com>2021-06-02 14:23:20 +0200
commit5529b02da2dcd1ef6bc6cd42d4fbfb537fe2276f (patch)
treec5252dcc187ab20c8d68a6f61ceb2db48890a3fd /block
parentdd2db39d78431ab5a0b78777afaab3d61e94533e (diff)
downloadqemu-5529b02da2dcd1ef6bc6cd42d4fbfb537fe2276f.zip
qemu-5529b02da2dcd1ef6bc6cd42d4fbfb537fe2276f.tar.gz
qemu-5529b02da2dcd1ef6bc6cd42d4fbfb537fe2276f.tar.bz2
block/quorum: Provide .bdrv_co_flush instead of .bdrv_co_flush_to_disk
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>
Diffstat (limited to 'block')
-rw-r--r--block/quorum.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/block/quorum.c b/block/quorum.c
index cfc1436..f2c0805 100644
--- a/block/quorum.c
+++ b/block/quorum.c
@@ -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,