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

Dmitry Bogdanov
2022-07-07T12:58:02Z

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?
>
> 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);