public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/2] cleanup patch
@ 2023-10-18 11:37 Wenchao Hao
  2023-10-18 11:37 ` [PATCH v3 1/2] scsi: core: cleanup scsi_dev_queue_ready() Wenchao Hao
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Wenchao Hao @ 2023-10-18 11:37 UTC (permalink / raw)
  To: Martin K . Petersen, Bart Van Assche
  Cc: James E . J . Bottomley, linux-scsi, linux-kernel, louhongxiang,
	Wenchao Hao

This is a cleanup patchset, no logic changed.

The first patch cleanup scsi_dev_queue_ready();
The second patch add comment to tell callback target_destroy of
scsi_host_template must not sleep.

V3:
  - Update comments suggested by Bart

V2:
  - Tell which spinlock is held in comment of target_destroy

Wenchao Hao (2):
  scsi: core: cleanup scsi_dev_queue_ready()
  scsi: Add comment of target_destroy in scsi_host_template

 drivers/scsi/scsi_lib.c  | 32 +++++++++++++++-----------------
 include/scsi/scsi_host.h |  3 +++
 2 files changed, 18 insertions(+), 17 deletions(-)

-- 
2.32.0


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

* [PATCH v3 1/2] scsi: core: cleanup scsi_dev_queue_ready()
  2023-10-18 11:37 [PATCH v3 0/2] cleanup patch Wenchao Hao
@ 2023-10-18 11:37 ` Wenchao Hao
  2023-10-18 18:07   ` Bart Van Assche
  2023-10-18 11:37 ` [PATCH v3 2/2] scsi: Add comment of target_destroy in scsi_host_template Wenchao Hao
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 7+ messages in thread
From: Wenchao Hao @ 2023-10-18 11:37 UTC (permalink / raw)
  To: Martin K . Petersen, Bart Van Assche
  Cc: James E . J . Bottomley, linux-scsi, linux-kernel, louhongxiang,
	Wenchao Hao

This is just a cleanup for scsi_dev_queue_ready() to avoid
redundant goto and if statement, it did not change the origin
logic.

Signed-off-by: Wenchao Hao <haowenchao2@huawei.com>
---
 drivers/scsi/scsi_lib.c | 32 +++++++++++++++-----------------
 1 file changed, 15 insertions(+), 17 deletions(-)

diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index aca57c3ab626..cf3864f72093 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -1251,28 +1251,26 @@ static inline int scsi_dev_queue_ready(struct request_queue *q,
 	int token;
 
 	token = sbitmap_get(&sdev->budget_map);
-	if (atomic_read(&sdev->device_blocked)) {
-		if (token < 0)
-			goto out;
+	if (token < 0)
+		return -1;
 
-		if (scsi_device_busy(sdev) > 1)
-			goto out_dec;
+	if (!atomic_read(&sdev->device_blocked))
+		return token;
 
-		/*
-		 * unblock after device_blocked iterates to zero
-		 */
-		if (atomic_dec_return(&sdev->device_blocked) > 0)
-			goto out_dec;
-		SCSI_LOG_MLQUEUE(3, sdev_printk(KERN_INFO, sdev,
-				   "unblocking device at zero depth\n"));
+	/*
+	 * Only unblock if no other commands are pending and
+	 * if device_blocked has decreased to zero
+	 */
+	if (scsi_device_busy(sdev) > 1 ||
+	    atomic_dec_return(&sdev->device_blocked) > 0) {
+		sbitmap_put(&sdev->budget_map, token);
+		return -1;
 	}
 
+	SCSI_LOG_MLQUEUE(3, sdev_printk(KERN_INFO, sdev,
+			 "unblocking device at zero depth\n"));
+
 	return token;
-out_dec:
-	if (token >= 0)
-		sbitmap_put(&sdev->budget_map, token);
-out:
-	return -1;
 }
 
 /*
-- 
2.32.0


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

* [PATCH v3 2/2] scsi: Add comment of target_destroy in scsi_host_template
  2023-10-18 11:37 [PATCH v3 0/2] cleanup patch Wenchao Hao
  2023-10-18 11:37 ` [PATCH v3 1/2] scsi: core: cleanup scsi_dev_queue_ready() Wenchao Hao
@ 2023-10-18 11:37 ` Wenchao Hao
  2023-10-18 18:03   ` Bart Van Assche
  2023-10-25  2:31 ` [PATCH v3 0/2] cleanup patch Martin K. Petersen
  2023-10-30 15:34 ` Martin K. Petersen
  3 siblings, 1 reply; 7+ messages in thread
From: Wenchao Hao @ 2023-10-18 11:37 UTC (permalink / raw)
  To: Martin K . Petersen, Bart Van Assche
  Cc: James E . J . Bottomley, linux-scsi, linux-kernel, louhongxiang,
	Wenchao Hao

Add comment to tell callback function target_destroy of
scsi_host_template must not sleep.

Signed-off-by: Wenchao Hao <haowenchao2@huawei.com>
---
 include/scsi/scsi_host.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h
index 49f768d0ff37..2c61dd30d766 100644
--- a/include/scsi/scsi_host.h
+++ b/include/scsi/scsi_host.h
@@ -245,6 +245,9 @@ struct scsi_host_template {
 	 * midlayer calls this point so that the driver may deallocate
 	 * and terminate any references to the target.
 	 *
+	 * Note: This callback is called with the host lock held and hence
+	 * must not sleep.
+	 *
 	 * Status: OPTIONAL
 	 */
 	void (* target_destroy)(struct scsi_target *);
-- 
2.32.0


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

* Re: [PATCH v3 2/2] scsi: Add comment of target_destroy in scsi_host_template
  2023-10-18 11:37 ` [PATCH v3 2/2] scsi: Add comment of target_destroy in scsi_host_template Wenchao Hao
@ 2023-10-18 18:03   ` Bart Van Assche
  0 siblings, 0 replies; 7+ messages in thread
From: Bart Van Assche @ 2023-10-18 18:03 UTC (permalink / raw)
  To: Wenchao Hao, Martin K . Petersen
  Cc: James E . J . Bottomley, linux-scsi, linux-kernel, louhongxiang

On 10/18/23 04:37, Wenchao Hao wrote:
> Add comment to tell callback function target_destroy of
> scsi_host_template must not sleep.
> 
> Signed-off-by: Wenchao Hao <haowenchao2@huawei.com>
> ---
>   include/scsi/scsi_host.h | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h
> index 49f768d0ff37..2c61dd30d766 100644
> --- a/include/scsi/scsi_host.h
> +++ b/include/scsi/scsi_host.h
> @@ -245,6 +245,9 @@ struct scsi_host_template {
>   	 * midlayer calls this point so that the driver may deallocate
>   	 * and terminate any references to the target.
>   	 *
> +	 * Note: This callback is called with the host lock held and hence
> +	 * must not sleep.
> +	 *
>   	 * Status: OPTIONAL
>   	 */
>   	void (* target_destroy)(struct scsi_target *);

Reviewed-by: Bart Van Assche <bvanassche@acm.org>

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

* Re: [PATCH v3 1/2] scsi: core: cleanup scsi_dev_queue_ready()
  2023-10-18 11:37 ` [PATCH v3 1/2] scsi: core: cleanup scsi_dev_queue_ready() Wenchao Hao
@ 2023-10-18 18:07   ` Bart Van Assche
  0 siblings, 0 replies; 7+ messages in thread
From: Bart Van Assche @ 2023-10-18 18:07 UTC (permalink / raw)
  To: Wenchao Hao, Martin K . Petersen
  Cc: James E . J . Bottomley, linux-scsi, linux-kernel, louhongxiang

On 10/18/23 04:37, Wenchao Hao wrote:
> This is just a cleanup for scsi_dev_queue_ready() to avoid
> redundant goto and if statement, it did not change the origin
> logic.
> 
> Signed-off-by: Wenchao Hao <haowenchao2@huawei.com>
> ---
>   drivers/scsi/scsi_lib.c | 32 +++++++++++++++-----------------
>   1 file changed, 15 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
> index aca57c3ab626..cf3864f72093 100644
> --- a/drivers/scsi/scsi_lib.c
> +++ b/drivers/scsi/scsi_lib.c
> @@ -1251,28 +1251,26 @@ static inline int scsi_dev_queue_ready(struct request_queue *q,
>   	int token;
>   
>   	token = sbitmap_get(&sdev->budget_map);
> -	if (atomic_read(&sdev->device_blocked)) {
> -		if (token < 0)
> -			goto out;
> +	if (token < 0)
> +		return -1;
>   
> -		if (scsi_device_busy(sdev) > 1)
> -			goto out_dec;
> +	if (!atomic_read(&sdev->device_blocked))
> +		return token;
>   
> -		/*
> -		 * unblock after device_blocked iterates to zero
> -		 */
> -		if (atomic_dec_return(&sdev->device_blocked) > 0)
> -			goto out_dec;
> -		SCSI_LOG_MLQUEUE(3, sdev_printk(KERN_INFO, sdev,
> -				   "unblocking device at zero depth\n"));
> +	/*
> +	 * Only unblock if no other commands are pending and
> +	 * if device_blocked has decreased to zero
> +	 */
> +	if (scsi_device_busy(sdev) > 1 ||
> +	    atomic_dec_return(&sdev->device_blocked) > 0) {
> +		sbitmap_put(&sdev->budget_map, token);
> +		return -1;
>   	}
>   
> +	SCSI_LOG_MLQUEUE(3, sdev_printk(KERN_INFO, sdev,
> +			 "unblocking device at zero depth\n"));
> +
>   	return token;
> -out_dec:
> -	if (token >= 0)
> -		sbitmap_put(&sdev->budget_map, token);
> -out:
> -	return -1;
>   }
>   
>   /*

Thanks for having made this function easier to read.

Reviewed-by: Bart Van Assche <bvanassche@acm.org>

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

* Re: [PATCH v3 0/2] cleanup patch
  2023-10-18 11:37 [PATCH v3 0/2] cleanup patch Wenchao Hao
  2023-10-18 11:37 ` [PATCH v3 1/2] scsi: core: cleanup scsi_dev_queue_ready() Wenchao Hao
  2023-10-18 11:37 ` [PATCH v3 2/2] scsi: Add comment of target_destroy in scsi_host_template Wenchao Hao
@ 2023-10-25  2:31 ` Martin K. Petersen
  2023-10-30 15:34 ` Martin K. Petersen
  3 siblings, 0 replies; 7+ messages in thread
From: Martin K. Petersen @ 2023-10-25  2:31 UTC (permalink / raw)
  To: Wenchao Hao
  Cc: Martin K . Petersen, Bart Van Assche, James E . J . Bottomley,
	linux-scsi, linux-kernel, louhongxiang


Wenchao,

> This is a cleanup patchset, no logic changed.
>
> The first patch cleanup scsi_dev_queue_ready();
> The second patch add comment to tell callback target_destroy of
> scsi_host_template must not sleep.

Applied to 6.7/scsi-staging, thanks!

-- 
Martin K. Petersen	Oracle Linux Engineering

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

* Re: [PATCH v3 0/2] cleanup patch
  2023-10-18 11:37 [PATCH v3 0/2] cleanup patch Wenchao Hao
                   ` (2 preceding siblings ...)
  2023-10-25  2:31 ` [PATCH v3 0/2] cleanup patch Martin K. Petersen
@ 2023-10-30 15:34 ` Martin K. Petersen
  3 siblings, 0 replies; 7+ messages in thread
From: Martin K. Petersen @ 2023-10-30 15:34 UTC (permalink / raw)
  To: Bart Van Assche, Wenchao Hao
  Cc: Martin K . Petersen, James E . J . Bottomley, linux-scsi,
	linux-kernel, louhongxiang

On Wed, 18 Oct 2023 19:37:44 +0800, Wenchao Hao wrote:

> This is a cleanup patchset, no logic changed.
> 
> The first patch cleanup scsi_dev_queue_ready();
> The second patch add comment to tell callback target_destroy of
> scsi_host_template must not sleep.
> 
> V3:
>   - Update comments suggested by Bart
> 
> [...]

Applied to 6.7/scsi-queue, thanks!

[1/2] scsi: core: cleanup scsi_dev_queue_ready()
      https://git.kernel.org/mkp/scsi/c/3dc985bfbd00
[2/2] scsi: Add comment of target_destroy in scsi_host_template
      https://git.kernel.org/mkp/scsi/c/82f52b2cd5fc

-- 
Martin K. Petersen	Oracle Linux Engineering

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

end of thread, other threads:[~2023-10-30 15:35 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-18 11:37 [PATCH v3 0/2] cleanup patch Wenchao Hao
2023-10-18 11:37 ` [PATCH v3 1/2] scsi: core: cleanup scsi_dev_queue_ready() Wenchao Hao
2023-10-18 18:07   ` Bart Van Assche
2023-10-18 11:37 ` [PATCH v3 2/2] scsi: Add comment of target_destroy in scsi_host_template Wenchao Hao
2023-10-18 18:03   ` Bart Van Assche
2023-10-25  2:31 ` [PATCH v3 0/2] cleanup patch Martin K. Petersen
2023-10-30 15:34 ` Martin K. Petersen

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