public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] scsi: pollable 'state' attribute
@ 2017-08-10  7:05 Hannes Reinecke
  2017-08-10  7:05 ` [PATCH 1/3] scsi: allow state transition CREATED_BLOCK -> TRANSPORT_OFFLINE Hannes Reinecke
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Hannes Reinecke @ 2017-08-10  7:05 UTC (permalink / raw)
  To: Martin K. Petersen
  Cc: Christoph Hellwig, James Bottomley, linux-scsi, Hannes Reinecke

Hi all,

here's a small patchset to make the 'state' device attribute pollable.
It was supposed to be a small patch, but tnen hch suggested a rework
and I found a missing state transition.

So there you go.

Hannes Reinecke (3):
  scsi: allow state transition CREATED_BLOCK -> TRANSPORT_OFFLINE
  scsi_lib: rework scsi_internal_device_unblock_nowait()
  scsi: make 'state' device attribute pollable

 drivers/scsi/scsi_lib.c           | 22 ++++++++++++++++------
 drivers/scsi/scsi_transport_srp.c |  5 ++++-
 2 files changed, 20 insertions(+), 7 deletions(-)

-- 
1.8.5.6

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 1/3] scsi: allow state transition CREATED_BLOCK -> TRANSPORT_OFFLINE
  2017-08-10  7:05 [PATCH 0/3] scsi: pollable 'state' attribute Hannes Reinecke
@ 2017-08-10  7:05 ` Hannes Reinecke
  2017-08-10  7:09   ` Johannes Thumshirn
                     ` (2 more replies)
  2017-08-10  7:05 ` [PATCH 2/3] scsi_lib: rework scsi_internal_device_unblock_nowait() Hannes Reinecke
  2017-08-10  7:05 ` [PATCH 3/3] scsi: make 'state' device attribute pollable Hannes Reinecke
  2 siblings, 3 replies; 12+ messages in thread
From: Hannes Reinecke @ 2017-08-10  7:05 UTC (permalink / raw)
  To: Martin K. Petersen
  Cc: Christoph Hellwig, James Bottomley, linux-scsi, Hannes Reinecke,
	Hannes Reinecke

scsi_internal_device_unblock_nowait() allows a state transition
SDEV_CREATED_BLOCK -> SDEV_TRANSPORT_OFFLINE/SDEV_OFFLINE,
scsi_device_set_state() does not.
So add the missing state transition to scsi_device_set_state().

Signed-off-by: Hannes Reinecke <hare@suse.com>
---
 drivers/scsi/scsi_lib.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 41c19c7..1ae531b 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -2599,6 +2599,7 @@ void scsi_exit_queue(void)
 		case SDEV_RUNNING:
 		case SDEV_QUIESCE:
 		case SDEV_BLOCK:
+		case SDEV_CREATED_BLOCK:
 			break;
 		default:
 			goto illegal;
-- 
1.8.5.6

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 2/3] scsi_lib: rework scsi_internal_device_unblock_nowait()
  2017-08-10  7:05 [PATCH 0/3] scsi: pollable 'state' attribute Hannes Reinecke
  2017-08-10  7:05 ` [PATCH 1/3] scsi: allow state transition CREATED_BLOCK -> TRANSPORT_OFFLINE Hannes Reinecke
@ 2017-08-10  7:05 ` Hannes Reinecke
  2017-08-10  7:11   ` Johannes Thumshirn
                     ` (2 more replies)
  2017-08-10  7:05 ` [PATCH 3/3] scsi: make 'state' device attribute pollable Hannes Reinecke
  2 siblings, 3 replies; 12+ messages in thread
From: Hannes Reinecke @ 2017-08-10  7:05 UTC (permalink / raw)
  To: Martin K. Petersen
  Cc: Christoph Hellwig, James Bottomley, linux-scsi, Hannes Reinecke,
	Hannes Reinecke

Rework scsi_internal_device_unblock_nowait() into using a
switch statement.
No functional changes.

Signed-off-by: Hannes Reinecke <hare@suse.com>
---
 drivers/scsi/scsi_lib.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 1ae531b..035aa4c 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -3074,19 +3074,25 @@ int scsi_internal_device_unblock_nowait(struct scsi_device *sdev,
 	 * Try to transition the scsi device to SDEV_RUNNING or one of the
 	 * offlined states and goose the device queue if successful.
 	 */
-	if ((sdev->sdev_state == SDEV_BLOCK) ||
-	    (sdev->sdev_state == SDEV_TRANSPORT_OFFLINE))
+	switch (sdev->sdev_state) {
+	case SDEV_BLOCK:
+	case SDEV_TRANSPORT_OFFLINE:
 		sdev->sdev_state = new_state;
-	else if (sdev->sdev_state == SDEV_CREATED_BLOCK) {
+		break;
+	case SDEV_CREATED_BLOCK:
 		if (new_state == SDEV_TRANSPORT_OFFLINE ||
 		    new_state == SDEV_OFFLINE)
 			sdev->sdev_state = new_state;
 		else
 			sdev->sdev_state = SDEV_CREATED;
-	} else if (sdev->sdev_state != SDEV_CANCEL &&
-		 sdev->sdev_state != SDEV_OFFLINE)
+		break;
+	case SDEV_TRANSPORT_OFFLINE:
+	case SDEV_CANCEL:
+	case SDEV_OFFLINE:
+		break;
+	default:
 		return -EINVAL;
-
+	}
 	scsi_start_queue(sdev);
 
 	return 0;
-- 
1.8.5.6

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 3/3] scsi: make 'state' device attribute pollable
  2017-08-10  7:05 [PATCH 0/3] scsi: pollable 'state' attribute Hannes Reinecke
  2017-08-10  7:05 ` [PATCH 1/3] scsi: allow state transition CREATED_BLOCK -> TRANSPORT_OFFLINE Hannes Reinecke
  2017-08-10  7:05 ` [PATCH 2/3] scsi_lib: rework scsi_internal_device_unblock_nowait() Hannes Reinecke
@ 2017-08-10  7:05 ` Hannes Reinecke
  2017-08-10  7:19   ` Johannes Thumshirn
  2017-08-10  9:27   ` Christoph Hellwig
  2 siblings, 2 replies; 12+ messages in thread
