On Thu, Aug 20, 2020 at 06:58:52PM +0200, Philippe Mathieu-Daudé wrote:
> Rearrange nvme_add_io_queue() by using a common error path.
> This will be proven useful in few commits where we add IRQ
> notification to the IO queues.
>
> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
> block/nvme.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
>
> diff --git a/block/nvme.c b/block/nvme.c
> index 53448b7d230..3101f1ad55d 100644
> --- a/block/nvme.c
> +++ b/block/nvme.c
> @@ -649,8 +649,7 @@ static bool nvme_add_io_queue(BlockDriverState *bs, Error **errp)
> };
> if (nvme_cmd_sync(bs, s->queues[INDEX_ADMIN], &cmd)) {
> error_setg(errp, "Failed to create CQ io queue [%d]", n);
> - nvme_free_queue_pair(q);
> - return false;
> + goto out_error;
> }
> cmd = (NvmeCmd) {
> .opcode = NVME_ADM_CMD_CREATE_SQ,
> @@ -660,13 +659,15 @@ static bool nvme_add_io_queue(BlockDriverState *bs, Error **errp)
> };
> if (nvme_cmd_sync(bs, s->queues[INDEX_ADMIN], &cmd)) {
> error_setg(errp, "Failed to create SQ io queue [%d]", n);
> - nvme_free_queue_pair(q);
> - return false;
> + goto out_error;
> }
> s->queues = g_renew(NVMeQueuePair *, s->queues, n + 1);
> s->queues[n] = q;
> s->nr_queues++;
> return true;
> +out_error:
> + nvme_free_queue_pair(q);
> + return false;
> }
>
> static bool nvme_poll_cb(void *opaque)
> --
> 2.26.2
>
>