Commit Graph
2096 Commits
Author SHA1 Message Date
Bart Van Assche 41d6ad1c78 scst: Kernel v4.15 build fix
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7299 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-12-29 22:39:16 +00:00
Bart Van Assche 9246a05f7e Fix kernel-doc warnings
Avoid that building SCST with W=1 against kernel v4.15 triggers warnings about
kernel-doc header issues.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7298 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-12-29 22:34:17 +00:00
Bart Van Assche 66adc2ce3f scst_vdisk: Change page_cache_alloc_cold() calls into page_cache_alloc() calls
See also commit 453f85d43fa9 ("mm: remove __GFP_COLD").


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7295 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-12-28 18:45:20 +00:00
Bart Van Assche 8268f5d5b1 Convert setup_timer() into timer_setup() calls
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7294 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-12-28 18:44:21 +00:00
Bart Van Assche b786e5f954 scst: Convert init_timer() into setup_timer() calls
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7291 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-12-28 18:42:42 +00:00
Vladislav Bolkhovitin 805e3ffeb7 scst: fix pass-through on kernels 4.11 and 4.12
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7287 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-12-23 04:03:09 +00:00
Vladislav Bolkhovitin a4421e4d8b scst: nolockdep patch for 4.13 kernels
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7286 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-12-23 02:19:31 +00:00
Bart Van Assche ff77f1acf4 Move WARN() backport from srpt/src/ib_srpt.c to scst/include/backport.h
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7280 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-12-22 23:13:30 +00:00
Bart Van Assche 8c92d5c168 scst: Fix kernel <= 2.6.30 build
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7268 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-11-14 16:37:24 +00:00
Bart Van Assche e5a3e25588 scst/src/scst_targ: Use READ_ONCE() instead of ACCESS_ONCE()
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7265 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-11-13 16:47:43 +00:00
Bart Van Assche 089f839a78 scst: Address two checkpatch warnings
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7264 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-11-13 16:47:10 +00:00
Bart Van Assche f8fab6fcab scst: Fix build for kernels 3.15 and older
blk_rq_set_block_pc() was introduced in kernel 3.16.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7262 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-11-13 16:18:00 +00:00
Bart Van Assche 1190cf1ea1 scst/src/scst_lib.c: Fix recently introduced checkpatch complaints
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7261 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-11-13 16:00:09 +00:00
Bart Van Assche 4c05086b59 scst, iscsi-scst: Introduce scst_read(), scst_write(), scst_readv() and scst_writev()
This makes it easier to add support for new kernel versions, e.g. kernel
version v4.14.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7260 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-11-13 05:50:44 +00:00
Bart Van Assche 64c76f339c scst: Introduce the kernel v4.14 bio_set_dev() macro
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7259 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-11-13 05:49:08 +00:00
Vladislav Bolkhovitin ea826a80d8 scst: add example of active non-optimized setup
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7253 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-10-12 03:22:02 +00:00
Bart Van Assche ebbb2f39b1 scst/include/backport.h: Follow-up for r7248
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7250 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-10-09 19:58:15 +00:00
Bart Van Assche 47b7da25aa scst: Fix SCSI pass-through for kernel version v4.11 and later
See also trunk r7153.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7249 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-10-09 18:15:00 +00:00
Bart Van Assche 16fe64bc13 scst_vdisk: Fix a bug in the Linux kernel v4.13 port
See also trunk r7240.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7248 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-10-09 18:10:48 +00:00
Bart Van Assche d3a4f1d79f scst: Port to openSUSE Leap 42.x
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7242 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-10-05 16:57:27 +00:00
Bart Van Assche c0419026e3 scst: Port to kernel v4.13
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7240 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-10-03 23:08:29 +00:00
Vladislav Bolkhovitin d0c448116a Change version to 3.4
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7230 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-09-01 04:04:00 +00:00
Bart Van Assche 617c48e138 scst: More fall-through annotations for gcc 7
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7217 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-08-27 15:40:42 +00:00
Bart Van Assche 9e35afe1e0 Annotate fall-through in switch statements in a form recognized by gcc 7
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7216 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-08-27 15:28:57 +00:00
Vladislav Bolkhovitin 4c269fa728 In the current implementation of SCST/trunk the recently introduced
"active" attribute for vdisk_blockio devices is managed by an ALUA
state change (start/finish), for specific ALUA states (eg,
active/standby). Relying on ALUA state changes to open/close the
back-end block device does indeed work for some SCST configurations,
however, some users desire advanced control over this setting, and
prefer to handle opening/closing a back-end block device from the
cluster resource agent (RA) script. Certain ambiguous situations can
also arise if more than one target group exists per SCST device
group... in this case, a back-end device may flip/flop (opened/closed)
and may end up in an inconsistent state if care is not taken in the
implementation of the cluster RA.

