[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/5] pr-helper: fix assertion failure on failed
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [Qemu-devel] [PATCH 2/5] pr-helper: fix assertion failure on failed multipath PERSISTENT RESERVE IN |
Date: |
Tue, 26 Jun 2018 13:16:53 -0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 |
On 06/26/2018 12:40 PM, Paolo Bonzini wrote:
> The response size is expected to be zero if the SCSI status is not
> "GOOD", but nothing was resetting it.
>
> This can be reproduced simply by "sg_persist -s /dev/sdb" where /dev/sdb
> in the guest is a scsi-block device corresponding to a multipath device
> on the host.
>
> Before:
>
> PR in (Read full status): Aborted command
>
> and on the host:
>
> prh_write_response: Assertion `resp->sz == 0' failed.
>
> After:
>
> PR in (Read full status): bad field in cdb or parameter list
> (perhaps unsupported service action)
>
> Reported-by: Jiri Belka <address@hidden>
> Signed-off-by: Paolo Bonzini <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
> ---
> scsi/qemu-pr-helper.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/scsi/qemu-pr-helper.c b/scsi/qemu-pr-helper.c
> index 4057cf355c..0218d65bbf 100644
> --- a/scsi/qemu-pr-helper.c
> +++ b/scsi/qemu-pr-helper.c
> @@ -558,7 +558,11 @@ static int do_pr_in(int fd, const uint8_t *cdb, uint8_t
> *sense,
> #ifdef CONFIG_MPATH
> if (is_mpath(fd)) {
> /* multipath_pr_in fills the whole input buffer. */
> - return multipath_pr_in(fd, cdb, sense, data, *resp_sz);
> + int r = multipath_pr_in(fd, cdb, sense, data, *resp_sz);
> + if (r != GOOD) {
> + *resp_sz = 0;
> + }
> + return r;
> }
> #endif
>
>
- Re: [Qemu-devel] [PATCH 1/5] pr-helper: fix --socket-path default in help, (continued)