Commit Graph
8715 Commits
Author SHA1 Message Date
Bart Van Assche 393c65fbf1 scst: Port to CentOS 8.4
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9443 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-06-21 03:23:02 +00:00
Bart Van Assche caf127e37e debian/scst.dkms: Switch to the qla2x00t-32gbit driver
Fixes: 1cfa1e7f87 ("Makefile: switch to qla-32gbit by default")



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9442 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-06-21 03:05:47 +00:00
Bart Van Assche ba27441096 debian/rules: Fail the build if $(QLA_INI_DIR) has not been set
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9441 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-06-21 03:04:27 +00:00
Bart Van Assche 013a7f7276 Merge branch 'svn-trunk' 2021-06-17 21:54:39 -07:00
Bart Van Assche 05afc999f1 scstadmin: Fix a bug in the code for forcibly applying a configuration
Pass the -force option from ... to removeGroup().

Signed-off-by: YuFan Chen <wiz.chen@gmail.com>
[ bvanassche: added commit message ]


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9440 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-06-18 04:45:40 +00:00
Bart Van Assche 03c7ab6072 Merge branch 'svn-trunk' 2021-05-30 20:01:21 -07:00
Bart Van Assche b3aabb0b8e debian/rules: Use $(KVER) instead of $(uname -r)
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9439 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-31 03:01:15 +00:00
Bart Van Assche 3b388a044c Merge branch 'svn-trunk' 2021-05-30 20:00:12 -07:00
Bart Van Assche 7aade0a109 Makefile: Make the qla2x00t-32gbit driver the default QLogic FC driver
Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9438 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-31 02:59:52 +00:00
Bart Van Assche 27a6c65bf3 Temporarily revert r9436
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9437 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-31 02:58:28 +00:00
Bart Van Assche 8f792b0abd debian/rules: Use $(KVER) instead of $(uname -r)
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9436 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-31 02:53:12 +00:00
Bart Van Assche b7ed3f8e77 Makefile: switch to qla-32gbit by default
Bart Van Assche noted that currently there are more people using the
32gbit driver than there are people using the older one. So it might
make sense to finally make switch and default to the 32gbit driver.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9435 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-31 02:52:04 +00:00
Bart Van Assche 6787c12e95 Makefile: add ability to enable qla-32gbit target
Although qla-32gbit is mentioned in the README, but there wasn't really a
way to enable it sans editing the code.
    
This commit adds an ability to enable the driver by passing
`QLA_32GBIT=y` variable at build time.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9434 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-31 02:51:45 +00:00
Bart Van Assche d96320a129 Merge branch 'svn-trunk' 2021-05-30 19:50:13 -07:00
Bart Van Assche 3d957ec708 Temporarily revert r9432
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9433 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-31 02:50:01 +00:00
Bart Van AsscheandGitHub 9be461cc2d Merge pull request #38 from Hi-Angel/opt-in-32gbit
Makefile: add ability to enable qla-32gbit target
2021-05-30 19:48:56 -07:00
Bart Van Assche 50f78c67ea debian/rules: Use $(KVER) instead of $(uname -r)
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9432 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-31 02:45:26 +00:00
Konstantin Kharlamov 1cfa1e7f87 Makefile: switch to qla-32gbit by default
Bart Van Assche noted that currently there are more people using the
32gbit driver than there are people using the older one. So it might
make sense to finally make switch and default to the 32gbit driver.
2021-05-29 13:16:10 +03:00
Konstantin Kharlamov bcf540cfe4 Makefile: add ability to enable qla-32gbit target
Although qla-32gbit is mentioned in the README, but there wasn't really a
way to enable it sans editing the code.