The patch below makes the "active" sysfs attribute for vdisk_blockio
readable/writable by a user, thereby giving full control over a
device's opened/closed state. The default behavior for SCST
vdisk_blockio devices is to allow ALUA state changes to control the
opened/closed ("active") state of a back-end device
(bind_alua_state=1). If the user wishes to handle setting the "active"
attribute themselves via a script or cluster RA, they would set
bind_alua_state=0 for the vdisk_blockio device, and the "active"
attribute would not be modified on ALUA state changes, it is then left
up to the user to handle this.

The patch below also fixes a bug where the attribute value is not
changed when the appropriate ALUA state is set, unless a target
session exists for the target group target; see here for more
information: https://sourceforge.net/p/scst/mailman/message/35898014/

Signed-off-by: Marc A. Smith <marc.smith@parodyne.com>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7212 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-07-26 03:18:30 +00:00
Vladislav Bolkhovitin 792a896abb With the new 'active' attribute, a bug exists where the attribute
value is not changed when the appropriate ALUA state is set, unless a
target session exists for the target group target; this patch fixes
that bug, see here for more information:
https://sourceforge.net/p/scst/mailman/message/35898014/

Signed-off-by: Marc A. Smith <marc.smith@parodyne.com>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7211 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-07-15 03:26:11 +00:00
Vladislav Bolkhovitin c967700cd7 scst: Linux kernel v4.12 warning fix.
Signed-off-by: Sebastian Herbszt <herbszt@gmx.de>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7208 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-06-13 03:58:26 +00:00
Vladislav Bolkhovitin 213a11e07b scst: minor cleanup for previous commit
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7207 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-06-07 01:23:59 +00:00
Vladislav Bolkhovitin e174d00f08 scst: update ALUA documentation (Active/Non-Optimized)
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7206 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-06-07 01:13:58 +00:00
Vladislav Bolkhovitin 64d07d25cf scst_vdisk: 'numa_node_id' signed attribute value fix
The "numa_node_id" attribute reside in the scst_vdisk_dev struct as
signed integer and may well be negative values (eg, -1), so move fetching
it above the unsigned attributes and use kstrtoll() to retrieve the
values.

Signed-off-by: Marc A. Smith <marc.smith@parodyne.com>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7205 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-06-06 04:20:09 +00:00
Vladislav Bolkhovitin 0ae66a082e Fix dereference beyond last sg element
Reported-By: David Butterfield <dab21774@gmail.com>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7204 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-06-03 04:02:22 +00:00
Vladislav Bolkhovitin 93bea9e0e8 Update to 4.11 kernels
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7203 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-06-03 02:38:51 +00:00
Vladislav Bolkhovitin 5358fb06f8 scst: remove a few unnecessary shadow declarations
Remove a few "shadow" declarations that appear unnecessary and probably
unintended.  (These are cases where a declaration in an inner scope hides
another declaration of the same name in an outer scope.)

Not all shadow declarations are superfluous -- so this particular compiler
warning is one that cannot be simply heeded while half asleep.  But these
particular ones I removed appear to be superfluous.

Signed-off-by: David Butterfield <dab21774@gmail.com>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7201 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-06-01 04:04:45 +00:00
Vladislav Bolkhovitin c4e9bab97c scst: scst_free_acg() not dereference NULL acg->tgt for proc interface
Signed-off-by: David Butterfield <dab21774@gmail.com>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7199 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-06-01 03:49:26 +00:00
Vladislav Bolkhovitin c1d798a788 scst: cleanup of dead code
Reported-By: David Butterfield <dab21774@gmail.com>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7198 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-06-01 03:46:06 +00:00
Vladislav Bolkhovitin bd67b31c9e scst: a better version of possible memory reclaim deadlock fix r7194
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7197 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-05-31 04:01:00 +00:00
Vladislav Bolkhovitin 4a8a18cc34 scst_vdisk: add "active" attridute to the list of BLOCKIO add device attributes
This is forgotten piece to r7187



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7196 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-05-26 02:45:47 +00:00
Vladislav Bolkhovitin 7caed6e7c4 scst: prevent possible memory reclaim deadlock
Reported by lockdep:

