Re: [PATCH 04/36] target: Does tmr notify on aborted command

Thinh Nguyen
2022-07-08T23:11:49Z

On 7/7/2022, Dmitry Bogdanov wrote:
> Hi Thinh,
>
> On Wed, Jul 06, 2022 at 04:34:49PM -0700, Thinh Nguyen wrote:
>> If the tmr_notify is not implemented, simply execute a generic command
>> completion to notify the command abort.
> Why? What are you trying to fix?

If tmr_notify() is not implemented (which most don't), then the user
won't get notified of the command completion.

I was trying to directly notify the user via target_complete_cmd(). It
may not be the right way to handle this, any advise?

Thanks,
Thinh

>> Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
>> ---
>> drivers/target/target_core_tmr.c | 4 ++++
>> 1 file changed, 4 insertions(+)
>>
>> diff --git a/drivers/target/target_core_tmr.c b/drivers/target/target_core_tmr.c
>> index 7a7e24069ba7..2af80d0998bf 100644
>> --- a/drivers/target/target_core_tmr.c
>> +++ b/drivers/target/target_core_tmr.c
>> @@ -14,6 +14,7 @@
>> #include <linux/spinlock.h>
>> #include <linux/list.h>
>> #include <linux/export.h>
>> +#include <scsi/scsi_proto.h>
>>
>> #include <target/target_core_base.h>
>> #include <target/target_core_backend.h>
>> @@ -150,6 +151,9 @@ void core_tmr_abort_task(
>> if (dev->transport->tmr_notify)
>> dev->transport->tmr_notify(dev, TMR_ABORT_TASK,
>> &aborted_list);
>> + else
>> + target_complete_cmd(se_cmd,
>> + SAM_STAT_TASK_ABORTED);
> That is wrong and breaks a command lifecycle and command kref counting.
> target_complete_cmd is used to be called by a backend driver.
>>
>> list_del_init(&se_cmd->state_list);
>> target_put_cmd_and_wait(se_cmd);