From: Hannes Reinecke <hare@suse.de>
To: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: Christoph Hellwig <hch@lst.de>,
James Bottomley <james.bottomley@hansenpartnership.com>,
Bart van Assche <bvanassche@acm.org>,
linux-scsi@vger.kernel.org, Hannes Reinecke <hare@suse.de>
Subject: [RFC PATCH 00/42] SCSI result cleanup, part 2
Date: Wed, 21 Apr 2021 19:47:07 +0200 [thread overview]
Message-ID: <20210421174749.11221-1-hare@suse.de> (raw)
Hi all,
here is now my alternative approach on how the SCSI result could be
cleaned up. It's based on the observation that two fields (namely
driver_byte and message_byte) are essentially unused.
The driver byte really is an unloved thing, with very few drivers
using it, and not really consistent, either.
It's only DRIVER_SENSE which has a meaning for userspace, and that
just indicates if a sense code is present; as such it can easily
inferred by looking at the sense code itself.
The message byte is a different story, as it's being used internally
by some SCSI parallel drivers. But even here, in the end the message
byte is only ever relevant for SCSI EH, and that just checks if
any message byte is set apart from COMMAND_COMPLETE.
And we have the SCp.Message field, which can be used to hold the
message values for drivers which had been using the message byte
in the SCSI result.
So with this approach we can stop using the driver_byte and the
message_byte values in the SCSI result, which means we only
have two values (host byte and status byte) left to deal with.
My plan here is move every driver to use accessors for the
remaining bytes in the SCSI result, and with that move the
SCSI result over into two separate values.
A patchset implementing this can be found at:
git://git.kernel.org/pub/scm/linux/kernel/hare/scsi-devel.git
scsi-result-rework
This patchset is the first part of that, and is intentionally posted
as an RFC as it directly competes with Barts patchset.
As usual, comments and reviews are welcome.
Hannes Reinecke (42):
st: return error code in st_scsi_execute()
scsi_ioctl: return error code when blk_rq_map_kern() fails
scsi_dh_alua: do not interpret DRIVER_ERROR
scsi: Fixup calling convention for scsi_mode_sense()
scsi: stop using DRIVER_ERROR
scsi: introduce scsi_build_sense()
scsi: Kill DRIVER_SENSE
scsi: do not use DRIVER_INVALID
scsi_error: use DID_TIME_OUT instead of DRIVER_TIMEOUT
xen-scsiback: use DID_ERROR instead of DRIVER_ERROR
xen-scsifront: compability status handling
scsi: Drop the now obsolete driver_byte definitions
scsi: add get_{status,host}_byte() accessor function
scsi: add scsi_result_is_good()
NCR5380: use SCSI result accessors
NCR5380: Fold SCSI message ABORT onto DID_ABORT
scsi: add translate_msg_byte()
dc395: use standard macros to set SCSI result
dc395: translate message bytes
qlogicfas408: make ql_pcmd() a void function
qlogicfas408: whitespace cleanup
qlogicfas408: translate message to host byte status
nsp32: use standard macros to set SCSI result
nsp32: whitespace cleanup
nsp32: do not set message byte
wd33c93: use standard macros to set SCSI result
wd33c93: translate message byte to host byte
mesh: use standard macros to set SCSI result
mesh: translate message to host byte status
acornscsi: use standard macros to set SCSI result
acornscsi: remove acornscsi_reportstatus()
acornscsi: translate message byte to host byte
aha152x: modify done() to use separate status bytes
aha152x: do not set message byte when calling scsi_done()
advansys: do not set message byte in SCSI status
advansys: use SCSI result accessors
fas216: translate message to host byte status
fas216: convert to SCSI Accessors
fdomain: drop last argument to fdomain_finish_cmd()
fdomain: translate message to host byte status
scsi: drop message byte helper
scsi: kill message byte
Documentation/scsi/scsi_mid_low_api.rst | 7 +-
block/bsg-lib.c | 2 +-
block/bsg.c | 2 +-
block/scsi_ioctl.c | 11 +-
drivers/ata/libata-scsi.c | 28 +-
drivers/s390/scsi/zfcp_scsi.c | 5 +-
drivers/scsi/3w-xxxx.c | 2 +-
drivers/scsi/NCR5380.c | 31 +-
drivers/scsi/advansys.c | 11 +-
drivers/scsi/aha152x.c | 33 +-
drivers/scsi/aic7xxx/aic79xx_osm.c | 19 +-
drivers/scsi/aic7xxx/aic7xxx_osm.c | 1 -
drivers/scsi/arcmsr/arcmsr_hba.c | 1 -
drivers/scsi/arm/acornscsi.c | 41 +-
drivers/scsi/arm/fas216.c | 24 +-
drivers/scsi/ch.c | 5 +-
drivers/scsi/constants.c | 15 -
drivers/scsi/cxlflash/superpipe.c | 3 +-
drivers/scsi/dc395x.c | 76 ++--
drivers/scsi/device_handler/scsi_dh_alua.c | 4 -
drivers/scsi/esp_scsi.c | 4 +-
drivers/scsi/fdomain.c | 22 +-
drivers/scsi/hptiop.c | 2 +-
drivers/scsi/libiscsi.c | 5 +-
drivers/scsi/lpfc/lpfc_scsi.c | 54 +--
drivers/scsi/megaraid.c | 18 +-
drivers/scsi/megaraid/megaraid_mbox.c | 22 +-
drivers/scsi/megaraid/megaraid_sas_base.c | 2 -
drivers/scsi/megaraid/megaraid_sas_fusion.c | 1 -
drivers/scsi/mesh.c | 14 +-
drivers/scsi/mpt3sas/mpt3sas_scsih.c | 14 +-
drivers/scsi/mvumi.c | 10 +-
drivers/scsi/myrb.c | 64 +---
drivers/scsi/myrs.c | 9 +-
drivers/scsi/nsp32.c | 397 +++++++++++---------
drivers/scsi/ps3rom.c | 7 +-
drivers/scsi/qla2xxx/qla_isr.c | 15 +-
drivers/scsi/qlogicfas408.c | 137 ++++---
drivers/scsi/scsi.c | 9 +-
drivers/scsi/scsi_debug.c | 15 +-
drivers/scsi/scsi_error.c | 22 +-
drivers/scsi/scsi_ioctl.c | 7 +-
drivers/scsi/scsi_lib.c | 48 ++-
drivers/scsi/scsi_logging.c | 10 +-
drivers/scsi/scsi_scan.c | 6 +-
drivers/scsi/scsi_transport_sas.c | 9 +-
drivers/scsi/scsi_transport_spi.c | 2 +-
drivers/scsi/sd.c | 64 ++--
drivers/scsi/sd_zbc.c | 3 +-
drivers/scsi/sg.c | 11 +-
drivers/scsi/smartpqi/smartpqi_init.c | 3 +-
drivers/scsi/sr.c | 4 +-
drivers/scsi/sr_ioctl.c | 6 +-
drivers/scsi/st.c | 8 +-
drivers/scsi/stex.c | 9 +-
drivers/scsi/sym53c8xx_2/sym_glue.c | 6 +-
drivers/scsi/ufs/ufshcd.c | 2 +-
drivers/scsi/virtio_scsi.c | 5 +-
drivers/scsi/vmw_pvscsi.c | 6 -
drivers/scsi/wd33c93.c | 48 +--
drivers/scsi/xen-scsifront.c | 9 +-
drivers/target/loopback/tcm_loop.c | 1 -
drivers/usb/storage/cypress_atacb.c | 4 +-
drivers/xen/xen-scsiback.c | 16 +-
include/scsi/scsi.h | 22 +-
include/scsi/scsi_cmnd.h | 33 +-
include/scsi/sg.h | 4 +
include/trace/events/scsi.h | 48 +--
68 files changed, 706 insertions(+), 852 deletions(-)
--
2.29.2
next reply other threads:[~2021-04-21 17:48 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-21 17:47 Hannes Reinecke [this message]
2021-04-21 17:47 ` [PATCH 01/42] st: return error code in st_scsi_execute() Hannes Reinecke
2021-04-21 20:56 ` Bart Van Assche
2021-04-21 17:47 ` [PATCH 02/42] scsi_ioctl: return error code when blk_rq_map_kern() fails Hannes Reinecke
2021-04-21 21:01 ` Bart Van Assche
2021-04-22 6:29 ` Hannes Reinecke
2021-04-21 17:47 ` [PATCH 03/42] scsi_dh_alua: do not interpret DRIVER_ERROR Hannes Reinecke
2021-04-21 17:47 ` [PATCH 04/42] scsi: Fixup calling convention for scsi_mode_sense() Hannes Reinecke
2021-04-21 17:47 ` [PATCH 05/42] scsi: stop using DRIVER_ERROR Hannes Reinecke
2021-04-21 21:30 ` Bart Van Assche
2021-04-22 8:39 ` Hannes Reinecke
2021-04-21 17:47 ` [PATCH 06/42] scsi: introduce scsi_build_sense() Hannes Reinecke
2021-04-21 17:47 ` [PATCH 07/42] scsi: Kill DRIVER_SENSE Hannes Reinecke
2021-04-21 19:46 ` Douglas Gilbert
2021-04-21 20:07 ` Hannes Reinecke
2021-04-21 21:06 ` Bart Van Assche
2021-04-22 6:31 ` Hannes Reinecke
2021-04-22 15:46 ` Douglas Gilbert
2021-04-21 17:47 ` [PATCH 08/42] scsi: do not use DRIVER_INVALID Hannes Reinecke
2021-04-21 17:47 ` [PATCH 09/42] scsi_error: use DID_TIME_OUT instead of DRIVER_TIMEOUT Hannes Reinecke
2021-04-21 17:47 ` [PATCH 10/42] xen-scsiback: use DID_ERROR instead of DRIVER_ERROR Hannes Reinecke
2021-04-21 17:47 ` [PATCH 11/42] xen-scsifront: compability status handling Hannes Reinecke
2021-04-21 17:47 ` [PATCH 12/42] scsi: Drop the now obsolete driver_byte definitions Hannes Reinecke
2021-04-21 17:47 ` [PATCH 13/42] scsi: add get_{status,host}_byte() accessor function Hannes Reinecke
2021-04-21 21:09 ` Bart Van Assche
2021-04-22 6:33 ` Hannes Reinecke
2021-04-21 17:47 ` [PATCH 14/42] scsi: add scsi_result_is_good() Hannes Reinecke
2021-04-21 21:10 ` Bart Van Assche
2021-04-21 21:58 ` Douglas Gilbert
2021-04-22 8:42 ` Hannes Reinecke
2021-04-22 9:36 ` Finn Thain
2021-04-22 15:56 ` Douglas Gilbert
2021-04-22 16:51 ` Douglas Gilbert
2021-04-22 16:52 ` Bart Van Assche
2021-04-22 17:33 ` Douglas Gilbert
2021-04-26 8:45 ` Hannes Reinecke
2021-04-22 6:34 ` Hannes Reinecke
2021-04-21 17:47 ` [PATCH 15/42] NCR5380: use SCSI result accessors Hannes Reinecke
2021-04-21 21:11 ` Bart Van Assche
2021-04-22 6:37 ` Hannes Reinecke
2021-04-22 16:10 ` Bart Van Assche
2021-04-26 8:30 ` Hannes Reinecke
2021-04-22 9:36 ` Finn Thain
2021-04-21 17:47 ` [PATCH 16/42] NCR5380: Fold SCSI message ABORT onto DID_ABORT Hannes Reinecke
2021-04-22 9:35 ` Finn Thain
2021-04-21 17:47 ` [PATCH 17/42] scsi: add translate_msg_byte() Hannes Reinecke
2021-04-21 17:47 ` [PATCH 18/42] dc395: use standard macros to set SCSI result Hannes Reinecke
2021-04-21 22:26 ` Bart Van Assche
2021-04-22 8:52 ` Hannes Reinecke
2021-04-22 16:12 ` Bart Van Assche
2021-04-21 17:47 ` [PATCH 19/42] dc395: translate message bytes Hannes Reinecke
2021-04-21 17:47 ` [PATCH 20/42] qlogicfas408: make ql_pcmd() a void function Hannes Reinecke
2021-04-21 17:47 ` [PATCH 21/42] qlogicfas408: whitespace cleanup Hannes Reinecke
2021-04-21 17:47 ` [PATCH 22/42] qlogicfas408: translate message to host byte status Hannes Reinecke
2021-04-21 17:47 ` [PATCH 23/42] nsp32: use standard macros to set SCSI result Hannes Reinecke
2021-04-21 17:47 ` [PATCH 24/42] nsp32: whitespace cleanup Hannes Reinecke
2021-04-21 17:47 ` [PATCH 25/42] nsp32: do not set message byte Hannes Reinecke
2021-04-21 17:47 ` [PATCH 26/42] wd33c93: use standard macros to set SCSI result Hannes Reinecke
2021-04-21 17:47 ` [PATCH 27/42] wd33c93: translate message byte to host byte Hannes Reinecke
2021-04-21 17:47 ` [PATCH 28/42] mesh: use standard macros to set SCSI result Hannes Reinecke
2021-04-21 17:47 ` [PATCH 29/42] mesh: translate message to host byte status Hannes Reinecke
2021-04-21 17:47 ` [PATCH 30/42] acornscsi: use standard macros to set SCSI result Hannes Reinecke
2021-04-21 17:47 ` [PATCH 31/42] acornscsi: remove acornscsi_reportstatus() Hannes Reinecke
2021-04-21 17:47 ` [PATCH 32/42] acornscsi: translate message byte to host byte Hannes Reinecke
2021-04-21 17:47 ` [PATCH 33/42] aha152x: modify done() to use separate status bytes Hannes Reinecke
2021-04-21 17:47 ` [PATCH 34/42] aha152x: do not set message byte when calling scsi_done() Hannes Reinecke
2021-04-21 17:47 ` [PATCH 35/42] advansys: do not set message byte in SCSI status Hannes Reinecke
2021-04-21 17:47 ` [PATCH 36/42] advansys: use SCSI result accessors Hannes Reinecke
2021-04-21 17:47 ` [PATCH 37/42] fas216: translate message to host byte status Hannes Reinecke
2021-04-21 17:47 ` [PATCH 38/42] fas216: convert to SCSI Accessors Hannes Reinecke
2021-04-21 17:47 ` [PATCH 39/42] fdomain: drop last argument to fdomain_finish_cmd() Hannes Reinecke
2021-04-21 17:47 ` [PATCH 40/42] fdomain: translate message to host byte status Hannes Reinecke
2021-04-21 17:47 ` [PATCH 41/42] scsi: drop message byte helper Hannes Reinecke
2021-04-21 21:14 ` Bart Van Assche
2021-04-22 6:37 ` Hannes Reinecke
2021-04-21 17:47 ` [PATCH 42/42] scsi: kill message byte Hannes Reinecke
2021-04-21 20:54 ` [RFC PATCH 00/42] SCSI result cleanup, part 2 Bart Van Assche
2021-04-21 22:26 ` Bart Van Assche
2021-04-22 8:49 ` Hannes Reinecke
2021-04-22 16:28 ` Bart Van Assche
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210421174749.11221-1-hare@suse.de \
--to=hare@suse.de \
--cc=bvanassche@acm.org \
--cc=hch@lst.de \
--cc=james.bottomley@hansenpartnership.com \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.