All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] cleanup patch
@ 2023-10-16  2:08 Wenchao Hao
  2023-10-16  2:08 ` [PATCH v2 1/2] scsi: core: cleanup scsi_dev_queue_ready() Wenchao Hao
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Wenchao Hao @ 2023-10-16  2:08 UTC (permalink / raw)
  To: James E . J . Bottomley, Martin K . Petersen, linux-scsi
  Cc: linux-kernel, louhongxiang, Wenchao Hao

This is a cleanup patchset, no logic changed.

The first patch just cleanup scsi_dev_queue_ready();
The second patch add comment for target_destroy callback of
scsi_host_template to tell it is called in atomic context.

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  | 35 ++++++++++++++++++-----------------
 include/scsi/scsi_host.h |  3 +++
 2 files changed, 21 insertions(+), 17 deletions(-)

-- 
2.32.0


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

* [PATCH v2 1/2] scsi: core: cleanup scsi_dev_queue_ready()
  2023-10-16  2:08 [PATCH v2 0/2] cleanup patch Wenchao Hao
@ 2023-10-16  2:08 ` Wenchao Hao
  2023-10-17 21:15   ` Bart Van Assche
  2023-10-16  2:08 ` [PATCH v2 2/2] scsi: Add comment of target_destroy in scsi_host_template Wenchao Hao
  2023-10-17 17:01 ` [PATCH v2 0/2] cleanup patch Wenchao Hao
  2 siblings, 1 reply; 8+ messages in thread
From: Wenchao Hao @ 2023-10-16  2:08 UTC (permalink / raw)
  To: James E . J . Bottomley, Martin K . Petersen, linux-scsi
  Cc: 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 | 35 ++++++++++++++++++-----------------
 1 file changed, 18 insertions(+), 17 deletions(-)

diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 40f407ffd26f..b179c24f9c76 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -1250,28 +1250,29 @@ 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;
+	/*
+	 * device_blocked is not set at mostly time, so check it first
+	 * and return token when it is not set.
+	 */
+	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"));
+	/*
+	 * unblock after device_blocked iterates 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] 8+ messages in thread

* [PATCH v2 2/2] scsi: Add comment of target_destroy in scsi_host_template
  2023-10-16  2:08 [PATCH v2 0/2] cleanup patch Wenchao Hao
  2023-10-16  2:08 ` [PATCH v2 1/2] scsi: core: cleanup scsi_dev_queue_ready() Wenchao Hao
@ 2023-10-16  2:08 ` Wenchao Hao
  2023-10-17 21:04   ` Bart Van Assche
  2023-10-17 17:01 ` [PATCH v2 0/2] cleanup patch Wenchao Hao
  2 siblings, 1 reply; 8+ messages in thread
From: Wenchao Hao @ 2023-10-16  2:08 UTC (permalink / raw)
  To: James E . J . Bottomley, Martin K . Petersen, linux-scsi
  Cc: linux-kernel, louhongxiang, Wenchao Hao

Add comment to tell callback function target_destroy of
scsi_host_template is called in atomic context.

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..2e8d77441064 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 in called with spin_lock shost->host_lock held,
+	 * so donot call functions might cause schedule
+	 *
 	 * Status: OPTIONAL
 	 */
 	void (* target_destroy)(struct scsi_target *);
-- 
2.32.0


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

* Re: [PATCH v2 0/2] cleanup patch
  2023-10-16  2:08 [PATCH v2 0/2] cleanup patch Wenchao Hao
  2023-10-16  2:08 ` [PATCH v2 1/2] scsi: core: cleanup scsi_dev_queue_ready() Wenchao Hao
  2023-10-16  2:08 ` [PATCH v2 2/2] scsi: Add comment of target_destroy in scsi_host_template Wenchao Hao
@ 2023-10-17 17:01 ` Wenchao Hao
  2 siblings, 0 replies; 8+ messages in thread
From: Wenchao Hao @ 2023-10-17 17:01 UTC (permalink / raw)
  To: Wenchao Hao
  Cc: James E . J . Bottomley, Martin K . Petersen, linux-scsi,
	linux-kernel, louhongxiang

On Mon, Oct 16, 2023 at 10:09 AM Wenchao Hao <haowenchao2@huawei.com> wrote:
>
> This is a cleanup patchset, no logic changed.
>
> The first patch just cleanup scsi_dev_queue_ready();
> The second patch add comment for target_destroy callback of
> scsi_host_template to tell it is called in atomic context.
>

Friendly ping...

> 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  | 35 ++++++++++++++++++-----------------
>  include/scsi/scsi_host.h |  3 +++
>  2 files changed, 21 insertions(+), 17 deletions(-)
>
> --
> 2.32.0
>

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

