- 23 Nov, 2022 29 commits
-
-
Caleb St. John authored
NAS-118977 / 22.12 / fix global list corruption
-
Gleb Chesnokov authored
The SCST device may receive several events almost simultaneously to update its designators. Each such event calls scst_cm_update_dev(), which frees all device designators in the global list and then submits a inquiry that fills a new designators into the scst_cm_desig_list list. This is racy because submiting the inquiry is asynchronous and can be finished in another thread. scst_cm_update_dev() 1 scst_cm_update_dev() 2 ---------------------- ---------------------- [1] mutex_lock(&scst_mutex) [2] scst_cm_send_init_inquiry(dev, lun, NULL) [3] mutex_unlock(&scst_mutex) [4] mutex_lock(&scst_mutex) [5] scst_cm_dev_free_designators(dev) [6] scst_cm_init_inq_finish() [7] scst_cm_send_init_inquiry(dev, lun, NULL) [8] mutex_unlock(&scst_mutex) As a result we may get the scst_cm_desig_list list, which contains SCST device designators from several inquiries. Hence serialize scst_cm_desig_list list updates.
-
Gleb Chesnokov authored
Introduce the helper function scst_cm_dev_free_designators(), which purpose is to free copy manager designators for scst dev. This patch doesn't change any functionality.
-
Gleb Chesnokov authored
This patch should fix the following bug: list_del corruption. next->prev should be ffff955cb1ea2540, but was ffff955c54a32440 ------------[ cut here ]------------ kernel BUG at lib/list_debug.c:54! invalid opcode: 0000 [#1] SMP PTI Workqueue: events vdev_inq_changed_fn [scst_vdisk] RIP: 0010:__list_del_entry_valid.cold+0x1d/0x47 Call Trace: scst_cm_dev_unregister+0x66/0xd0 [scst] scst_cm_update_dev+0x41/0xc0 [scst] process_one_work+0x1ee/0x390 worker_thread+0x53/0x3e0 kthread+0x124/0x150 ret_from_fork+0x1f/0x30 scst_cm_desig_list is a global list for all SCST devices. It must be protected with scst_cm_mutex because it can be modified by scst_cm_init_inq_finish() from another thread when scst_cm_update_dev() is called. Fixes: https://github.com/SCST-project/scst/issues/99
-
Gleb Chesnokov authored
Introduce the helper function scst_cm_get_free_lun(), which purpose is to return the next free copy manager LUN. This patch doesn't change any functionality.
-
Gleb Chesnokov authored
Support for scst_tgt_template detect() method was declared obsolete in 2015. Remove support for scst_tgt_template detect() method. See also commit 4ac6d7a2 ("[PATCH] scst: Drop detect() method").
-
Gleb Chesnokov authored
This reverts commit 1a15ee56. Commit 398d41e7 ("scst: Revert "Increase tgt_dev_cmd_count by one" (r8465)") reverted commit[1]. But there was no revert for commit[2], so add it. [1] Commit 5b0f9ef0 ("scst: Increase tgt_dev_cmd_count by one") [2] Commit 1a15ee56 ("scst: Fix __scst_init_cmd()")
-
Gleb Chesnokov authored
1. atomic_inc_return() avoids a race in between atomic_read() & atomic_inc(). 2. atomic_inc_return() is a few cycles faster than atomic_inc()/atomic_read() sequence.
-
Gleb Chesnokov authored
One of the sysfs values reported for supported_speeds was not valid (20Gb/s reported instead of 64Gb/s). Instead of driver internal speed mask definition, use speed mask defined in transport_fc for reporting host->supported_speeds. Link: https://lore.kernel.org/r/20220927115946.17559-1-njavali@marvell.com Cc: stable@vger.kernel.org Reviewed-by:
Himanshu Madhani <himanshu.madhani@oracle.com> Signed-off-by:
Manish Rangankar <mrangankar@marvell.com> Signed-off-by:
Nilesh Javali <njavali@marvell.com> Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com> [ commit 0b863257c17c upstream ]
-
Gleb Chesnokov authored
Commit b6faaaf796d7 ("scsi: qla2xxx: Serialize mailbox request") serialized mailbox requests from userspace using the 'optrom' mutex. However, in the case of DCBX TLV data, if the memory for it is already allocated, then the mailbox request ends up not being serialized because it is done without holding the 'optrom' mutex. Link: https://lore.kernel.org/r/20220926230245.790508-1-rafaelmendsr@gmail.com Fixes: b6faaaf796d7 ("scsi: qla2xxx: Serialize mailbox request") Reviewed-by:
Himanshu Madhani <himanshu.madhani@oracle.com> Signed-off-by:
Rafael Mendonca <rafaelmendsr@gmail.com> Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com> [ commit 3ddeabd1536a upstream ]
-
Gleb Chesnokov authored
qla2x00_get_fw_version_str() has been removed since commit abbd8870b9cb ("[SCSI] qla2xxx: Factor-out ISP specific functions to method-based call tables."). qla2x00_release_nvram_protection() has been removed since commit 459c537807bd ("[SCSI] qla2xxx: Add ISP24xx flash-manipulation routines."). qla82xx_rdmem() and qla82xx_wrmem() have been removed since commit 3711333dfbee ("[SCSI] qla2xxx: Updates for ISP82xx."). qla25xx_rd_req_reg(), qla24xx_rd_req_reg(), qla25xx_wrt_rsp_reg(), qla24xx_wrt_rsp_reg(), qla25xx_wrt_req_reg() and qla24xx_wrt_req_reg() have been removed since commit 08029990b25b ("[SCSI] qla2xxx: Refactor request/response-queue register handling."). qla2x00_async_login_done() has been removed since commit 726b85487067 ("qla2xxx: Add framework for async fabric discovery"). qlt_24xx_process_response_error() has been removed since commit c5419e2618b9 ("scsi: qla2xxx: Combine Active command arrays."). Remove the declarations for them from header file. Link: https://lore.kernel.org/r/20220913023722.547249-2-cuigaosheng1@huawei.com Signed-off-by:
Gaosheng Cui <cuigaosheng1@huawei.com> Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com> [ commit 1b80addaae09 upstream ]
-
Gleb Chesnokov authored
There is a spelling mistake in a MODULE_PARM_DESC description. Fix it. Link: https://lore.kernel.org/r/20220906140010.194273-1-colin.i.king@gmail.com Signed-off-by:
Colin Ian King <colin.i.king@gmail.com> Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com> [ commit efca52749564 upstream ]
-
Gleb Chesnokov authored
Link: https://lore.kernel.org/r/20220826102559.17474-8-njavali@marvell.com Reviewed-by:
Himanshu Madhani <himanshu.madhani@oracle.com> Signed-off-by:
Nilesh Javali <njavali@marvell.com> Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com> [ commit fed842d04dad upstream ]
-
Gleb Chesnokov authored
drivers/scsi/qla2xxx/qla_os.c:40:20: warning: symbol 'qla_trc_array' was not declared. Should it be static? drivers/scsi/qla2xxx/qla_os.c:345:5: warning: symbol 'ql2xdelay_before_pci_error_handling' was not declared. Should it be static? Define qla_trc_array and ql2xdelay_before_pci_error_handling as static to fix sparse warnings. Link: https://lore.kernel.org/r/20220826102559.17474-7-njavali@marvell.com Cc: stable@vger.kernel.org Reported-by:
kernel test robot <lkp@intel.com> Reviewed-by:
Himanshu Madhani <himanshu.madhani@oracle.com> Signed-off-by:
Nilesh Javali <njavali@marvell.com> Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com> [ commit 2c57d0defa22 upstream ]
-
Gleb Chesnokov authored
Commit 7c15fc8f0d93 ("qla2x00t-32gbit: Enhance driver tracing with separate tunable and more") introduced the use of the trace.h/trace_events.h API. Due to support for older kernel versions, limit the minimum kernel version to use this enhance driver tracing to v5.5. See also commit 288797871473 ("tracing: Adding new functions for kernel access to Ftrace instances") # v5.5.
-
Gleb Chesnokov authored
Older tracing of driver messages was to: - log only debug messages to kernel main trace buffer; and - log only if extended logging bits corresponding to this message is off This has been modified and extended as follows: - Tracing is now controlled via ql2xextended_error_logging_ktrace module parameter. Bit usages same as ql2xextended_error_logging. - Tracing uses "qla2xxx" trace instance, unless instance creation have issues. - Tracing is enabled (compile time tunable). - All driver messages, include debug and log messages are now traced in kernel trace buffer. Trace messages can be viewed by looking at the qla2xxx instance at: /sys/kernel/tracing/instances/qla2xxx/trace Trace tunable that takes the same bit mask as ql2xextended_error_logging is: ql2xextended_error_logging_ktrace (default=1) Link: https://lore.kernel.org/r/20220826102559.17474-6-njavali@marvell.com Suggested-by:
Daniel Wagner <dwagner@suse.de> Suggested-by:
Steven Rostedt <rostedt@goodmis.org> Tested-by:
Himanshu Madhani <himanshu.madhani@oracle.com> Reviewed-by:
Himanshu Madhani <himanshu.madhani@oracle.com> Reviewed-by:
Daniel Wagner <dwagner@suse.de> Signed-off-by:
Arun Easi <aeasi@marvell.com> Signed-off-by:
Nilesh Javali <njavali@marvell.com> Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com> [ commit 8bfc149ba24c upstream ]
-
Gleb Chesnokov authored
Add new API to obtain the NVMe Parameters region status from the Auxiliary Image Status bitmap. Link: https://lore.kernel.org/r/20220826102559.17474-5-njavali@marvell.com Reviewed-by:
Himanshu Madhani <himanshu.madhani@oracle.com> Signed-off-by:
Anil Gurumurthy <agurumurthy@marvell.com> Signed-off-by:
Nilesh Javali <njavali@marvell.com> Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com> [ commit d9ba85efc3fc upstream ]
-
Gleb Chesnokov authored
Define a few helpful macros for creating debugfs files. Link: https://lore.kernel.org/r/20220826102559.17474-4-njavali@marvell.com Reviewed-by:
Himanshu Madhani <himanshu.madhani@oracle.com> Signed-off-by:
Arun Easi <aeasi@marvell.com> Signed-off-by:
Nilesh Javali <njavali@marvell.com> Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com> [ commit 389f179b868e upstream ]
-
Gleb Chesnokov authored
On some platforms, the current logic of relying on finding new packet solely based on signature pattern can lead to driver reading stale packets. Though this is a bug in those platforms, reduce such exposures by limiting reading packets until the IN pointer. Link: https://lore.kernel.org/r/20220826102559.17474-3-njavali@marvell.com Cc: stable@vger.kernel.org Reviewed-by:
Himanshu Madhani <himanshu.madhani@oracle.com> Signed-off-by:
Arun Easi <aeasi@marvell.com> Signed-off-by:
Nilesh Javali <njavali@marvell.com> Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com> [ commit e4f8a29deb3b upstream ]
-
Gleb Chesnokov authored
Reverting this commit so that a fixed up patch, without adding new module parameters, can be submitted. Link: https://lore.kernel.org/stable/166039743723771@kroah.com/ This reverts commit b1f707146923335849fb70237eec27d4d1ae7d62. Link: https://lore.kernel.org/r/20220826102559.17474-2-njavali@marvell.com Cc: stable@vger.kernel.org Reviewed-by:
Himanshu Madhani <himanshu.madhani@oracle.com> Signed-off-by:
Arun Easi <aeasi@marvell.com> Signed-off-by:
Nilesh Javali <njavali@marvell.com> Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com> [ commit 6dc45a7322cb upstream ]
-
Gleb Chesnokov authored
This message is helpful to troubleshoot missing LUNs/SAN boot errors. It'd be nice to log it by default instead of only being enabled with debug. This user had an accidental/forgotten file modprobe.d/qla2xxx.conf w/ option qlini_mode=disabled from experiments with FC target mode, and their boot LUN didn't come up, as it skips SCSI scan, of course. However, their boot log didn't provide any clues to help understand that. The issue/message could be figured out w/ ql2xextended_error_logging, but it would have been simpler (or even deflected/addressed by user) if it had been there by default. And it also would help support/triage/deflection tooling. Expected change: scsi host15: qla2xxx +qla2xxx [0000:3b:00.0]-00fb:15: skipping scsi_scan_host() for non-initiator port qla2xxx [0000:3b:00.0]-00fb:15: QLogic QLE2692 - QLE2692 Dual Port 16Gb FC to PCIe Gen3 x8 Adapter. According to: qla2x00_probe_one() ... ret = scsi_add_host(...); ... ql_log(ql_log_info, ... "skipping scsi_scan_host() for non-initiator port\n"); ... ql_log(ql_log_info, ... "QLogic %s - %s.\n", ha->model_number, ha->model_desc); Link: https://lore.kernel.org/r/20220825120159.275051-1-mfo@canonical.com Tested-by:
Himanshu Madhani <himanshu.madhani@oracle.com> Reviewed-by:
Himanshu Madhani <himanshu.madhani@oracle.com> Signed-off-by:
Mauricio Faria de Oliveira <mfo@canonical.com> Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com> [ commit eee8bb4a2b58 upstream ]
-
Gleb Chesnokov authored
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. Link: https://lore.kernel.org/r/133c6723-90b6-5c8b-72b4-cc01eeb3a8c0@I-love.SAKURA.ne.jp Tested-by:
Himanshu Madhani <himanshu.madhani@oracle.com> Reviewed-by:
Himanshu Madhani <himanshu.madhani@oracle.com> Signed-off-by:
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com> [ commit 3cb0643a9aae upstream ]
-
Gleb Chesnokov authored
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 c4f135d64382 ("workqueue: Wrap flush_workqueue() using a macro"). We are on the way to remove all flush_scheduled_work() calls from the kernel. Link: https://lore.kernel.org/r/7f24469d-9e39-3398-d851-329b54c0b923@I-love.SAKURA.ne.jp Tested-by:
Himanshu Madhani <himanshu.madhani@oracle.com> Reviewed-by:
Himanshu Madhani <himanshu.madhani@oracle.com> Signed-off-by:
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com> [ commit a4345557527f upstream ]
-
Gleb Chesnokov authored
qlt_tmr_work() is no longer used since commit fb35265b12bb ("scsi: qla2xxx: Remove session creation redundant code"). Link: https://lore.kernel.org/r/a0e53c70-b801-adf5-0549-b2b1e421a819@I-love.SAKURA.ne.jp Tested-by:
Himanshu Madhani <himanshu.madhani@oracle.com> Reviewed-by:
Himanshu Madhani <himanshu.madhani@oracle.com> Signed-off-by:
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com> [ commit 1b2b8d45ccd6 upstream ]
-
Gleb Chesnokov authored
"struct qla_tgt"->del_sess_list is no longer used since commit 726b85487067 ("qla2xxx: Add framework for async fabric discovery"). Link: https://lore.kernel.org/r/0c335e86-5624-b599-5137-f1377419fb0c@I-love.SAKURA.ne.jp Tested-by:
Himanshu Madhani <himanshu.madhani@oracle.com> Reviewed-by:
Himanshu Madhani <himanshu.madhani@oracle.com> Signed-off-by:
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com> [ commit e6852b41b560 upstream ]
-
Gleb Chesnokov authored
Any attempt to flush kernel-global WQs has possibility of deadlock so we should simply stop using them, instead introduce scst_event_wq. See also commit c4f135d64382 ("workqueue: Wrap flush_workqueue() using a macro") # v5.19.
-
Gleb Chesnokov authored
alloc_workqueue() replaces deprecated create_workqueue().
-
Gleb Chesnokov authored
1. Add missing TRACE_ENTRY() to scst_lib_init(). 2. Add error handling when scst_release_acg_wq creation fails. 3. Remove unneeded flush_workqueue().
-
Gleb Chesnokov authored
All Linux kernel versions supported by SCST already implement alloc_ordered_workqueue(), so remove its backport.
-
- 28 Oct, 2022 1 commit
-
-
Caleb St. John authored
NAS-118783 / 22.12 / Rebase SCST against upstream
-
- 27 Oct, 2022 6 commits
-
-
Gleb Chesnokov authored
Support for the following IB changes in the Linux kernel v6.1: - 91a3f14ec953 ("IB/cm: Remove the service_mask parameter from ib_cm_listen()")
-
Gleb Chesnokov authored
Remove cm_listen conftest because iscsi-scst doesn't use ib_cm_listen API.
-
Gleb Chesnokov authored
DID_TARGET_FAILURE is internal to the SCSI layer. Drivers must not use it because: 1. It's not propagated upwards, so SG IO/passthrough users will not see an error and think a command was successful. 2. There is no handling for it in scsi_decide_disposition() so it results in entering SCSI error handling. This has qla2xxx use DID_NO_CONNECT because it looks like we hit this error when we can't find a port. It will give us the same hard error behavior and it seems to match the error where we can't find the endpoint. Link: https://lore.kernel.org/r/20220812010027.8251-7-michael.christie@oracle.com Reviewed-by:
Himanshu Madhani <himanshu.madhani@oracle.com> Signed-off-by:
Mike Christie <michael.christie@oracle.com> Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com> [ commit a965d35c8741 upstream ]
-
Gleb Chesnokov authored
Support for the following block layer changes in the Linux kernel v6.1: - a4e1d0b76e7b ("block: Change the return type of blk_mq_map_queues() into void")
-
Gleb Chesnokov authored
Support for the following block layer changes in the Linux kernel v6.1: - de671d6116b5 ("block: change request end_io handler to pass back a return value")
-
Gleb Chesnokov authored
Support for the following vfs file changes in the Linux kernel v6.1: - 25885a35a720 ("Change calling conventions for filldir_t") Support for the following dlm changes in the Linux kernel v6.1: - 12cda13cfd53 ("fs: dlm: remove DLM_LSFL_FS from uapi")
-
- 25 Oct, 2022 1 commit
-
-
Gleb Chesnokov authored
-
- 23 Oct, 2022 3 commits
-
-
Gleb Chesnokov authored
Sending a REQUEST_SENSE with a buffer size 0 to the LUN that does not exist causes the following kernel panic: RIP: 0010:sg_init_table+0x1e/0x30 Call Trace: scst_alloc_sg+0xc3/0x270 [scst] scst_set_cmd_error+0x803/0xa40 [scst] __scst_init_cmd+0x5c3/0xb80 [scst] scst_cmd_init_done+0x142/0xae0 [scst] cmnd_rx_start+0x7f5/0x13d0 [iscsi_scst] isert_pdu_rx+0x54/0x140 [isert_scst] isert_recv_completion_handler+0x498/0x580 [isert_scst] isert_poll_cq+0x396/0x800 [isert_scst] isert_cq_comp_work_cb+0x4a/0x120 [isert_scst] process_one_work+0x1d1/0x410 worker_thread+0x2b/0x3d0 kthread+0x11a/0x130 ret_from_fork+0x1f/0x40 Hence set bufflen to 18 if a buffer size 0 was passed to avoid the crash. Reported-by:
Lev Vainblat <lev@zadarastorage.com>
-
Gleb Chesnokov authored
Sending an INQUIRY with a buffer size 0 to the LUN that does not exist causes the following kernel panic: RIP: 0010:sg_init_table+0x1e/0x30 Call Trace: scst_alloc_sg+0xc3/0x270 [scst] scst_set_cmd_error+0x8c9/0xa80 [scst] __scst_init_cmd+0x5c3/0xb80 [scst] scst_cmd_init_done+0x142/0xae0 [scst] cmnd_rx_start+0x7f5/0x13d0 [iscsi_scst] isert_pdu_rx+0x54/0x140 [isert_scst] isert_recv_completion_handler+0x498/0x580 [isert_scst] isert_poll_cq+0x396/0x800 [isert_scst] isert_cq_comp_work_cb+0x4a/0x120 [isert_scst] process_one_work+0x1d1/0x410 worker_thread+0x2b/0x3d0 kthread+0x11a/0x130 ret_from_fork+0x1f/0x40 Hence set bufflen to 36 if a buffer size 0 was passed to avoid the crash. Reported-by:
Lev Vainblat <lev@zadarastorage.com>
-
Gleb Chesnokov authored
This patch doesn't change any functionality.
-