This commit adds an ability to enable the driver by passing
`QLA_32GBIT=y` variable at build time.
2021-05-29 13:16:09 +03:00
Bart Van Assche c406634bb8 Merge branch 'svn-trunk' 2021-05-28 18:17:57 -07:00
Bart Van Assche 7381de4fb9 Add a github action for building SCST upon push and upon a pull request
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9431 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-29 01:17:50 +00:00
Bart Van Assche af9504a0f5 iscsi-scst/usr/Makefile: Use -Werror when testing a compiler option
This is necessary for clang.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9430 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-29 01:16:42 +00:00
Bart Van Assche 237910043b debian/rules: Only build fcst if libfc has been enabled in the kernel
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9429 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-29 01:15:57 +00:00
Bart Van Assche 3739cf8e2b Merge branch 'svn-trunk' 2021-05-23 13:41:45 -07:00
Bart Van Assche aa3f402314 Makefile: Conditionally regenerate the source code archives
Only regenerate the source code archives if one of the included source files
has been modified.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9428 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-23 20:41:30 +00:00
Bart Van Assche 2aef4c4730 Merge branch 'svn-trunk' 2021-05-19 21:04:18 -07:00
Bart Van Assche bbbeb7ebf4 debian: Follow-up for the previous 5 commits
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9427 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-20 04:04:12 +00:00
Bart Van Assche 444e8635db Merge branch 'svn-trunk' 2021-05-19 21:02:47 -07:00
Bart Van Assche bbc5c25445 debian: make sure CC variable is passed through to the build
See also https://github.com/bvanassche/scst/pull/37.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9426 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-20 04:02:37 +00:00
Bart Van Assche 2de5765c9c debian: make sure depmod uses the correct version
By default it uses the currently running kernel, which is not necessary
the kernel the package was built for. Fix this by generating the path on
package creation stage.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9425 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-20 04:02:06 +00:00
Bart Van Assche fc2135c345 debian: fix wrong kernel version used in preinst
This script is used in the non-dkms scst package. The purpose of package
is to determine kernel location at compile-time, as opposed to the
package installation time. However, calling `uname -r` in package
installation time violates that idea because it would get some random
kernel that was running on the machine. This problem is particularly
seen in containers, because in those `uname` shows the kernel running on
the host, rather than the one running inside container.

Fix this by determining the kernel location in `preinst` script at
compile time as well.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9424 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-20 04:01:46 +00:00
Bart Van Assche 143ea7b546 debian: make sure KVER and KDIR are visible to dpkg build
The debuild clears up the environment, thus the essential SCST variables
KVER and KDIR are cleared out. This patch fixes it.

Note: technically, `debild` supports `--preserve-env` option. But in
reality making use of it makes no difference, variables still do not
appear. Work around it by using DEB_foo_SET from `man dpkg-buildflags`


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9423 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-20 04:01:24 +00:00
Bart Van Assche ffad8bd07a Makefile: remove an always false condition
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9422 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-20 04:01:00 +00:00
Bart Van AsscheandGitHub 6dc08499d0 Merge pull request #37 from Hi-Angel/dpkg-fixes
Debian package creation fixes
2021-05-19 20:59:34 -07:00
Bart Van Assche 4b62eb79b0 Merge branch 'svn-trunk' 2021-05-19 07:12:56 -07:00
Bart Van Assche ccdb440ae4 qla2x00t: Always check the qla2x00_wait_for_hba_online() return value
This patch suppresses the following Coverity complaint:

CID 364334 (#1 of 1): Unchecked return value (CHECKED_RETURN)
6. check_return: Calling qla2x00_wait_for_hba_online without checking return
   value (as is done elsewhere 8 out of 10 times).


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9421 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-19 14:12:39 +00:00
Bart Van Assche f94a74fc14 nightly build: Update kernel versions
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9420 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-19 14:10:52 +00:00
Bart Van Assche 2be2a4701a scripts/specialize-patch: Evaluate 0 && defined(...) as 0
Fixes: 7b375842e9 ("qla2x00t-32gbit: Fix two recently introduced build errors")



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9419 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-19 14:10:26 +00:00
Konstantin Kharlamov 2fa40456f7 debian: make sure CC variable is passed through to the build 2021-05-19 16:09:34 +03:00
Konstantin Kharlamov 93d07f966e debian: make sure depmod uses the correct version
By default it uses the currently running kernel, which is not necessary
the kernel the package was built for. Fix this by generating the path on
package creation stage.
2021-05-19 16:09:34 +03:00
Konstantin Kharlamov bd2cfd4bb2 debian: fix wrong kernel version used in preinst
This script is used in the non-dkms scst package. The purpose of package
is to determine kernel location at compile-time, as opposed to the
package installation time. However, calling `uname -r` in package
installation time violates that idea because it would get some random
kernel that was running on the machine. This problem is particularly
seen in containers, because in those `uname` shows the kernel running on
the host, rather than the one running inside container.

Fix this by determining the kernel location in `preinst` script at
compile time as well.
2021-05-19 16:09:34 +03:00
Konstantin Kharlamov 65ef5e0627 debian: make sure KVER and KDIR are visible to dpkg build
The debuild clears up the environment, thus the essential SCST variables
KVER and KDIR are cleared out. This patch fixes it.

Note: technically, `debild` supports `--preserve-env` option. But in
reality making use of it makes no difference, variables still do not
appear. Work around it by using DEB_foo_SET from `man dpkg-buildflags`
2021-05-19 16:09:28 +03:00
Konstantin Kharlamov e097845cb8 Makefile: remove an always false condition
The `if false` condition will never be true, so let's just remove that
paragraph.
2021-05-19 10:36:23 +03:00
Bart Van Assche 20499de30d Merge branch 'svn-trunk' 2021-05-18 08:16:18 -07:00
Bart Van Assche 21e987fa8e qla2x00t-32gbit: Compilation fix for kernel versions before v5.12
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9418 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-18 05:06:30 +00:00
Bart Van Assche ef118f8a79 Merge branch 'svn-trunk' 2021-05-15 16:00:14 -07:00
Bart Van Assche 9a9fdf179f qla2x00t-32gbit: Prevent PRLI in target mode
In a case when the initiator in P2P mode by some circumstances does not
send PRLI, the target, in a case when the target port's WWPN is less than
initiator's, changes the discovery state in DSC_GNL. When gnl completes it
sends PRLI to the initiator.

Usually the initiator in P2P mode always sends PRLI. We caught this issue
on Linux stable v5.4.6 https://www.spinics.net/lists/stable/msg458515.html.

Fix this particular corner case in the behaviour of the P2P mod target
login state machine.

Link: https://lore.kernel.org/r/20210422153414.4022-1-a.kovaleva@yadro.com
Fixes: a9ed06d4e640 ("scsi: qla2xxx: Allow PLOGI in target mode")
Reviewed-by: Roman Bolshakov <r.bolshakov@yadro.com>
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Anastasia Kovaleva <a.kovaleva@yadro.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
[ commit fcb16d9a8ecf1e9bfced0fc654ea4e2caa7517f4 upstream ]



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9417 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-15 22:59:36 +00:00
Bart Van Assche 6ddd2170c9 qla2x00t-32gbit: Add marginal path handling support
Add support for eh_should_retry_cmd callback in qla2xxx host template.

Link: https://lore.kernel.org/r/20210427050914.7270-1-njavali@marvell.com
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Bikash Hazarika <bhazarika@marvell.com>
Signed-off-by: Nilesh Javali <njavali@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
[ commit 000e68faefe6240ea2e4c98b606c594b20974fb7 upstream ]



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9416 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-15 22:58:36 +00:00
Bart Van Assche 143ea24dc7 qla2x00t-32gbit: Reserve extra IRQ vectors
Commit a6dcfe08487e ("scsi: qla2xxx: Limit interrupt vectors to number of
CPUs") lowers the number of allocated MSI-X vectors to the number of CPUs.

That breaks vector allocation assumptions in qla83xx_iospace_config(),
qla24xx_enable_msix() and qla2x00_iospace_config(). Either of the functions
computes maximum number of qpairs as:

  ha->max_qpairs = ha->msix_count - 1 (MB interrupt) - 1 (default
                   response queue) - 1 (ATIO, in dual or pure target mode)

max_qpairs is set to zero in case of two CPUs and initiator mode. The
number is then used to allocate ha->queue_pair_map inside
qla2x00_alloc_queues(). No allocation happens and ha->queue_pair_map is
left NULL but the driver thinks there are queue pairs available.

qla2xxx_queuecommand() tries to find a qpair in the map and crashes:

  if (ha->mqenable) {
          uint32_t tag;
          uint16_t hwq;
          struct qla_qpair *qpair = NULL;

          tag = blk_mq_unique_tag(cmd->request);
          hwq = blk_mq_unique_tag_to_hwq(tag);
          qpair = ha->queue_pair_map[hwq]; # <- HERE

          if (qpair)
                  return qla2xxx_mqueuecommand(host, cmd, qpair);
  }

  BUG: kernel NULL pointer dereference, address: 0000000000000000
  #PF: supervisor read access in kernel mode
  #PF: error_code(0x0000) - not-present page
  PGD 0 P4D 0
  Oops: 0000 [#1] SMP PTI
  CPU: 0 PID: 72 Comm: kworker/u4:3 Tainted: G        W         5.10.0-rc1+ #25
  Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.0.0-prebuilt.qemu-project.org 04/01/2014
  Workqueue: scsi_wq_7 fc_scsi_scan_rport [scsi_transport_fc]
  RIP: 0010:qla2xxx_queuecommand+0x16b/0x3f0 [qla2xxx]
  Call Trace:
   scsi_queue_rq+0x58c/0xa60
   blk_mq_dispatch_rq_list+0x2b7/0x6f0
   ? __sbitmap_get_word+0x2a/0x80
   __blk_mq_sched_dispatch_requests+0xb8/0x170
   blk_mq_sched_dispatch_requests+0x2b/0x50
   __blk_mq_run_hw_queue+0x49/0xb0
   __blk_mq_delay_run_hw_queue+0xfb/0x150
   blk_mq_sched_insert_request+0xbe/0x110
   blk_execute_rq+0x45/0x70
   __scsi_execute+0x10e/0x250
   scsi_probe_and_add_lun+0x228/0xda0
   __scsi_scan_target+0xf4/0x620
   ? __pm_runtime_resume+0x4f/0x70
   scsi_scan_target+0x100/0x110
   fc_scsi_scan_rport+0xa1/0xb0 [scsi_transport_fc]
   process_one_work+0x1ea/0x3b0
   worker_thread+0x28/0x3b0
   ? process_one_work+0x3b0/0x3b0
   kthread+0x112/0x130
   ? kthread_park+0x80/0x80
   ret_from_fork+0x22/0x30

The driver should allocate enough vectors to provide every CPU it's own HW
queue and still handle reserved (MB, RSP, ATIO) interrupts.

The change fixes the crash on dual core VM and prevents unbalanced QP
allocation where nr_hw_queues is two less than the number of CPUs.

Link: https://lore.kernel.org/r/20210412165740.39318-1-r.bolshakov@yadro.com
Fixes: a6dcfe08487e ("scsi: qla2xxx: Limit interrupt vectors to number of CPUs")
Cc: Daniel Wagner <daniel.wagner@suse.com>
Cc: Himanshu Madhani <himanshu.madhani@oracle.com>
Cc: Quinn Tran <qutran@marvell.com>
Cc: Nilesh Javali <njavali@marvell.com>
Cc: Martin K. Petersen <martin.petersen@oracle.com>
Cc: stable@vger.kernel.org # 5.11+
Reported-by: Aleksandr Volkov <a.y.volkov@yadro.com>
Reported-by: Aleksandr Miloserdov <a.miloserdov@yadro.com>
Reviewed-by: Daniel Wagner <dwagner@suse.de>
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
[ commit f02d4086a8f36a0e1aaebf559b54cf24a177a486 upstream ]



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9415 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-15 22:57:50 +00:00
Bart Van Assche db187fc604 qla2x00t-32gbit: Reuse existing error handling path
There is no need to duplicate code, use the existing error handling path to
free resources. This is more future-proof.

Link: https://lore.kernel.org/r/6973844a1532ec2dc8e86f3533362e79d78ed774.1618132821.git.christophe.jaillet@wanadoo.fr
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
[ commit 5dc3468888f8ba54c3a2fdd38b13288f6b8daed2 upstream ]


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9414 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2021-05-15 22:52:16 +00:00