qcow2: Fix error cases to run depedent requests
Requests depending on a failed request would end up waiting forever. This fixes the error path to continue dependent requests even when the request has failed. Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
8e217d5384
commit
0fa9131a44
@ -593,13 +593,12 @@ static int qcow2_co_writev(BlockDriverState *bs,
|
||||
}
|
||||
|
||||
ret = qcow2_alloc_cluster_link_l2(bs, &l2meta);
|
||||
|
||||
run_dependent_requests(s, &l2meta);
|
||||
|
||||
if (ret < 0) {
|
||||
goto fail;
|
||||
}
|
||||
|
||||
run_dependent_requests(s, &l2meta);
|
||||
|
||||
remaining_sectors -= cur_nr_sectors;
|
||||
sector_num += cur_nr_sectors;
|
||||
bytes_done += cur_nr_sectors * 512;
|
||||
@ -607,6 +606,8 @@ static int qcow2_co_writev(BlockDriverState *bs,
|
||||
ret = 0;
|
||||
|
||||
fail:
|
||||
run_dependent_requests(s, &l2meta);
|
||||
|
||||
qemu_co_mutex_unlock(&s->lock);
|
||||
|
||||
qemu_iovec_destroy(&hd_qiov);
|
||||
|
Loading…
Reference in New Issue
Block a user