On 21/03/2018 13:17, Laurent Vivier wrote: > On 21/03/2018 11:58, Paolo Bonzini wrote: >> If the user does not have permissions to send ioctls to the device (due to >> SELinux or cgroups, for example), the output can look like >> >> qemu-kvm: -device scsi-block,drive=disk: cannot get SG_IO version number: >> Operation not permitted. Is this a SCSI device? >> >> but this is confusing because the ioctl was blocked _before_ the device >> even received the SG_GET_VERSION_NUM ioctl. Therefore, for EPERM errors >> the suggestion should be eliminated. To make that simpler, change the >> code to use error_append_hint. >> >> Reported-by: Ala Hino <[email protected]> >> Signed-off-by: Paolo Bonzini <[email protected]> >> --- >> hw/scsi/scsi-disk.c | 7 ++++--- >> hw/scsi/scsi-generic.c | 7 ++++--- >> 2 files changed, 8 insertions(+), 6 deletions(-) >> >> diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c >> index 94043ed024..ccc245589a 100644 >> --- a/hw/scsi/scsi-disk.c >> +++ b/hw/scsi/scsi-disk.c >> @@ -2637,9 +2637,10 @@ static void scsi_block_realize(SCSIDevice *dev, Error >> **errp) >> /* check we are using a driver managing SG_IO (version 3 and after) */ >> rc = blk_ioctl(s->qdev.conf.blk, SG_GET_VERSION_NUM, &sg_version); >> if (rc < 0) { >> - error_setg(errp, "cannot get SG_IO version number: %s. " >> - "Is this a SCSI device?", >> - strerror(-rc)); >> + error_setg(errp, "cannot get SG_IO version number: %s", >> strerror(-rc)); > > > You could use: > > error_setg_errno(errp, -rc, "cannot get SG_IO version number");
Nice, thanks. Will do. Paolo
