block: Multiwrite error path fixes
cover block: Multiwrite error path fixes
Kevin Wolf (2):
block: Fix error code in multiwrite for immediate failures
block: Fix multiwrite memory leak in error case
block.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-)
PATCH 1/2 block: Fix error code in multiwrite for immediate failures
Signed-off-by Kevin Wolf <[email protected]>
--- block.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
block.c +2 -2
@@ -1890,10 +1890,10 @@ int bdrv_aio_multiwrite(BlockDriverState *bs, BlockRequest *reqs, int num_reqs)// submitted yet. Otherwise we'll wait for the submitted AIOs to // complete and report the error in the callback. if (mcb->num_requests ==0 ) { - reqs[i].error =EIO ; + reqs[i].error = -EIO ; goto fail; }else { - mcb->error =EIO ; + mcb->error = -EIO ;break ; } }else {
Signature · 1 line
1.6.6.1
PATCH 2/2 block: Fix multiwrite memory leak in error case
In reply to Kevin WolfPreviously multiwrite_user_cb was never called if a request in the multiwrite batch failed right away because it did set mcb->error immediately. Make it look more like a normal callback to fix this.
Reported-by Juan Quintela <[email protected]>
Signed-off-by Kevin Wolf <[email protected]>
--- block.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
block.c +2 -1
@@ -1893,7 +1893,8 @@ int bdrv_aio_multiwrite(BlockDriverState *bs, BlockRequest *reqs, int num_reqs) reqs[i].error = -EIO ; goto fail; }else { - mcb->error = -EIO ; + mcb->num_requests++; +multiwrite_cb (mcb, -EIO );break ; } }else {
Signature · 1 line
1.6.6.1
Quoted 4 lines · Kevin Wolf
Kevin Wolf (2):
block: Fix error code in multiwrite for immediate failures
block: Fix multiwrite memory leak in error case
Thanks, both applied.
Signature · 2 lines
Aurelien Jarno GPG: 1024D/F1BCDB73 [email protected] http://www.aurel32.net