Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
scsi: Refactor scsi sense interpreting code
So that it can be reused outside of iscsi.c. Also update MAINTAINERS to include the new files in SCSI section. Signed-off-by: Fam Zheng <famz@redhat.com> Message-Id: <20170821141008.19383-2-famz@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
- Loading branch information
Showing
5 changed files
with
78 additions
and
41 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
/* | ||
* SCSI helpers | ||
* | ||
* Copyright 2017 Red Hat, Inc. | ||
* | ||
* Authors: | ||
* Fam Zheng <famz@redhat.com> | ||
* | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License as published by the Free | ||
* Software Foundation; either version 2 of the License, or (at your option) | ||
* any later version. | ||
*/ | ||
#ifndef QEMU_SCSI_H | ||
#define QEMU_SCSI_H | ||
|
||
int scsi_sense_to_errno(int key, int asc, int ascq); | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -45,3 +45,4 @@ util-obj-y += qht.o | |
util-obj-y += range.o | ||
util-obj-y += stats64.o | ||
util-obj-y += systemd.o | ||
util-obj-y += scsi.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
/* | ||
* SCSI helpers | ||
* | ||
* Copyright 2017 Red Hat, Inc. | ||
* | ||
* Authors: | ||
* Fam Zheng <famz@redhat.com> | ||
* | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License as published by the Free | ||
* Software Foundation; either version 2 of the License, or (at your option) | ||
* any later version. | ||
*/ | ||
|
||
#include "qemu/osdep.h" | ||
#include "scsi/scsi.h" | ||
|
||
int scsi_sense_to_errno(int key, int asc, int ascq) | ||
{ | ||
switch (key) { | ||
case 0x02: /* NOT READY */ | ||
return EBUSY; | ||
case 0x07: /* DATA PROTECTION */ | ||
return EACCES; | ||
case 0x0b: /* COMMAND ABORTED */ | ||
return ECANCELED; | ||
case 0x05: /* ILLEGAL REQUEST */ | ||
/* Parse ASCQ */ | ||
break; | ||
default: | ||
return EIO; | ||
} | ||
switch ((asc << 8) | ascq) { | ||
case 0x1a00: /* PARAMETER LIST LENGTH ERROR */ | ||
case 0x2000: /* INVALID OPERATION CODE */ | ||
case 0x2400: /* INVALID FIELD IN CDB */ | ||
case 0x2600: /* INVALID FIELD IN PARAMETER LIST */ | ||
return EINVAL; | ||
case 0x2100: /* LBA OUT OF RANGE */ | ||
return ENOSPC; | ||
case 0x2500: /* LOGICAL UNIT NOT SUPPORTED */ | ||
return ENOTSUP; | ||
case 0x3a00: /* MEDIUM NOT PRESENT */ | ||
case 0x3a01: /* MEDIUM NOT PRESENT TRAY CLOSED */ | ||
case 0x3a02: /* MEDIUM NOT PRESENT TRAY OPEN */ | ||
return ENOMEDIUM; | ||
case 0x2700: /* WRITE PROTECTED */ | ||
return EACCES; | ||
default: | ||
return EIO; | ||
} | ||
} |