* [PATCH v4 1/4] scsi: qla2xxx: Remove unused del_sess_list field
@ 2022-07-02 22:02 Tetsuo Handa
2022-07-02 22:03 ` [PATCH v4 2/4] scsi: qla2xxx: Remove unused qlt_tmr_work() Tetsuo Handa
2022-07-07 21:35 ` [PATCH v4 1/4] scsi: qla2xxx: Remove unused del_sess_list field Martin K. Petersen
0 siblings, 2 replies; 7+ messages in thread
From: Tetsuo Handa @ 2022-07-02 22:02 UTC (permalink / raw)
To: Nilesh Javali, GR-QLogic-Storage-Upstream, James E.J. Bottomley,
Martin K. Petersen
Cc: linux-scsi
"struct qla_tgt"->del_sess_list is no longer used since commit
726b85487067d7f5 ("qla2xxx: Add framework for async fabric discovery").
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
---
Changes in v4:
Repost as a new thread.
drivers/scsi/qla2xxx/qla_target.c | 1 -
drivers/scsi/qla2xxx/qla_target.h | 3 ---
2 files changed, 4 deletions(-)
diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c
index 2b2f68288375..d9e0e7ffe130 100644
--- a/drivers/scsi/qla2xxx/qla_target.c
+++ b/drivers/scsi/qla2xxx/qla_target.c
@@ -6512,7 +6512,6 @@ int qlt_add_target(struct qla_hw_data *ha, struct scsi_qla_host *base_vha)
tgt->ha = ha;
tgt->vha = base_vha;
init_waitqueue_head(&tgt->waitQ);
- INIT_LIST_HEAD(&tgt->del_sess_list);
spin_lock_init(&tgt->sess_work_lock);
INIT_WORK(&tgt->sess_work, qlt_sess_work_fn);
INIT_LIST_HEAD(&tgt->sess_works_list);
diff --git a/drivers/scsi/qla2xxx/qla_target.h b/drivers/scsi/qla2xxx/qla_target.h
index de3942b8efc4..e899e13696e9 100644
--- a/drivers/scsi/qla2xxx/qla_target.h
+++ b/drivers/scsi/qla2xxx/qla_target.h
@@ -813,9 +813,6 @@ struct qla_tgt {
/* Count of sessions refering qla_tgt. Protected by hardware_lock. */
int sess_count;
- /* Protected by hardware_lock */
- struct list_head del_sess_list;
-
spinlock_t sess_work_lock;
struct list_head sess_works_list;
struct work_struct sess_work;
--
2.18.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 2/4] scsi: qla2xxx: Remove unused qlt_tmr_work()
2022-07-02 22:02 [PATCH v4 1/4] scsi: qla2xxx: Remove unused del_sess_list field Tetsuo Handa
@ 2022-07-02 22:03 ` Tetsuo Handa
2022-07-02 22:04 ` [PATCH v4 3/4] scsi: qla2xxx: always wait for qlt_sess_work_fn() from qlt_stop_phase1() Tetsuo Handa
2022-07-07 21:35 ` [PATCH v4 1/4] scsi: qla2xxx: Remove unused del_sess_list field Martin K. Petersen
1 sibling, 1 reply; 7+ messages in thread
From: Tetsuo Handa @ 2022-07-02 22:03 UTC (permalink / raw)
To: Nilesh Javali, GR-QLogic-Storage-Upstream, James E.J. Bottomley,
Martin K. Petersen
Cc: linux-scsi
qlt_tmr_work() is no longer used since commit fb35265b12bb9ba4 ("scsi:
qla2xxx: Remove session creation redundant code").
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
---
Changes in v4:
Repost as a new thread.
drivers/scsi/qla2xxx/qla_target.c | 66 -------------------------------
drivers/scsi/qla2xxx/qla_target.h | 1 -
2 files changed, 67 deletions(-)
diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c
index d9e0e7ffe130..b170ebbd05b7 100644
--- a/drivers/scsi/qla2xxx/qla_target.c
+++ b/drivers/scsi/qla2xxx/qla_target.c
@@ -6334,69 +6334,6 @@ static void qlt_abort_work(struct qla_tgt *tgt,
spin_unlock_irqrestore(&ha->hardware_lock, flags);
}
-static void qlt_tmr_work(struct qla_tgt *tgt,
- struct qla_tgt_sess_work_param *prm)
-{
- struct atio_from_isp *a = &prm->tm_iocb2;
- struct scsi_qla_host *vha = tgt->vha;
- struct qla_hw_data *ha = vha->hw;
- struct fc_port *sess;
- unsigned long flags;
- be_id_t s_id;
- int rc;
- u64 unpacked_lun;
- int fn;
- void *iocb;
-
- spin_lock_irqsave(&ha->tgt.sess_lock, flags);
-
- if (tgt->tgt_stop)
- goto out_term2;
-
- s_id = prm->tm_iocb2.u.isp24.fcp_hdr.s_id;
- sess = ha->tgt.tgt_ops->find_sess_by_s_id(vha, s_id);
- if (!sess) {
- spin_unlock_irqrestore(&ha->tgt.sess_lock, flags);
-
- sess = qlt_make_local_sess(vha, s_id);
- /* sess has got an extra creation ref */
-
- spin_lock_irqsave(&ha->tgt.sess_lock, flags);
- if (!sess)
- goto out_term2;
- } else {
- if (sess->deleted) {
- goto out_term2;
- }
-
- if (!kref_get_unless_zero(&sess->sess_kref)) {
- ql_dbg(ql_dbg_tgt_tmr, vha, 0xf020,
- "%s: kref_get fail %8phC\n",
- __func__, sess->port_name);
- goto out_term2;
- }
- }
-
- iocb = a;
- fn = a->u.isp24.fcp_cmnd.task_mgmt_flags;
- unpacked_lun =
- scsilun_to_int((struct scsi_lun *)&a->u.isp24.fcp_cmnd.lun);
-
- rc = qlt_issue_task_mgmt(sess, unpacked_lun, fn, iocb, 0);
- spin_unlock_irqrestore(&ha->tgt.sess_lock, flags);
-
- ha->tgt.tgt_ops->put_sess(sess);
-
- if (rc != 0)
- goto out_term;
- return;
-
-out_term2:
- spin_unlock_irqrestore(&ha->tgt.sess_lock, flags);
-out_term:
- qlt_send_term_exchange(ha->base_qpair, NULL, &prm->tm_iocb2, 1, 0);
-}
-
static void qlt_sess_work_fn(struct work_struct *work)
{
struct qla_tgt *tgt = container_of(work, struct qla_tgt, sess_work);
@@ -6423,9 +6360,6 @@ static void qlt_sess_work_fn(struct work_struct *work)
case QLA_TGT_SESS_WORK_ABORT:
qlt_abort_work(tgt, prm);
break;
- case QLA_TGT_SESS_WORK_TM:
- qlt_tmr_work(tgt, prm);
- break;
default:
BUG_ON(1);
break;
diff --git a/drivers/scsi/qla2xxx/qla_target.h b/drivers/scsi/qla2xxx/qla_target.h
index e899e13696e9..080c46eb8245 100644
--- a/drivers/scsi/qla2xxx/qla_target.h
+++ b/drivers/scsi/qla2xxx/qla_target.h
@@ -942,7 +942,6 @@ struct qla_tgt_sess_work_param {
struct list_head sess_works_list_entry;
#define QLA_TGT_SESS_WORK_ABORT 1
-#define QLA_TGT_SESS_WORK_TM 2
int type;
union {
--
2.18.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 3/4] scsi: qla2xxx: always wait for qlt_sess_work_fn() from qlt_stop_phase1()
2022-07-02 22:03 ` [PATCH v4 2/4] scsi: qla2xxx: Remove unused qlt_tmr_work() Tetsuo Handa
@ 2022-07-02 22:04 ` Tetsuo Handa
2022-07-02 22:05 ` [PATCH v4 4/4] scsi: qla2xxx: avoid flush_scheduled_work() usage Tetsuo Handa
0 siblings, 1 reply; 7+ messages in thread
From: Tetsuo Handa @ 2022-07-02 22:04 UTC (permalink / raw)
To: Nilesh Javali, GR-QLogic-Storage-Upstream, James E.J. Bottomley,
Martin K. Petersen
Cc: linux-scsi
Currently qlt_stop_phase1() may fail to call flush_scheduled_work(), for
list_empty() may return true as soon as qlt_sess_work_fn() called
list_del(). In order to close this race window, check list_empty() after
calling flush_scheduled_work().
If this patch causes problems, please check commit c4f135d643823a86
("workqueue: Wrap flush_workqueue() using a macro"). We are on the way to
remove all flush_scheduled_work() calls from the kernel.
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
---
This patch is only compile tested.
Changes in v4:
Repost as a new thread.
drivers/scsi/qla2xxx/qla_target.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c
index b170ebbd05b7..9013c162d4aa 100644
--- a/drivers/scsi/qla2xxx/qla_target.c
+++ b/drivers/scsi/qla2xxx/qla_target.c
@@ -1557,11 +1557,11 @@ int qlt_stop_phase1(struct qla_tgt *tgt)
ql_dbg(ql_dbg_tgt_mgt, vha, 0xf009,
"Waiting for sess works (tgt %p)", tgt);
spin_lock_irqsave(&tgt->sess_work_lock, flags);
- while (!list_empty(&tgt->sess_works_list)) {
+ do {
spin_unlock_irqrestore(&tgt->sess_work_lock, flags);
flush_scheduled_work();
spin_lock_irqsave(&tgt->sess_work_lock, flags);
- }
+ } while (!list_empty(&tgt->sess_works_list));
spin_unlock_irqrestore(&tgt->sess_work_lock, flags);
ql_dbg(ql_dbg_tgt_mgt, vha, 0xf00a,
--
2.18.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 4/4] scsi: qla2xxx: avoid flush_scheduled_work() usage
2022-07-02 22:04 ` [PATCH v4 3/4] scsi: qla2xxx: always wait for qlt_sess_work_fn() from qlt_stop_phase1() Tetsuo Handa
@ 2022-07-02 22:05 ` Tetsuo Handa
0 siblings, 0 replies; 7+ messages in thread
From: Tetsuo Handa @ 2022-07-02 22:05 UTC (permalink / raw)
To: Nilesh Javali, GR-QLogic-Storage-Upstream, James E.J. Bottomley,
Martin K. Petersen
Cc: linux-scsi
Although qla2xxx driver is calling schedule_{,delayed}_work() from 10
locations, I assume that flush_scheduled_work() from qlt_stop_phase1()
needs to flush only works scheduled by qlt_sched_sess_work(), for this
loop continues while "struct qla_tgt"->sess_works_list is not empty.
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
---
This patch is only compile tested.
Changes in v4:
Repost as a new thread.
Changes in v3:
Use flush_work().
Changes in v2:
Use per "struct qla_tgt" workqueue.
drivers/scsi/qla2xxx/qla_target.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c
index 9013c162d4aa..b0cb463cf032 100644
--- a/drivers/scsi/qla2xxx/qla_target.c
+++ b/drivers/scsi/qla2xxx/qla_target.c
@@ -1559,7 +1559,7 @@ int qlt_stop_phase1(struct qla_tgt *tgt)
spin_lock_irqsave(&tgt->sess_work_lock, flags);
do {
spin_unlock_irqrestore(&tgt->sess_work_lock, flags);
- flush_scheduled_work();
+ flush_work(&tgt->sess_work);
spin_lock_irqsave(&tgt->sess_work_lock, flags);
} while (!list_empty(&tgt->sess_works_list));
spin_unlock_irqrestore(&tgt->sess_work_lock, flags);
--
2.18.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v4 1/4] scsi: qla2xxx: Remove unused del_sess_list field
2022-07-02 22:02 [PATCH v4 1/4] scsi: qla2xxx: Remove unused del_sess_list field Tetsuo Handa
2022-07-02 22:03 ` [PATCH v4 2/4] scsi: qla2xxx: Remove unused qlt_tmr_work() Tetsuo Handa
@ 2022-07-07 21:35 ` Martin K. Petersen
2022-08-05 10:04 ` Tetsuo Handa
1 sibling, 1 reply; 7+ messages in thread
From: Martin K. Petersen @ 2022-07-07 21:35 UTC (permalink / raw)
To: Nilesh Javali
Cc: Tetsuo Handa, GR-QLogic-Storage-Upstream, James E.J. Bottomley,
Martin K. Petersen, linux-scsi
Nilesh,
> "struct qla_tgt"->del_sess_list is no longer used since commit
> 726b85487067d7f5 ("qla2xxx: Add framework for async fabric discovery").
Please review and test this series. Thank you!
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 1/4] scsi: qla2xxx: Remove unused del_sess_list field
2022-07-07 21:35 ` [PATCH v4 1/4] scsi: qla2xxx: Remove unused del_sess_list field Martin K. Petersen
@ 2022-08-05 10:04 ` Tetsuo Handa
2022-08-19 20:34 ` Himanshu Madhani
0 siblings, 1 reply; 7+ messages in thread
From: Tetsuo Handa @ 2022-08-05 10:04 UTC (permalink / raw)
To: Nilesh Javali
Cc: GR-QLogic-Storage-Upstream, James E.J. Bottomley, linux-scsi,
Martin K. Petersen
Nilesh, I still can't find this series in linux-next.git.
What is the status of this series?
On 2022/07/08 6:35, Martin K. Petersen wrote:
>
> Nilesh,
>
>> "struct qla_tgt"->del_sess_list is no longer used since commit
>> 726b85487067d7f5 ("qla2xxx: Add framework for async fabric discovery").
>
> Please review and test this series. Thank you!
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 1/4] scsi: qla2xxx: Remove unused del_sess_list field
2022-08-05 10:04 ` Tetsuo Handa
@ 2022-08-19 20:34 ` Himanshu Madhani
0 siblings, 0 replies; 7+ messages in thread
From: Himanshu Madhani @ 2022-08-19 20:34 UTC (permalink / raw)
To: Tetsuo Handa
Cc: Nilesh Javali, GR-QLogic-Storage-Upstream, James E.J. Bottomley,
linux-scsi, Martin Petersen
Hi Tetsuo,
> On Aug 5, 2022, at 3:04 AM, Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> wrote:
>
> Nilesh, I still can't find this series in linux-next.git.
>
> What is the status of this series?
>
> On 2022/07/08 6:35, Martin K. Petersen wrote:
>>
>> Nilesh,
>>
>>> "struct qla_tgt"->del_sess_list is no longer used since commit
>>> 726b85487067d7f5 ("qla2xxx: Add framework for async fabric discovery").
>>
>> Please review and test this series. Thank you!
>>
>
I have reviewed and tested this series in my limited Target setup with QLE adapters.
Would you please resend this series. You can add
Tested-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
--
Himanshu Madhani Oracle Linux Engineering
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-08-19 20:35 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-02 22:02 [PATCH v4 1/4] scsi: qla2xxx: Remove unused del_sess_list field Tetsuo Handa
2022-07-02 22:03 ` [PATCH v4 2/4] scsi: qla2xxx: Remove unused qlt_tmr_work() Tetsuo Handa
2022-07-02 22:04 ` [PATCH v4 3/4] scsi: qla2xxx: always wait for qlt_sess_work_fn() from qlt_stop_phase1() Tetsuo Handa
2022-07-02 22:05 ` [PATCH v4 4/4] scsi: qla2xxx: avoid flush_scheduled_work() usage Tetsuo Handa
2022-07-07 21:35 ` [PATCH v4 1/4] scsi: qla2xxx: Remove unused del_sess_list field Martin K. Petersen
2022-08-05 10:04 ` Tetsuo Handa
2022-08-19 20:34 ` Himanshu Madhani
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.