In qcow2 (and partly also in general block code), error handling doesn't quite do what it should. In some places, errors are silently ignored. In other places, the error code in not passed to the called but rather turned into false, NULL or -EIO. Besides reporting the right error to the user, providing the right error code is also important for werror=enospc (and possible some more functions).
This patch series tries to fix the most obvious of them. Don't assume it's complete and expect a second part some time in the future. Kevin Wolf (10): qcow2: Fix error handling in qcow2_grow_l1_table qcow2: Fix error handling in qcow_save_vmstate qcow2: Return 0/-errno in get_cluster_table qcow2: Return 0/-errno in qcow2_alloc_cluster_offset block: Return original error codes in bdrv_pread/write qcow2: Fix error handling in grow_refcount_table qcow2: Improve error handling in update_refcount qcow2: Allow updating no refcounts qcow2: Don't ignore update_refcount return value qcow2: Don't ignore qcow2_alloc_clusters return value block.c | 34 ++++++++++--------- block/qcow2-cluster.c | 84 ++++++++++++++++++++++++++++++++---------------- block/qcow2-refcount.c | 82 ++++++++++++++++++++++++++++++++++++----------- block/qcow2-snapshot.c | 11 ++++++- block/qcow2.c | 41 ++++++++++++----------- block/qcow2.h | 4 +- 6 files changed, 171 insertions(+), 85 deletions(-)