From: Hannes Reinecke @ 2017-08-10  7:05 UTC (permalink / raw)
  To: Martin K. Petersen
  Cc: Christoph Hellwig, James Bottomley, linux-scsi, Hannes Reinecke,
	Hannes Reinecke

While the 'state' attribute can (and will) change occasionally,
calling 'poll()' or 'select()' on it fails as sysfs is never
notified that the state has changed.
With this patch calling 'poll()' or 'select()' will work
properly.

Signed-off-by: Hannes Reinecke <hare@suse.com>
---
 drivers/scsi/scsi_lib.c           | 3 +++
 drivers/scsi/scsi_transport_srp.c | 5 ++++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 035aa4c..3abef85 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -2655,6 +2655,7 @@ void scsi_exit_queue(void)
 
 	}
 	sdev->sdev_state = state;
+	sysfs_notify(&sdev->sdev_gendev.kobj, NULL, "state");
 	return 0;
 
  illegal:
@@ -3078,6 +3079,7 @@ int scsi_internal_device_unblock_nowait(struct scsi_device *sdev,
 	case SDEV_BLOCK:
 	case SDEV_TRANSPORT_OFFLINE:
 		sdev->sdev_state = new_state;
+		sysfs_notify(&sdev->sdev_gendev.kobj, NULL, "state");
 		break;
 	case SDEV_CREATED_BLOCK:
 		if (new_state == SDEV_TRANSPORT_OFFLINE ||
@@ -3085,6 +3087,7 @@ int scsi_internal_device_unblock_nowait(struct scsi_device *sdev,
 			sdev->sdev_state = new_state;
 		else
 			sdev->sdev_state = SDEV_CREATED;
+		sysfs_notify(&sdev->sdev_gendev.kobj, NULL, "state");
 		break;
 	case SDEV_TRANSPORT_OFFLINE:
 	case SDEV_CANCEL:
diff --git a/drivers/scsi/scsi_transport_srp.c b/drivers/scsi/scsi_transport_srp.c
index f617021..698cc46 100644
--- a/drivers/scsi/scsi_transport_srp.c
+++ b/drivers/scsi/scsi_transport_srp.c
@@ -556,8 +556,11 @@ int srp_reconnect_rport(struct srp_rport *rport)
 		 */
 		shost_for_each_device(sdev, shost) {
 			mutex_lock(&sdev->state_mutex);
-			if (sdev->sdev_state == SDEV_OFFLINE)
+			if (sdev->sdev_state == SDEV_OFFLINE) {
 				sdev->sdev_state = SDEV_RUNNING;
+				sysfs_notify(&sdev->sdev_gendev.kobj,
+					     NULL, "state");
+			}
 			mutex_unlock(&sdev->state_mutex);
 		}
 	} else if (rport->state == SRP_RPORT_RUNNING) {
-- 
1.8.5.6

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/3] scsi: allow state transition CREATED_BLOCK -> TRANSPORT_OFFLINE
  2017-08-10  7:05 ` [PATCH 1/3] scsi: allow state transition CREATED_BLOCK -> TRANSPORT_OFFLINE Hannes Reinecke
@ 2017-08-10  7:09   ` Johannes Thumshirn
  2017-08-10  9:26   ` Christoph Hellwig
  2017-08-10 14:31   ` James Bottomley
  2 siblings, 0 replies; 12+ messages in thread
From: Johannes Thumshirn @ 2017-08-10  7:09 UTC (permalink / raw)
  To: Hannes Reinecke
  Cc: Martin K. Petersen, Christoph Hellwig, James Bottomley,
	linux-scsi, Hannes Reinecke

Looks good,
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>

-- 
Johannes Thumshirn                                          Storage
jthumshirn@suse.de                                +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/3] scsi_lib: rework scsi_internal_device_unblock_nowait()
  2017-08-10  7:05 ` [PATCH 2/3] scsi_lib: rework scsi_internal_device_unblock_nowait() Hannes Reinecke
@ 2017-08-10  7:11   ` Johannes Thumshirn
  2017-08-10  9:27   ` Christoph Hellwig
  2017-08-11  3:31   ` kbuild test robot
  2 siblings, 0 replies; 12+ messages in thread
From: Johannes Thumshirn @ 2017-08-10  7:11 UTC (permalink / raw)
  To: Hannes Reinecke
  Cc: Martin K. Petersen, Christoph Hellwig, James Bottomley,
	linux-scsi, Hannes Reinecke

switch()es are so much nicer to read :-)
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>

