Commit 500d0d24 authored by Douglas Gilbert's avatar Douglas Gilbert Committed by Martin K. Petersen

scsi: scsi_debug: Divide power on reset UNIT ATTENTION

To distinguish between resets sent by the SCSI mid-level error
handling and newly introduced devices (LUs), this Unit Attention:

   power on, reset, or bus reset occurred [0x29,0x0]

has been subdivided into that UA for the reset case and this new UA:

   power on occurred [0x29,0x1]

for the new device (LU) case. This makes debug a little easier to follow
when it is turned on (e.g. 'echo 0x1 > opts').

Bump driver version number.

Link: https://lore.kernel.org/r/20220109012853.301953-6-dgilbert@interlog.comSigned-off-by: default avatarDouglas Gilbert <dgilbert@interlog.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent b05d4e48
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* anything out of the ordinary is seen. * anything out of the ordinary is seen.
* ^^^^^^^^^^^^^^^^^^^^^^^ Original ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ * ^^^^^^^^^^^^^^^^^^^^^^^ Original ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* *
* Copyright (C) 2001 - 2020 Douglas Gilbert * Copyright (C) 2001 - 2021 Douglas Gilbert
* *
* For documentation see http://sg.danny.cz/sg/scsi_debug.html * For documentation see http://sg.danny.cz/sg/scsi_debug.html
*/ */
...@@ -61,8 +61,8 @@ ...@@ -61,8 +61,8 @@
#include "scsi_logging.h" #include "scsi_logging.h"
/* make sure inq_product_rev string corresponds to this version */ /* make sure inq_product_rev string corresponds to this version */
#define SDEBUG_VERSION "0190" /* format to fit INQUIRY revision field */ #define SDEBUG_VERSION "0191" /* format to fit INQUIRY revision field */
static const char *sdebug_version_date = "20200710"; static const char *sdebug_version_date = "20210520";
#define MY_NAME "scsi_debug" #define MY_NAME "scsi_debug"
...@@ -84,6 +84,7 @@ static const char *sdebug_version_date = "20200710"; ...@@ -84,6 +84,7 @@ static const char *sdebug_version_date = "20200710";
#define INSUFF_RES_ASC 0x55 #define INSUFF_RES_ASC 0x55
#define INSUFF_RES_ASCQ 0x3 #define INSUFF_RES_ASCQ 0x3
#define POWER_ON_RESET_ASCQ 0x0 #define POWER_ON_RESET_ASCQ 0x0
#define POWER_ON_OCCURRED_ASCQ 0x1
#define BUS_RESET_ASCQ 0x2 /* scsi bus reset occurred */ #define BUS_RESET_ASCQ 0x2 /* scsi bus reset occurred */
#define MODE_CHANGED_ASCQ 0x1 /* mode parameters changed */ #define MODE_CHANGED_ASCQ 0x1 /* mode parameters changed */
#define CAPACITY_CHANGED_ASCQ 0x9 #define CAPACITY_CHANGED_ASCQ 0x9
...@@ -197,13 +198,14 @@ static const char *sdebug_version_date = "20200710"; ...@@ -197,13 +198,14 @@ static const char *sdebug_version_date = "20200710";
* priority. The UA numbers should be a sequence starting from 0 with * priority. The UA numbers should be a sequence starting from 0 with
* SDEBUG_NUM_UAS being 1 higher than the highest numbered UA. */ * SDEBUG_NUM_UAS being 1 higher than the highest numbered UA. */
#define SDEBUG_UA_POR 0 /* Power on, reset, or bus device reset */ #define SDEBUG_UA_POR 0 /* Power on, reset, or bus device reset */
#define SDEBUG_UA_BUS_RESET 1 #define SDEBUG_UA_POOCCUR 1 /* Power on occurred */
#define SDEBUG_UA_MODE_CHANGED 2 #define SDEBUG_UA_BUS_RESET 2
#define SDEBUG_UA_CAPACITY_CHANGED 3 #define SDEBUG_UA_MODE_CHANGED 3
#define SDEBUG_UA_LUNS_CHANGED 4 #define SDEBUG_UA_CAPACITY_CHANGED 4
#define SDEBUG_UA_MICROCODE_CHANGED 5 /* simulate firmware change */ #define SDEBUG_UA_LUNS_CHANGED 5
#define SDEBUG_UA_MICROCODE_CHANGED_WO_RESET 6 #define SDEBUG_UA_MICROCODE_CHANGED 6 /* simulate firmware change */
#define SDEBUG_NUM_UAS 7 #define SDEBUG_UA_MICROCODE_CHANGED_WO_RESET 7
#define SDEBUG_NUM_UAS 8
/* when 1==SDEBUG_OPT_MEDIUM_ERR, a medium error is simulated at this /* when 1==SDEBUG_OPT_MEDIUM_ERR, a medium error is simulated at this
* sector on read commands: */ * sector on read commands: */
...@@ -1086,6 +1088,12 @@ static int make_ua(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) ...@@ -1086,6 +1088,12 @@ static int make_ua(struct scsi_cmnd *scp, struct sdebug_dev_info *devip)
if (sdebug_verbose) if (sdebug_verbose)
cp = "power on reset"; cp = "power on reset";
break; break;
case SDEBUG_UA_POOCCUR:
mk_sense_buffer(scp, UNIT_ATTENTION, UA_RESET_ASC,
POWER_ON_OCCURRED_ASCQ);
if (sdebug_verbose)
cp = "power on occurred";
break;
case SDEBUG_UA_BUS_RESET: case SDEBUG_UA_BUS_RESET:
mk_sense_buffer(scp, UNIT_ATTENTION, UA_RESET_ASC, mk_sense_buffer(scp, UNIT_ATTENTION, UA_RESET_ASC,
BUS_RESET_ASCQ); BUS_RESET_ASCQ);
...@@ -5007,7 +5015,7 @@ static struct sdebug_dev_info *find_build_dev_info(struct scsi_device *sdev) ...@@ -5007,7 +5015,7 @@ static struct sdebug_dev_info *find_build_dev_info(struct scsi_device *sdev)
open_devip->lun = sdev->lun; open_devip->lun = sdev->lun;
open_devip->sdbg_host = sdbg_host; open_devip->sdbg_host = sdbg_host;
atomic_set(&open_devip->num_in_q, 0); atomic_set(&open_devip->num_in_q, 0);
set_bit(SDEBUG_UA_POR, open_devip->uas_bm); set_bit(SDEBUG_UA_POOCCUR, open_devip->uas_bm);
open_devip->used = true; open_devip->used = true;
return open_devip; return open_devip;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment