Commit Graph

5085 Commits

Author SHA1 Message Date
Vladislav Bolkhovitin
355fa36d34 scst, EXPERIMENTAL: improve commands CPU affinity
Now commands on the fast path processed by the same thread throughout
all its lifetime.



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6886 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-05-06 01:53:30 +00:00
Vladislav Bolkhovitin
fcb8b3c75e Make copy manager update internal data on INQUIRY changing vdisk events
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6885 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-05-05 01:53:17 +00:00
Vladislav Bolkhovitin
5ba4e1a707 scst_vdisk: extend vend_specific_id to 128 bytes
From Adrian Saul <Adrian.Saul@tpgtelecom.com.au>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6884 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-05-04 02:47:33 +00:00
Vladislav Bolkhovitin
33627cc8d8 When trying to remove a megaraid_sas device, the scst will hang inside
scst_free_device:

[  380.448608] [4]: scst: Detached from scsi0, channel 2, id 1, lun 0, type 0
[  601.138688] INFO: task kworker/0:0:4 blocked for more than 120 seconds.
[  601.138756]       Tainted: P           OE  3.19.0-58-quantastor #64~14.04.1
[  601.138810] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  601.138869] kworker/0:0     D ffff88085c6fba58     0     4      2 0x00000000
[  601.138926] Workqueue: events megasas_aen_polling [megaraid_sas]
[  601.138930]  ffff88085c6fba58 ffff88085c6f09d0 0000000000013e80 ffff88085c6fbfd8
[  601.138934]  0000000000013e80 ffffffff81c1d4e0 ffff88085c6f09d0 ffff88085c6fba38
[  601.138938]  ffff88085c6fbbd8 7fffffffffffffff ffff88085c6fbbd0 ffff88085c6f09d0
[  601.138942] Call Trace:
[  601.138955]  [<ffffffff817b5469>] schedule+0x29/0x70
[  601.138960]  [<ffffffff817b8574>] schedule_timeout+0x244/0x2c0
[  601.138968]  [<ffffffff8115fbcb>] ? irq_work_queue+0x6b/0x90
[  601.138975]  [<ffffffff810cb8e2>] ? wake_up_klogd+0x32/0x40
[  601.138979]  [<ffffffff810cbaf8>] ? console_unlock+0x208/0x480
[  601.138983]  [<ffffffff817b61c4>] wait_for_completion+0xa4/0x170
[  601.138989]  [<ffffffff810a1ea0>] ? wake_up_state+0x20/0x20
[  601.138995]  [<ffffffff8108d94c>] flush_workqueue+0x10c/0x5b0
[  601.139002]  [<ffffffff8108de05>] flush_scheduled_work+0x15/0x20
[  601.139044]  [<ffffffffc09314f6>] scst_free_device+0x16/0x50 [scst]
[  601.139051]  [<ffffffffc091a86f>] scst_remove+0x2df/0x3a0 [scst]
[  601.139056]  [<ffffffffc028c093>] ? enclosure_find+0x93/0xa0 [enclosure]
[  601.139061]  [<ffffffff814f3971>] device_del+0xe1/0x270
[  601.139062]  [<ffffffff814f3b22>] device_unregister+0x22/0x70
[  601.139066]  [<ffffffff815549ab>] __scsi_remove_device+0xbb/0xd0
[  601.139068]  [<ffffffff815549e6>] scsi_remove_device+0x26/0x40
[  601.139074]  [<ffffffffc039fb22>] megasas_aen_polling+0x362/0x610 [megaraid_sas]
[  601.139076]  [<ffffffff8108eeaf>] process_one_work+0x14f/0x440
[  601.139077]  [<ffffffff8108fab8>] worker_thread+0x118/0x510
[  601.139079]  [<ffffffff8108f9a0>] ? rescuer_thread+0x3d0/0x3d0
[  601.139082]  [<ffffffff81094b49>] kthread+0xc9/0xe0
[  601.139084]  [<ffffffff81094a80>] ? kthread_create_on_node+0x1c0/0x1c0
[  601.139087]  [<ffffffff817b9798>] ret_from_fork+0x58/0x90
[  601.139089]  [<ffffffff81094a80>] ? kthread_create_on_node+0x1c0/0x1c0

The problem is that scst_free_device will call flush_scheduled_work to wait
for ext_blockers_work, but scst_free_device itself is called from
schedule_work, thus creating deadlock.

Instead of using heavy-handed flush_scheduled_work, we use flush_work to wait
for ext_blockers_work to finish.

Signed-off-by: Chunwei Chen <david.chen@osnexus.com>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6883 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-05-04 02:43:06 +00:00
Bart Van Assche
5f59850096 scst_sysfs, LUN replacement: Initialize 'read_only' before using it
See also r6834.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6882 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-05-01 22:41:20 +00:00
Bart Van Assche
76b20c76b8 isert: fix race between teardown flow and connect flow
It is possible to get ESTABLISHED RDMACM event while the connection
is already started teardown flow (i.e. addr change).
At teardown the refcount is reduced to zero and we start releasing the
connection. In established event We need to check conn is not in teardown
flow by checking its ref count is not 0.

Signed-off-by: Israel Rukshin <israelr@mellanox.com>


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6879 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-04-26 14:13:33 +00:00
Bart Van Assche
07bc4bb1af isert: clean tmo timer when freeing the connection
The tmo timer is set when allocating a new connection.
We need to release it in case it didn't execute yet.
Else timer execution will lead to a NULL dereference bug on conn.

Signed-off-by: Israel Rukshin <israelr@mellanox.com>


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6878 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-04-26 14:13:13 +00:00
Bart Van Assche
0283a854ed isert: wait for RDMA CM event to complete before destroy resources
There is a race between RDMACM event handler and isert_conn_free.
The event handler use the connection resources and isert_conn_free
destroy them.
This commit fix multiple NULL dereference bugs.

Signed-off-by: Israel Rukshin <israelr@mellanox.com>


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6877 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-04-26 14:12:47 +00:00
Bart Van Assche
f297ef6f38 isert: fix double free of a fake request
A nop that is sent from the scst is treated as a fake request.
When a fake request is allocated we release it immediately,
so it's wrong to release it also on a completion error (isert_pdu_err).

This commit fix a NULL dereference bug when receiving completion with
error on this nop.

Signed-off-by: Israel Rukshin <israelr@mellanox.com>
Signed-off-by: Ariel Nahum <arieln@mellanox.com>


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6876 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-04-26 14:12:17 +00:00
Bart Van Assche
5bbc7433dc scst: Move kref_get_unless_zero() definition to <scst/backport.h>
This patch is a slightly modified version of a patch supplied by
Israel Rukshin <israelr@mellanox.com>.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6875 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-04-26 04:13:42 +00:00
Bart Van Assche
82cff1ba81 scst_vdisk: Fix a regression introduced by r6873
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6874 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-04-25 18:36:00 +00:00
Vladislav Bolkhovitin
afa0927a42 Some more cleanups
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6873 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-04-21 02:19:25 +00:00
Vladislav Bolkhovitin
f97c54e690 scstadmin: prevent saving statistical dif_checks_failed attribute
From Marc Smith <marc.smith@mcc.edu>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6867 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-04-20 04:52:58 +00:00
Vladislav Bolkhovitin
10f01feb98 Follow-up for the previous commit
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6866 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-04-20 04:34:43 +00:00
Vladislav Bolkhovitin
fce7964596 scst: decrease severity of "Copy Manager already registered" message, because it is harmless
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6865 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-04-20 04:29:34 +00:00
Vladislav Bolkhovitin
fae8fb74b0 scst: cleanups and clarifications
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6864 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-04-20 04:21:59 +00:00
Vladislav Bolkhovitin
fb0ad0b8cd scst_user: improve backward compatibility with handlers relying on obsolete SCST_USER_UNREGISTER_DEVICE call
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6863 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-04-20 04:00:00 +00:00
Vladislav Bolkhovitin
9ead865f6a Cleanup
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6862 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-04-20 03:44:21 +00:00
Vladislav Bolkhovitin
7219595e5c iscsi-scst: fix 2 minor main Makefile issues
1. Fix build of progs and mods targets, if iscsi_scst_itf_ver.h does not exist
2. Fix small race for parallel build of "all" target, when iscsi_scst_itf_ver.h
   not yet built, when progs or mods target need it



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6861 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-04-20 03:17:16 +00:00
Vladislav Bolkhovitin
9cd57cf50f Cleanup
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6860 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-04-20 02:48:28 +00:00
Bart Van Assche
dc28d934d3 scst.spec.in: Disable executable flag again for kernel modules
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6859 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-04-12 13:47:58 +00:00
Bart Van Assche
d619407d16 scst: Kernel v4.6-rc3 build fix
See also patch "mm: drop PAGE_CACHE_* and page_cache_{get,release}
definition".


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6858 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-04-11 19:59:59 +00:00
Bart Van Assche
dec1b4a12d scstadmin: Leave out "r" from RPM revision number
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6857 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-04-09 03:11:52 +00:00
Bart Van Assche
e3988e8c92 scst.spec.in: Enable .debug generation for .ko files
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6856 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-04-09 03:05:39 +00:00
Bart Van Assche
76cd77d64a scst.spec.in: Leave out 'r' from revision number
RPM version comparison works correctly with numbers but not if the
revision starts with 'r'. Hence leave out the 'r'.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6855 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-04-09 03:04:09 +00:00
Bart Van Assche
b34cf85d83 scst_sysfs: Report LUN replacement failure correctly
This is a follow-up for r6834.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6854 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-27 22:44:44 +00:00
Bart Van Assche
520b66677d scst: Fix RHEL 5 build
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6853 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-27 17:26:50 +00:00
Bart Van Assche
86816401fa scst: Move more backports from scst_debug.h into backport.h
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6852 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-27 17:09:46 +00:00
Bart Van Assche
30c98e92cd scst_local: Address checkpatch warnings
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6851 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-27 16:57:04 +00:00
Bart Van Assche
30f362caa3 scst: Address more checkpatch warnings
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6850 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-27 16:56:50 +00:00
Bart Van Assche
3990a6ccd4 iscsi-scstd: Insert a blank line after declarations
Additionally, surround complex values with parentheses, declare static
char arrays const and change C++ comments into C comments.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6849 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-27 16:24:59 +00:00
Bart Van Assche
c477b5f99c iscsi-scstd: Fix more checkpatch complaints about whitespace
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6848 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-27 16:16:06 +00:00
Bart Van Assche
2681ed8bcb iscsi-scstd: Fix checkpatch complaints about whitespace
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6847 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-27 16:10:45 +00:00
Bart Van Assche
3ab98d8174 iscsi-scst: Fix checkpatch complaints about whitespace
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6846 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-27 16:10:26 +00:00
Bart Van Assche
4dfb9d10c7 fcst: Change "signed" into "signed int"
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6845 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-27 15:57:41 +00:00
Bart Van Assche
45a032c357 fcst: Remove a CVS keyword marker
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6844 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-27 15:57:03 +00:00
Bart Van Assche
d4fc2435ec scst_mem: Remove a superfluous cast
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6843 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-27 15:55:41 +00:00
Bart Van Assche
b109098efe ib_srpt: Fix checkpatch complaints about missing spaces
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6842 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-27 15:52:41 +00:00
Bart Van Assche
7289593aff scst: Fix checkpatch complaints about using spaces for indentation instead of tabs
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6841 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-27 15:50:21 +00:00
Bart Van Assche
8695583ee9 ib_srpt: Reduce CPU load caused by stopping a large number of sessions
Avoid that stopping a large number of SRPT sessions causes a high
context switch frequency and hence a high CPU load.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6840 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-24 17:15:23 +00:00
Bart Van Assche
63768c8715 ib_srpt: Fix a debug message
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6839 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-24 17:14:49 +00:00
Bart Van Assche
3a7a5e7289 scst_vdisk: Fix handling of vdisk_cmd_params::iv
Avoid that the iv pointer can become a dangling pointer for
vdisk_fileio devices. Freeing iv without resetting iv_count
makes it namely possible that iv will be used after the memory
that pointer points at has been freed.
    
For vdisk_blockio devices, call vdisk_on_free_cmd_params() to
free the iv pointer.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6838 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-24 17:14:29 +00:00
Bart Van Assche
fef250eb90 scst_vdisk: Introduce vdisk_on_free_cmd_params()
This patch does not change any functionality.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6837 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-24 17:13:46 +00:00
Bart Van Assche
4f10d6254e scst_vdisk: Remove superfluous semicolons
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6836 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-24 17:13:06 +00:00
Bart Van Assche
eff3021fb5 scst: Port to Linux kernel v4.6
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6835 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-24 04:08:12 +00:00
Bart Van Assche
cf459edf68 scst: Move LUN replacement code to scst_lib
Move the code for LUN replacement from scst_sysfs.c into scst_lib.c.
This patch reduces code duplication by calling __scst_acg_del_lun()
from inside the LUN reassignment code. This patch does not change
any functionality.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6834 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-18 23:10:39 +00:00
Bart Van Assche
da3b803d81 scst_lib: Introduce __scst_acg_del_lun()
This patch does not change any functionality.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6833 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-18 23:10:10 +00:00
Bart Van Assche
7d1a007256 scst_sysfs: Separate LUN addition from LUN replacement code
This patch does not change any functionality but makes
__scst_process_luns_mgmt_store() easier to read.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6832 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-18 23:09:39 +00:00
Bart Van Assche
af8f462071 ib_srpt: Revert r6822
Revision 6822 triggers a race condition, hence revert it.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6831 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-18 17:00:39 +00:00
Bart Van Assche
8aa0ecf666 scripts/generate-patched-kernel: Fix list-source-files path
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6830 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2016-03-11 04:06:34 +00:00