-- 
Johannes Thumshirn                                          Storage
jthumshirn@suse.de                                +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 3/3] scsi: make 'state' device attribute pollable
  2017-08-10  7:05 ` [PATCH 3/3] scsi: make 'state' device attribute pollable Hannes Reinecke
@ 2017-08-10  7:19   ` Johannes Thumshirn
  2017-08-10  9:27   ` Christoph Hellwig
  1 sibling, 0 replies; 12+ messages in thread
From: Johannes Thumshirn @ 2017-08-10  7:19 UTC (permalink / raw)
  To: Hannes Reinecke
  Cc: Martin K. Petersen, Christoph Hellwig, James Bottomley,
	linux-scsi, Hannes Reinecke

Looks good,
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
-- 
Johannes Thumshirn                                          Storage
jthumshirn@suse.de                                +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/3] scsi: allow state transition CREATED_BLOCK -> TRANSPORT_OFFLINE
  2017-08-10  7:05 ` [PATCH 1/3] scsi: allow state transition CREATED_BLOCK -> TRANSPORT_OFFLINE Hannes Reinecke
  2017-08-10  7:09   ` Johannes Thumshirn
@ 2017-08-10  9:26   ` Christoph Hellwig
  2017-08-10 14:31   ` James Bottomley
  2 siblings, 0 replies; 12+ messages in thread
From: Christoph Hellwig @ 2017-08-10  9:26 UTC (permalink / raw)
  To: Hannes Reinecke
  Cc: Martin K. Petersen, Christoph Hellwig, James Bottomley,
	linux-scsi, Hannes Reinecke

Looks good,

Reviewed-by: Christoph Hellwig <hch@lst.de>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/3] scsi_lib: rework scsi_internal_device_unblock_nowait()
  2017-08-10  7:05 ` [PATCH 2/3] scsi_lib: rework scsi_internal_device_unblock_nowait() Hannes Reinecke
  2017-08-10  7:11   ` Johannes Thumshirn
@ 2017-08-10  9:27   ` Christoph Hellwig
  2017-08-11  3:31   ` kbuild test robot
  2 siblings, 0 replies; 12+ messages in thread
From: Christoph Hellwig @ 2017-08-10  9:27 UTC (permalink / raw)
  To: Hannes Reinecke
  Cc: Martin K. Petersen, Christoph Hellwig, James Bottomley,
	linux-scsi, Hannes Reinecke

On Thu, Aug 10, 2017 at 09:05:30AM +0200, Hannes Reinecke wrote:
> Rework scsi_internal_device_unblock_nowait() into using a
> switch statement.
> No functional changes.
> 
> Signed-off-by: Hannes Reinecke <hare@suse.com>
> ---
>  drivers/scsi/scsi_lib.c | 18 ++++++++++++------
>  1 file changed, 12 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
> index 1ae531b..035aa4c 100644
> --- a/drivers/scsi/scsi_lib.c
> +++ b/drivers/scsi/scsi_lib.c
> @@ -3074,19 +3074,25 @@ int scsi_internal_device_unblock_nowait(struct scsi_device *sdev,
>  	 * Try to transition the scsi device to SDEV_RUNNING or one of the
>  	 * offlined states and goose the device queue if successful.
>  	 */
> -	if ((sdev->sdev_state == SDEV_BLOCK) ||
> -	    (sdev->sdev_state == SDEV_TRANSPORT_OFFLINE))
> +	switch (sdev->sdev_state) {
> +	case SDEV_BLOCK:
> +	case SDEV_TRANSPORT_OFFLINE:
>  		sdev->sdev_state = new_state;
> -	else if (sdev->sdev_state == SDEV_CREATED_BLOCK) {
> +		break;
> +	case SDEV_CREATED_BLOCK:
>  		if (new_state == SDEV_TRANSPORT_OFFLINE ||
>  		    new_state == SDEV_OFFLINE)
>  			sdev->sdev_state = new_state;
>  		else
>  			sdev->sdev_state = SDEV_CREATED;
> -	} else if (sdev->sdev_state != SDEV_CANCEL &&
> -		 sdev->sdev_state != SDEV_OFFLINE)
> +		break;
> +	case SDEV_TRANSPORT_OFFLINE:
> +	case SDEV_CANCEL:
> +	case SDEV_OFFLINE:
> +		break;
> +	default:
>  		return -EINVAL;

This changes ok by default to reject by default and instead lists
the ok states.  Which probably is the right thing to do for future
proofing against new states, so:

Reviewed-by: Christoph Hellwig <hch@lst.de>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 3/3] scsi: make 'state' device attribute pollable
  2017-08-10  7:05 ` [PATCH 3/3] scsi: make 'state' device attribute pollable Hannes Reinecke
  2017-08-10  7:19   ` Johannes Thumshirn
@ 2017-08-10  9:27   ` Christoph Hellwig
  1 sibling, 0 replies; 12+ messages in thread