[  415.813281] =================================
[  415.817626] [ INFO: inconsistent lock state ]
[  415.821974] 4.10.12-scst-dbg #4 Tainted: G           O
[  415.827360] ---------------------------------
[  415.831705] inconsistent {RECLAIM_FS-ON-W} -> {IN-RECLAIM_FS-W} usage.
[  415.838217] kswapd0/558 [HC0[0]:SC0[0]:HE1:SE1] takes:
[  415.843342]  (sgv_pools_mutex){+.+.?.}, at: [<ffffffffa036d300>] __sgv_shrink+0x90/0x1d0 [scst]
[  415.852075] {RECLAIM_FS-ON-W} state was registered at:
[  415.857208]   mark_held_locks+0x6c/0x90
[  415.861034]   lockdep_trace_alloc+0x8a/0xd0
[  415.865210]   kmem_cache_alloc_node+0x32/0x2f0
[  415.869670]   sgv_pool_create_node+0x186/0x2e0 [scst]
[  415.874735]   sgv_pool_create+0x12/0x20 [scst]
[  415.879194]   scst_sgv_pools_init+0xb9/0x3c0 [scst]
[  415.884065]   __dev_user_set_opt+0x152/0x5f0 [scst_user]
[  415.889367]   do_one_initcall+0x59/0x190
[  415.893280]   do_init_module+0x6a/0x230
[  415.897106]   load_module+0x591/0x830
[  415.900758]   SYSC_init_module+0xd3/0x120
[  415.904758]   SyS_init_module+0xe/0x10
[  415.908501]   entry_SYSCALL_64_fastpath+0x18/0xad
[  415.913193] irq event stamp: 3831137
[  415.916763] hardirqs last  enabled at (3831137): [<ffffffff8106ff37>] __local_bh_enable_ip+0x67/0xd0
[  415.925878] hardirqs last disabled at (3831135): [<ffffffff8106fefe>] __local_bh_enable_ip+0x2e/0xd0
[  415.935018] softirqs last  enabled at (3831136): [<ffffffffa036c72d>] __sgv_can_be_shrunk+0x9d/0x180 [scst]
[  415.944764] softirqs last disabled at (3831134): [<ffffffffa036c6e3>] __sgv_can_be_shrunk+0x53/0x180 [scst]
[  415.954481]
[  415.954481] other info that might help us debug this:
[  415.960994]  Possible unsafe locking scenario:
[  415.960994]
[  415.966899]        CPU0
[  415.969336]        ----
[  415.971774]   lock(sgv_pools_mutex);
[  415.975339]   <Interrupt>
[  415.977950]     lock(sgv_pools_mutex);
[  415.981691]
[  415.981691]  *** DEADLOCK ***
[  415.981691]
[  415.987599] 1 lock held by kswapd0/558:
[  415.991424]  #0:  (shrinker_rwsem){++++..}, at: [<ffffffff811ace5c>] T.1898+0x4c/0x100
[  415.999329]
[  415.999329] stack backtrace:
[  416.003677] CPU: 2 PID: 558 Comm: kswapd0 Tainted: G           O    4.10.12-scst-dbg #4
[  416.011663] Hardware name: Dell Inc. PowerEdge R710/00NH4P, BIOS 2.2.10 11/09/2010
[  416.019216] Call Trace:
[  416.021661]  dump_stack+0x6b/0xa0
[  416.024968]  print_usage_bug+0x182/0x190
[  416.028881]  ? print_circular_bug+0x110/0x110
[  416.033226]  mark_lock_irq+0xee/0x290
[  416.036879]  mark_lock+0x113/0x1a0
[  416.040271]  mark_irqflags+0xb0/0x180
[  416.043924]  __lock_acquire+0x245/0x610
[  416.047750]  ? __lock_release+0x408/0x470
[  416.051750]  lock_acquire+0xce/0x2b0
[  416.055343]  ? __sgv_shrink+0x90/0x1d0 [scst]
[  416.059689]  ? mutex_lock_nested+0x47/0x750
[  416.063863]  mutex_lock_nested+0x82/0x750
[  416.067888]  ? __sgv_shrink+0x90/0x1d0 [scst]
[  416.072236]  ? put_lock_stats+0xe/0x30
[  416.075975]  ? __lock_release+0x408/0x470
[  416.080001]  ? __sgv_shrink+0x90/0x1d0 [scst]
[  416.084349]  ? debug_smp_processor_id+0x17/0x20
[  416.088868]  ? put_lock_stats+0xe/0x30
[  416.092633]  ? __sgv_can_be_shrunk+0x9d/0x180 [scst]
[  416.097588]  ? mark_held_locks+0x6c/0x90
[  416.101500]  ? __local_bh_enable_ip+0x67/0xd0
[  416.105873]  __sgv_shrink+0x90/0x1d0 [scst]
[  416.110047]  ? __local_bh_enable_ip+0x67/0xd0
[  416.114420]  sgv_scan_shrink+0x5d/0x120 [scst]
[  416.118853]  do_shrink_slab+0x19b/0x5f0
[  416.122678]  ? T.1898+0x4c/0x100
[  416.125899]  ? down_read_trylock+0x60/0x80
[  416.129985]  T.1898+0xb4/0x100
[  416.133031]  shrink_node+0x62/0xa0
[  416.136424]  balance_pgdat+0x1c8/0x2c0
[  416.140164]  kswapd+0xa0/0x2b0
[  416.143211]  ? preempt_count_sub+0x9f/0xe0
[  416.147409]  ? schedule+0x4e/0xc0
[  416.150715]  ? balance_pgdat+0x2c0/0x2c0
[  416.154627]  kthread+0x111/0x150
[  416.157849]  ? call_usermodehelper_exec_work+0xa0/0xa0
[  416.162974]  ? __kthread_init_worker+0x80/0x80
[  416.167407]  ? call_usermodehelper_exec_work+0xa0/0xa0
[  416.172534]  ? call_usermodehelper_exec_work+0xa0/0xa0
[  416.177660]  ret_from_fork+0x2e/0x40



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7194 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-05-23 03:50:43 +00:00
Vladislav Bolkhovitin c729d1934a scst: minor cleanup
Let's keep it simple without unused functionality



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7192 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-05-20 03:29:41 +00:00
Vladislav Bolkhovitin e452378d1e scst: restore locking documentation comments
Better to follow the common rule and always have locking expectations
documented in addition to runtime checks. Partial revert of r7095.



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7191 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-05-20 03:19:54 +00:00
Vladislav Bolkhovitin 36f2612eb1 scst: fix possible NULL dereference in TM code
TM command accessing a non-existing LUN might lead NULL dereference in
scst_call_dev_task_mgmt_fn_done().

Reported-By: <Ilan Steinberg <ilan.steinberg@kaminario.com>>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7190 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-05-20 03:00:28 +00:00
Vladislav Bolkhovitin b3758b0db9 scst: compute max_transfer args as long, not int
Compute max_transfer args as long, not int, to avoid overflow when
max_sg_cnt=32768 and PAGE_SHIFT=16 (64K PAGE_SIZE).  Note it is not
only the min() call, but also the << PAGE_SHIFT needs to be long.

Signed-off-by: David Butterfield <dab21774@gmail.com>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7189 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-05-20 02:04:16 +00:00
Vladislav Bolkhovitin 9d21169f8c scst: implement BLOCKIO devices "active" attribute
Intended to be able to load  on passive side as described in
https://sourceforge.net/p/scst/mailman/message/35549446/

Suggested-by: Кирилл Тюшев <kirill.tyushev8@gmail.com>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7187 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-05-19 02:37:49 +00:00
Bart Van Assche 8315bfdd0f scst_vdisk: Avoid shifting left by a negative number of bits
scst_calc_block_shift() can return a negative number. Hence avoid
1 << scst_calc_block_shift().  Detected by Coverity.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7180 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-05-14 03:49:39 +00:00
Bart Van Assche cb070d9a7f scst/include/backport.h: Add a backport of rcu_dereference_protected()
This patch does not change any functionality.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7179 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-05-14 03:13:56 +00:00
Bart Van Assche b4118ea0f1 scst/include/backport.h: Add a kref_read() backport
This patch does not change any functionality.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7178 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-05-14 03:06:54 +00:00
Bart Van Assche 4a18e68c3f scst/include/backport.h: Fix kthread_create_on_node() definition
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7177 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-05-14 02:55:24 +00:00
Bart Van Assche 3622c0d5cb scst/include/backport.h: Add a comment
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7176 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-05-14 00:55:39 +00:00
Bart Van Assche b8cfe827be scst/include/backport.h: Remove duplicate definition of kthread_create_on_node()
This patch reverts most of r7168.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7175 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-05-14 00:42:24 +00:00
Vladislav Bolkhovitin 383ceb0a8e scst: add module parameter to control the copy manager auto assignment
Reported-By: Guru Prasad <gp22online@gmail.com>
Suggested-By: Sebastian Herbszt <herbszt@gmx.de>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7174 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2017-05-13 03:30:07 +00:00