* Re: [PATCH v2 2/2] scsi: Add comment of target_destroy in scsi_host_template
  2023-10-16  2:08 ` [PATCH v2 2/2] scsi: Add comment of target_destroy in scsi_host_template Wenchao Hao
@ 2023-10-17 21:04   ` Bart Van Assche
  2023-10-18  2:24     ` Wenchao Hao
  0 siblings, 1 reply; 8+ messages in thread
From: Bart Van Assche @ 2023-10-17 21:04 UTC (permalink / raw)
  To: Wenchao Hao, James E . J . Bottomley, Martin K . Petersen, linux-scsi
  Cc: linux-kernel, louhongxiang

On 10/15/23 19:08, Wenchao Hao wrote:
> Add comment to tell callback function target_destroy of
> scsi_host_template is called in atomic context.
> 
> 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..2e8d77441064 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 in called with spin_lock shost->host_lock held,
> +	 * so donot call functions might cause schedule
> +	 *
>   	 * Status: OPTIONAL
>   	 */
>   	void (* target_destroy)(struct scsi_target *);

The above comment can be made shorter and spelling and grammar can be 
improved. How about the following: "This callback is called with the 
host lock held and hence must not sleep."?

Thanks,

Bart.

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

* Re: [PATCH v2 1/2] scsi: core: cleanup scsi_dev_queue_ready()
  2023-10-16  2:08 ` [PATCH v2 1/2] scsi: core: cleanup scsi_dev_queue_ready() Wenchao Hao
@ 2023-10-17 21:15   ` Bart Van Assche
  2023-10-18  2:22     ` Wenchao Hao
  0 siblings, 1 reply; 8+ messages in thread
From: Bart Van Assche @ 2023-10-17 21:15 UTC (permalink / raw)
  To: Wenchao Hao, James E . J . Bottomley, Martin K . Petersen, linux-scsi
  Cc: linux-kernel, louhongxiang

On 10/15/23 19:08, Wenchao Hao wrote:
> +	/*
> +	 * device_blocked is not set at mostly time, so check it first
> +	 * and return token when it is not set.
> +	 */
> +	if (!atomic_read(&sdev->device_blocked))
> +		return token;

This patch looks like an improvement to me. But I don't think that the
above comment is useful. I propose to move it into the patch
description.

> -		/*
> -		 * 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"));
> +	/*
> +	 * unblock after device_blocked iterates to zero
> +	 */
 > +	if (scsi_device_busy(sdev) > 1 ||
 > +	    atomic_dec_return(&sdev->device_blocked) > 0) {
 > +		sbitmap_put(&sdev->budget_map, token);
 > +		return -1;
 >   	}

Please make the above comment match the new code, e.g. by changing it
into the following: "Only unblock if no other commands are pending and
if device_blocked has decreased to zero".

Thanks,

Bart.

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

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

On 2023/10/18 5:15, Bart Van Assche wrote:
> On 10/15/23 19:08, Wenchao Hao wrote:
>> +    /*
>> +     * device_blocked is not set at mostly time, so check it first
>> +     * and return token when it is not set.
>> +     */
>> +    if (!atomic_read(&sdev->device_blocked))
>> +        return token;
> 
> This patch looks like an improvement to me. But I don't think that the
> above comment is useful. I propose to move it into the patch
> description.
> 
>> -        /*
>> -         * 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"));
>> +    /*
>> +     * unblock after device_blocked iterates to zero
>> +     */
>  > +    if (scsi_device_busy(sdev) > 1 ||
>  > +        atomic_dec_return(&sdev->device_blocked) > 0) {
>  > +        sbitmap_put(&sdev->budget_map, token);
>  > +        return -1;
>  >       }
> 
> Please make the above comment match the new code, e.g. by changing it
> into the following: "Only unblock if no other commands are pending and
> if device_blocked has decreased to zero".
> 

OK, would update.

Thanks.

> Thanks,
> 
> Bart.
> 


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

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

On 2023/10/18 5:04, Bart Van Assche wrote:
> On 10/15/23 19:08, Wenchao Hao wrote:
>> Add comment to tell callback function target_destroy of
>> scsi_host_template is called in atomic context.
>>
>> 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..2e8d77441064 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 in called with spin_lock shost->host_lock held,
>> +     * so donot call functions might cause schedule
>> +     *
>>        * Status: OPTIONAL
>>        */
>>       void (* target_destroy)(struct scsi_target *);
> 
> The above comment can be made shorter and spelling and grammar can be improved. How about the following: "This callback is called with the host lock held and hence must not sleep."?
> 

Looks better, I would update.

Thanks.

> Thanks,
> 
> Bart.
> 


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

end of thread, other threads:[~2023-10-18  2:24 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-16  2:08 [PATCH v2 0/2] cleanup patch Wenchao Hao
2023-10-16  2:08 ` [PATCH v2 1/2] scsi: core: cleanup scsi_dev_queue_ready() Wenchao Hao
2023-10-17 21:15   ` Bart Van Assche
2023-10-18  2:22     ` Wenchao Hao
2023-10-16  2:08 ` [PATCH v2 2/2] scsi: Add comment of target_destroy in scsi_host_template Wenchao Hao
2023-10-17 21:04   ` Bart Van Assche
2023-10-18  2:24     ` Wenchao Hao
2023-10-17 17:01 ` [PATCH v2 0/2] cleanup patch Wenchao Hao

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.