scsi_debug: add Capacity Changed Unit Attention
PATCH v2 3/5 scsi_debug: add Capacity Changed Unit Attention
From: Douglas Gilbert <[email protected]>
Date: Mon, 24 Nov 2014 20:27:51 -0500
Subject: [PATCH 3/5] add Capacity Changed Unit Attention
Via sysfs the virtual_gb scsi_debug parameter can be changed while LUs are in use. If that changes, the 'Capacity data has changed' Unit Attention is queued on all LUs.
--- drivers/scsi/scsi_debug.c | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-)
Quoted 1 line
From
54eeff05237c4872fb1f5dcf1edddaace467d5b0Mon Sep 17 00:00:00 2001
From: Douglas Gilbert <[email protected]>
Date: Mon, 24 Nov 2014 20:27:51 -0500
Subject: [PATCH 3/5] add Capacity Changed Unit Attention
Via sysfs the virtual_gb scsi_debug parameter can be changed while LUs are in use. If that changes, the 'Capacity data has changed' Unit Attention is queued on all LUs.
--- drivers/scsi/scsi_debug.c | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-)
drivers/scsi/scsi_debug.c +24 -4
@@ -179,7 +179,8 @@ static const char *scsi_debug_version_date = "20141022";#define SDEBUG_UA_POR 0/* Power on, reset, or bus device reset */ #define SDEBUG_UA_BUS_RESET 1#define SDEBUG_UA_MODE_CHANGED 2 -#define SDEBUG_NUM_UAS 3 +#define SDEBUG_UA_CAPACITY_CHANGED 3 +#define SDEBUG_NUM_UAS 4/* for check_readiness() */ #define UAS_ONLY 1
@@ -582,6 +583,11 @@ static int check_readiness(struct scsi_cmnd *SCpnt, int uas_only,if (debug) cp ="mode parameters changed" ;break ; +case SDEBUG_UA_CAPACITY_CHANGED : +mk_sense_buffer (SCpnt,UNIT_ATTENTION , +UA_CHANGED_ASC ,CAPACITY_CHANGED_ASCQ ); +if (debug) + cp ="capacity data changed" ;default :pr_warn ("%s: unexpected unit attention code=%d\n" , __func__, k);
@@ -3638,16 +3644,30 @@ static ssize_t virtual_gb_show(struct device_driver *ddp, char *buf) {return scnprintf (buf,PAGE_SIZE ,"%d\n" , scsi_debug_virtual_gb); } +static ssize_t virtual_gb_store (struct device_driver *ddp,const char *buf,size_t count) { -int n; +int n; +bool changed;if ((count >0 ) && (1 ==sscanf (buf,"%d" , &n)) && (n >=0 )) { + changed = (scsi_debug_virtual_gb != n); scsi_debug_virtual_gb = n; - sdebug_capacity =get_sdebug_capacity (); - +if (changed) { +struct sdebug_host_info *sdhp; +struct sdebug_dev_info *dp; + +list_for_each_entry (sdhp, &sdebug_host_list, + host_list) { +list_for_each_entry (dp, &sdhp->dev_info_list, + dev_list) { +set_bit (SDEBUG_UA_CAPACITY_CHANGED , + dp->uas_bm); + } + } + }return count; }return -EINVAL ;
Signature · 1 line
1.9.1
Quoted 4 lines · Douglas Gilbert
From: Douglas Gilbert <[email protected]>
Date: Mon, 24 Nov 2014 20:27:51 -0500
Subject: [PATCH 3/5] add Capacity Changed Unit Attention
Quoted 8 lines
Via sysfs the
virtual_gbscsi_debugparameter can be changed while LUs are in use. If that changes, the 'Capacity data has changed' Unit Attention is queued on all LUs.--- drivers/scsi/scsi_debug.c | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-)Signed-off-by Douglas Gilbert <[email protected]>
Cheers,
Hannes
Signature · 8 lines
Dr. Hannes Reinecke zSeries & Storage [email protected] +49 911 74053 688 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: J. Hawn, J. Guild, F. Imendörffer, HRB 21284 (AG Nürnberg) -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 4 lines · Douglas Gilbert
From: Douglas Gilbert <[email protected]>
Date: Mon, 24 Nov 2014 20:27:51 -0500
Subject: [PATCH 3/5] add Capacity Changed Unit Attention
Quoted 8 lines
Via sysfs the
virtual_gbscsi_debugparameter can be changed while LUs are in use. If that changes, the 'Capacity data has changed' Unit Attention is queued on all LUs.--- drivers/scsi/scsi_debug.c | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-)Signed-off-by Douglas Gilbert <[email protected]>
I found a couple of things with this patch that should be fixed, I'll send patches to correct them, plus a couple of other changes while I'm at it.
-Ewan