From: Christoph Hellwig @ 2017-08-10  9:27 UTC (permalink / raw)
  To: Hannes Reinecke
  Cc: Martin K. Petersen, Christoph Hellwig, James Bottomley,
	linux-scsi, Hannes Reinecke

Looks good,

Reviewed-by: Christoph Hellwig <hch@lst.de>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/3] scsi: allow state transition CREATED_BLOCK -> TRANSPORT_OFFLINE
  2017-08-10  7:05 ` [PATCH 1/3] scsi: allow state transition CREATED_BLOCK -> TRANSPORT_OFFLINE Hannes Reinecke
  2017-08-10  7:09   ` Johannes Thumshirn
  2017-08-10  9:26   ` Christoph Hellwig
@ 2017-08-10 14:31   ` James Bottomley
  2 siblings, 0 replies; 12+ messages in thread
From: James Bottomley @ 2017-08-10 14:31 UTC (permalink / raw)
  To: Hannes Reinecke, Martin K. Petersen
  Cc: Christoph Hellwig, linux-scsi, Hannes Reinecke

On Thu, 2017-08-10 at 09:05 +0200, Hannes Reinecke wrote:
> scsi_internal_device_unblock_nowait() allows a state transition
> SDEV_CREATED_BLOCK -> SDEV_TRANSPORT_OFFLINE/SDEV_OFFLINE,
> scsi_device_set_state() does not.
> So add the missing state transition to scsi_device_set_state().
> 
> Signed-off-by: Hannes Reinecke <hare@suse.com>
> ---
>  drivers/scsi/scsi_lib.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
> index 41c19c7..1ae531b 100644
> --- a/drivers/scsi/scsi_lib.c
> +++ b/drivers/scsi/scsi_lib.c
> @@ -2599,6 +2599,7 @@ void scsi_exit_queue(void)
>  		case SDEV_RUNNING:
>  		case SDEV_QUIESCE:
>  		case SDEV_BLOCK:
> +		case SDEV_CREATED_BLOCK:
>  			break;
>  		default:
>  			goto illegal;

This isn't quite good enough: a device that went CREATE_BLOCK ->
OFFLINE, the queue will still be stopped meaning I/O will pile up in it
forever and it won't restart when the device is brought online.  It we
need to set the queue running again so that the now offline device
errors all pending I/O.  It looks like this is a bug in BLOCK->OFFLINE
too.

We can't simply call scsi_start_queue() from within
scsi_device_set_state() because we may have a lock recursion problem,
so we might have to introduce a new state that allows the queue to be
restarted in the caller.

James

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/3] scsi_lib: rework scsi_internal_device_unblock_nowait()
  2017-08-10  7:05 ` [PATCH 2/3] scsi_lib: rework scsi_internal_device_unblock_nowait() Hannes Reinecke
  2017-08-10  7:11   ` Johannes Thumshirn
  2017-08-10  9:27   ` Christoph Hellwig
@ 2017-08-11  3:31   ` kbuild test robot
  2 siblings, 0 replies; 12+ messages in thread
From: kbuild test robot @ 2017-08-11  3:31 UTC (permalink / raw)
  Cc: kbuild-all, Martin K. Petersen, Christoph Hellwig,
	James Bottomley, linux-scsi, Hannes Reinecke, Hannes Reinecke

[-- Attachment #1: Type: text/plain, Size: 2888 bytes --]

Hi Hannes,

[auto build test ERROR on mkp-scsi/for-next]
[also build test ERROR on v4.13-rc4 next-20170810]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Hannes-Reinecke/scsi-pollable-state-attribute/20170811-071630
base:   https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next
config: xtensa-allmodconfig (attached as .config)
compiler: xtensa-linux-gcc (GCC) 4.9.0
reproduce:
        wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=xtensa 

All errors (new ones prefixed by >>):

   drivers/scsi/scsi_lib.c: In function 'scsi_internal_device_unblock_nowait':
>> drivers/scsi/scsi_lib.c:3089:2: error: duplicate case value
     case SDEV_TRANSPORT_OFFLINE:
     ^
>> drivers/scsi/scsi_lib.c:3079:2: error: previously used here
     case SDEV_TRANSPORT_OFFLINE:
     ^

vim +3089 drivers/scsi/scsi_lib.c

  3054	
  3055	/**
  3056	 * scsi_internal_device_unblock_nowait - resume a device after a block request
  3057	 * @sdev:	device to resume
  3058	 * @new_state:	state to set the device to after unblocking
  3059	 *
  3060	 * Restart the device queue for a previously suspended SCSI device. Does not
  3061	 * sleep.
  3062	 *
  3063	 * Returns zero if successful or a negative error code upon failure.
  3064	 *
  3065	 * Notes:
  3066	 * This routine transitions the device to the SDEV_RUNNING state or to one of
  3067	 * the offline states (which must be a legal transition) allowing the midlayer
  3068	 * to goose the queue for this device.
  3069	 */
  3070	int scsi_internal_device_unblock_nowait(struct scsi_device *sdev,
  3071						enum scsi_device_state new_state)
  3072	{
  3073		/*
  3074		 * Try to transition the scsi device to SDEV_RUNNING or one of the
  3075		 * offlined states and goose the device queue if successful.
  3076		 */
  3077		switch (sdev->sdev_state) {
  3078		case SDEV_BLOCK:
> 3079		case SDEV_TRANSPORT_OFFLINE:
  3080			sdev->sdev_state = new_state;
  3081			break;
  3082		case SDEV_CREATED_BLOCK:
  3083			if (new_state == SDEV_TRANSPORT_OFFLINE ||
  3084			    new_state == SDEV_OFFLINE)
  3085				sdev->sdev_state = new_state;
  3086			else
  3087				sdev->sdev_state = SDEV_CREATED;
  3088			break;
> 3089		case SDEV_TRANSPORT_OFFLINE:
  3090		case SDEV_CANCEL:
  3091		case SDEV_OFFLINE:
  3092			break;
  3093		default:
  3094			return -EINVAL;
  3095		}
  3096		scsi_start_queue(sdev);
  3097	
  3098		return 0;
  3099	}
  3100	EXPORT_SYMBOL_GPL(scsi_internal_device_unblock_nowait);
  3101	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 50926 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2017-08-11  3:31 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-08-10  7:05 [PATCH 0/3] scsi: pollable 'state' attribute Hannes Reinecke
2017-08-10  7:05 ` [PATCH 1/3] scsi: allow state transition CREATED_BLOCK -> TRANSPORT_OFFLINE Hannes Reinecke
2017-08-10  7:09   ` Johannes Thumshirn
2017-08-10  9:26   ` Christoph Hellwig
2017-08-10 14:31   ` James Bottomley
2017-08-10  7:05 ` [PATCH 2/3] scsi_lib: rework scsi_internal_device_unblock_nowait() Hannes Reinecke
2017-08-10  7:11   ` Johannes Thumshirn
2017-08-10  9:27   ` Christoph Hellwig
2017-08-11  3:31   ` kbuild test robot
2017-08-10  7:05 ` [PATCH 3/3] scsi: make 'state' device attribute pollable Hannes Reinecke
2017-08-10  7:19   ` Johannes Thumshirn
2017-08-10  9:27   ` Christoph Hellwig

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox