mirror of https://lore.kernel.org/lkml/
 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	[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	[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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®