All of lore.kernel.org
 help / color / mirror / Atom feed
From: Douglas Gilbert <dgilbert@interlog.com>
To: "Ewan D. Milne" <emilne@redhat.com>
Cc: linux-scsi@vger.kernel.org
Subject: Re: [PATCH RFC 8/9] [SCSI] Add sense and Unit Attention generation to scsi_debug
Date: Sat, 19 Jan 2013 13:43:19 -0500	[thread overview]
Message-ID: <50FAE947.9090206@interlog.com> (raw)
In-Reply-To: <1358526434-1173-9-git-send-email-emilne@redhat.com>

On 13-01-18 11:27 AM, Ewan D. Milne wrote:
> From: "Ewan D. Milne" <emilne@redhat.com>
>
> Added capability to scsi_debug to generate sense and Unit Attention
> conditions to exercise the enhanced sense and Unit Attention handling.
>
> Signed-off-by: Ewan D. Milne <emilne@redhat.com>
> ---
>   drivers/scsi/scsi_debug.c | 133 ++++++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 133 insertions(+)
>
> diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c
> index 88f6d16..8fe9bcd 100644
> --- a/drivers/scsi/scsi_debug.c
> +++ b/drivers/scsi/scsi_debug.c
> @@ -3051,10 +3051,27 @@ static ssize_t sdebug_max_luns_store(struct device_driver * ddp,
>   				     const char * buf, size_t count)
>   {
>           int n;
> +#ifdef CONFIG_SCSI_ENHANCED_UA
> +	struct sdebug_host_info *sdbg_host;
> +	struct sdebug_dev_info *devip;
> +#endif
>
>   	if ((count > 0) && (1 == sscanf(buf, "%d", &n)) && (n >= 0)) {
>   		scsi_debug_max_luns = n;
>   		sdebug_max_tgts_luns();
> +
> +#ifdef CONFIG_SCSI_ENHANCED_UA
> +		spin_lock(&sdebug_host_list_lock);
> +		list_for_each_entry(sdbg_host, &sdebug_host_list, host_list) {
> +			list_for_each_entry(devip, &sdbg_host->dev_info_list,
> +					    dev_list) {
> +				mk_sense_buffer(devip, UNIT_ATTENTION,
> +						0x3f, 0x0e);
> +				devip->sense_pending = 1;
> +			}
> +		}
> +		spin_unlock(&sdebug_host_list_lock);
> +#endif
>   		return count;
>   	}
>   	return -EINVAL;
> @@ -3101,12 +3118,28 @@ static ssize_t sdebug_virtual_gb_store(struct device_driver * ddp,
>   				       const char * buf, size_t count)
>   {
>           int n;
> +#ifdef CONFIG_SCSI_ENHANCED_UA
> +	struct sdebug_host_info *sdbg_host;
> +	struct sdebug_dev_info *devip;
> +#endif
>
>   	if ((count > 0) && (1 == sscanf(buf, "%d", &n)) && (n >= 0)) {
>   		scsi_debug_virtual_gb = n;
>
>   		sdebug_capacity = get_sdebug_capacity();
>
> +#ifdef CONFIG_SCSI_ENHANCED_UA
> +		spin_lock(&sdebug_host_list_lock);
> +		list_for_each_entry(sdbg_host, &sdebug_host_list, host_list) {
> +			list_for_each_entry(devip, &sdbg_host->dev_info_list,
> +					    dev_list) {
> +				mk_sense_buffer(devip, UNIT_ATTENTION,
> +						0x2a, 0x09);
> +				devip->sense_pending = 1;
> +			}
> +		}
> +		spin_unlock(&sdebug_host_list_lock);
> +#endif
>   		return count;
>   	}
>   	return -EINVAL;
> @@ -3233,6 +3266,90 @@ static ssize_t sdebug_sense_overflow_store(struct device_driver *ddp,
>   }
>   DRIVER_ATTR(sense_overflow, S_IWUSR, NULL, sdebug_sense_overflow_store);
>
> +#ifdef CONFIG_SCSI_ENHANCED_UA
> +static ssize_t sdebug_ua_overflow_store(struct device_driver *ddp,
> +					const char *buf, size_t count)
> +{
> +	int n;
> +	struct sdebug_host_info *sdbg_host;
> +	struct sdebug_dev_info *devip;
> +
> +	if ((count > 0) && (1 == sscanf(buf, "%d", &n)) && (n >= 0)) {
> +		spin_lock(&sdebug_host_list_lock);
> +		list_for_each_entry(sdbg_host, &sdebug_host_list, host_list) {
> +			list_for_each_entry(devip, &sdbg_host->dev_info_list,
> +					    dev_list) {
> +				if (scsi_debug_dsense) {
> +					mk_sense_buffer(devip, UNIT_ATTENTION,
> +							0, 0);
> +					devip->sense_buff[7] = 8;
> +					devip->sense_buff[8] = 0x02;
> +					devip->sense_buff[9] = 0x06;
> +					devip->sense_buff[12] = 0x01;
> +				}
> +				devip->sense_pending = 1;
> +			}
> +		}
> +		spin_unlock(&sdebug_host_list_lock);
> +		return count;
> +	}
> +	return -EINVAL;
> +}
> +DRIVER_ATTR(ua_overflow, S_IWUSR, NULL, sdebug_ua_overflow_store);
> +
> +static ssize_t sdebug_soft_threshold_reached_store(struct device_driver *ddp,
> +						   const char *buf,
> +						   size_t count)
> +{
> +	int n;
> +	struct sdebug_host_info *sdbg_host;
> +	struct sdebug_dev_info *devip;
> +
> +	if ((count > 0) && (1 == sscanf(buf, "%d", &n)) && (n >= 0)) {
> +		spin_lock(&sdebug_host_list_lock);
> +		list_for_each_entry(sdbg_host, &sdebug_host_list, host_list) {
> +			list_for_each_entry(devip, &sdbg_host->dev_info_list,
> +					    dev_list) {
> +				mk_sense_buffer(devip, UNIT_ATTENTION,
> +						0x38, 0x07);
> +				devip->sense_pending = 1;
> +			}
> +		}
> +		spin_unlock(&sdebug_host_list_lock);
> +		return count;
> +	}
> +	return -EINVAL;
> +}
> +DRIVER_ATTR(soft_threshold_reached, S_IWUSR, NULL,
> +	    sdebug_soft_threshold_reached_store);
> +
> +static ssize_t sdebug_mode_parameters_changed_store(struct device_driver *ddp,
> +						    const char *buf,
> +						    size_t count)
> +{
> +	int n;
> +	struct sdebug_host_info *sdbg_host;
> +	struct sdebug_dev_info *devip;
> +
> +	if ((count > 0) && (1 == sscanf(buf, "%d", &n)) && (n >= 0)) {
> +		spin_lock(&sdebug_host_list_lock);
> +		list_for_each_entry(sdbg_host, &sdebug_host_list, host_list) {
> +			list_for_each_entry(devip, &sdbg_host->dev_info_list,
> +					    dev_list) {
> +				mk_sense_buffer(devip, UNIT_ATTENTION,
> +						0x2a, 0x01);
> +				devip->sense_pending = 1;
> +			}
> +		}
> +		spin_unlock(&sdebug_host_list_lock);
> +		return count;
> +	}
> +	return -EINVAL;
> +}
> +DRIVER_ATTR(mode_parameters_changed, S_IWUSR, NULL,
> +	    sdebug_mode_parameters_changed_store);
> +#endif
> +
>   /* Note: The following function creates attribute files in the
>      /sys/bus/pseudo/drivers/scsi_debug directory. The advantage of these
>      files (over those found in the /sys/module/scsi_debug/parameters
> @@ -3268,11 +3385,27 @@ static int do_create_driverfs_files(void)
>   	ret |= driver_create_file(&sdebug_driverfs_driver, &driver_attr_map);
>   	ret |= driver_create_file(&sdebug_driverfs_driver,
>   				  &driver_attr_sense_overflow);
> +#ifdef CONFIG_SCSI_ENHANCED_UA
> +	ret |= driver_create_file(&sdebug_driverfs_driver,
> +				  &driver_attr_ua_overflow);
> +	ret |= driver_create_file(&sdebug_driverfs_driver,
> +				  &driver_attr_soft_threshold_reached);
> +	ret |= driver_create_file(&sdebug_driverfs_driver,
> +				  &driver_attr_mode_parameters_changed);
> +#endif
>   	return ret;
>   }
>
>   static void do_remove_driverfs_files(void)
>   {
> +#ifdef CONFIG_SCSI_ENHANCED_UA
> +	driver_remove_file(&sdebug_driverfs_driver,
> +			   &driver_attr_mode_parameters_changed);
> +	driver_remove_file(&sdebug_driverfs_driver,
> +			   &driver_attr_soft_threshold_reached);
> +	driver_remove_file(&sdebug_driverfs_driver,
> +			   &driver_attr_ua_overflow);
> +#endif
>   	driver_remove_file(&sdebug_driverfs_driver,
>   			   &driver_attr_sense_overflow);
>   	driver_remove_file(&sdebug_driverfs_driver, &driver_attr_map);

Ewan,
Looks good. Could you add MODULE_PARM_DESC macros (in
alphabetical order) for mode_parameters_changed,
soft_threshold_reached and ua_overflow?

Doug Gilbert


  reply	other threads:[~2013-01-19 18:43 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-18 16:27 [PATCH RFC 0/9] [SCSI] Enhanced sense and Unit Attention handling Ewan D. Milne
2013-01-18 16:27 ` [PATCH RFC 1/9] [SCSI] Detect overflow of sense data buffer Ewan D. Milne
2013-01-18 16:46   ` James Bottomley
2013-01-21  7:26     ` Hannes Reinecke
2013-01-21  8:58       ` James Bottomley
2013-01-21 17:42       ` Douglas Gilbert
2013-01-22 15:10       ` Ewan Milne
2013-01-23  7:16         ` Hannes Reinecke
2013-01-22 15:08     ` Ewan Milne
2013-01-23 10:44       ` Hannes Reinecke
2013-01-23 13:06       ` James Bottomley
2013-01-23 21:21         ` Ewan Milne
2013-01-18 16:27 ` [PATCH RFC 2/9] [SCSI] Generate uevent on sd capacity change Ewan D. Milne
2013-01-18 16:27 ` [PATCH RFC 3/9] [SCSI] Add a kernel config option for enhanced Unit Attention support Ewan D. Milne
2013-01-18 16:27 ` [PATCH RFC 4/9] [SCSI] Rename scsi_evt_xxx to sdev_evt_xxx and scsi_event to sdev_event Ewan D. Milne
2013-01-22 17:33   ` Bart Van Assche
2013-01-23 21:08     ` Ewan Milne
2013-01-22 17:38   ` Bart Van Assche
2013-01-23 20:39     ` Ewan Milne
2013-01-18 16:27 ` [PATCH RFC 5/9] [SCSI] Add support for scsi_target events Ewan D. Milne
2013-01-18 16:27 ` [PATCH RFC 6/9] [SCSI] Generate uevents for certain Unit Attention codes Ewan D. Milne
2013-01-18 16:27 ` [PATCH RFC 7/9] [SCSI] Add sysfs support for enhanced Unit Attention handling Ewan D. Milne
2013-01-18 16:27 ` [PATCH RFC 8/9] [SCSI] Add sense and Unit Attention generation to scsi_debug Ewan D. Milne
2013-01-19 18:43   ` Douglas Gilbert [this message]
2013-01-22 15:12     ` Ewan Milne
2013-01-18 16:27 ` [PATCH RFC 9/9] [SCSI] Streamline detection of FM/EOM/ILI status Ewan D. Milne
2013-01-24  0:19 ` [PATCH RFC 0/9] [SCSI] Enhanced sense and Unit Attention handling Bart Van Assche
2013-01-24 11:38   ` Hannes Reinecke
2013-01-24 14:00     ` Ewan Milne
2013-01-24 14:01     ` Mike Christie
2013-01-24 22:02       ` Ewan Milne
2013-01-24 22:47         ` Mike Christie
2013-01-24 14:38     ` Bart Van Assche
2013-01-24 14:51       ` Hannes Reinecke
2013-01-24 15:00         ` Mike Christie
2013-01-24 15:15           ` Hannes Reinecke
2013-01-24 22:00             ` Ewan Milne
2013-01-26 18:20             ` Mike Christie
2013-01-28  6:56               ` Hannes Reinecke
2013-01-28 15:05       ` Jeremy Linton
2013-01-28 15:44         ` Bart Van Assche
2013-01-28 15:48           ` Hannes Reinecke
2013-01-28 20:26             ` James Bottomley
2013-01-28 15:52           ` Jeremy Linton
2013-01-28 16:04             ` Ewan Milne
2013-01-28 16:18             ` Mike Christie
2013-01-29  5:01         ` Shyam_Iyer
2013-01-24 13:53   ` Ewan Milne
2013-01-31 16:27 ` Ewan Milne

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=50FAE947.9090206@interlog.com \
    --to=dgilbert@interlog.com \
    --cc=emilne@redhat.com \
    --cc=linux-scsi@vger.kernel.org \
    /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.