Commit Graph

3318 Commits

Author SHA1 Message Date
Vladislav Bolkhovitin
b1e0e7ef19 Web updates
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4424 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-26 01:45:57 +00:00
Vladislav Bolkhovitin
0601427337 scst_sess_get() should be done in scst_pre_rx_mgmt_cmd() instead of scst_post_rx_mgmt_cmd()
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4423 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-25 18:48:06 +00:00
Vladislav Bolkhovitin
55fc545848 Docs updates
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4422 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-24 19:35:04 +00:00
Vladislav Bolkhovitin
1cb6932eb4 Web updates
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4421 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-24 19:33:23 +00:00
Vladislav Bolkhovitin
3d2959d5bf Fix for qla2x00t deadlock crash
The symptom of the crash is that one finds the system deadlocked
spinning on scsi_qla_host_t.hardware_lock in qla2x00_enable_tgt_mode
with a stack something like this:

crash> bt
PID: 6155   TASK: ffff88006e4bc3c0  CPU: 1   COMMAND: "scst_uid"
 #0 [ffff88007b915b28] machine_kexec at ffffffff8103163b
 #1 [ffff88007b915b88] crash_kexec at ffffffff810b8e52
 #2 [ffff88007b915c58] panic at ffffffff814ed0ab
 #3 [ffff88007b915cd8] spin_bug at ffffffff8127cd46
 #4 [ffff88007b915d18] _raw_spin_lock at ffffffff8127d015
 #5 [ffff88007b915d68] _spin_lock_irqsave at ffffffff814f02e4
 #6 [ffff88007b915d88] qla2x00_enable_tgt_mode at ffffffffa047b672 [qla2xxx]
 #7 [ffff88007b915db8] q2t_host_action at ffffffffa06db6a6 [qla2x00tgt]
 #8 [ffff88007b915df8] q2t_enable_tgt at ffffffffa06db6ea [qla2x00tgt]
 #9 [ffff88007b915e18] scst_process_tgt_enable_store at ffffffffa04f102e [scst]
#10 [ffff88007b915e48] scst_tgt_enable_store_work_fn at ffffffffa04f1176 [scst]
#11 [ffff88007b915e58] scst_process_sysfs_works at ffffffffa04e8bbe [scst]
#12 [ffff88007b915e78] sysfs_work_thread_fn at ffffffffa04e8db5 [scst]
#13 [ffff88007b915ed8] kthread at ffffffff8108f976
#14 [ffff88007b915f48] kernel_thread at ffffffff8100c20a

I was pulling my hair out on this one, because with the spinlock
debugging (enhanced to capture the PID along with the task pointer), I
figured out that the task (and process) that originally locked the lock
was gone!  It got really confusing when I added more spinlock debug code
to the kernel to detect locks held in the task switching and
task/process termination paths -- and didn't catch anything terminating
with locks held!

I finally tracked the problem down to two things:

1.  When qla24xx_create_vhost creates a new virtual scsi_qla_host_t it
does it by copying the physical (aka parent) scsi_qla_host_t.  Under the
right unlucky conditions, this can happen with the hardware_lock held
(the spinlock is embedded in the structure).

2.  The code should only be locking the hardware_lock of the physical
scsi_qla_host_t, because the lock is associated with the hardware.
Unfortunately, quite a few places are not using to_qla_parent to make
sure they lock the correct lock.  One of those places is
qla2x00_enable_tgt_mode.  Along with the deadlock, this has the
potential to leave the hardware and driver structures in unpredictable
states, because the lock isn't always providing serialization.

The fix entails two things:

1. Zeroing the lock after copying the scsi_qla_host_t structure:  This
won't stop the deadlock, but will enable the spinlock debug code to
easily catch anything that misbehaves and locks the wrong lock.  I also
initialized the other locks because they could have the same problem.  I
also initialized the list heads, because they could end up holding
dangling references.  I did not initialize all pointers, because there
are quite a few that point to read only data and are OK (and I didn't
have time to research all of them).

2.  Using to_qla_parent everywhere when locking and the scsi_qla_host_t
structure might be virtual.  This is a lot of changes, but they are the
same thing over and over again.

I did not make an effort to look for scalar or pointer fields that are
being picked from the wrong structure.  That's getting to be as much
pain as merging up to the latest QLogic driver (which would have gotten
rid of this problem).

From "Robinson, Herbie" <Herbie.Robinson@stratus.com>




git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4420 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-24 19:01:47 +00:00
Vladislav Bolkhovitin
94fbc49091 Fix qla2x00t compilation warnings on RHEL 6.1
The attached patch fixes compilation warnings for the qla2x00t driver
when compiled by RHEL 6.1, kernel version 2.6.32-131.0.15.el6. I
believe this is the second kernel version for RHEL 6.1.

From "Robinson, Herbie" <Herbie.Robinson@stratus.com>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4419 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-24 18:50:59 +00:00
Vladislav Bolkhovitin
bb4e5eec24 Add q2t_pre_xmit_response comment
The fix for the locking bug I found in q2t_pre_xmit_response has already
been added, but I had some comments in my copy that couldn't hurt.

From "Robinson, Herbie" <Herbie.Robinson@stratus.com>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4418 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-24 18:48:03 +00:00
Vladislav Bolkhovitin
e70b729707 Skip waiting for internal commands after abort.
Waiting for their parent commands is required and sufficient.



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4417 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-23 19:39:33 +00:00
Bart Van Assche
aa57dbd8e8 nightly build: Update kernel versions
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4416 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-21 03:28:57 +00:00
Vladislav Bolkhovitin
e8612a432c More cleanups
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4415 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-20 23:53:22 +00:00
Vladislav Bolkhovitin
04040543ce Cleanup
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4414 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-20 23:41:05 +00:00
Vladislav Bolkhovitin
159c54c67e Improve handling of zero len unmap descriptors
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4413 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-20 22:05:22 +00:00
Vladislav Bolkhovitin
45e50e12b0 Zero size descriptor are possible, so we have to add cmd_data_descriptors_cnt to track their count.
+ small cleanup



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4412 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-20 21:58:45 +00:00
Bart Van Assche
b19227e809 scst: Remove a trailing whitespace because checkpatch complains about it
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4411 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-20 02:51:23 +00:00
Vladislav Bolkhovitin
6d13026f05 Default logging improvements
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4410 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-19 19:13:28 +00:00
Vladislav Bolkhovitin
a3c5648b29 Introduce scst_get_buf_full_sense() instead of open coded scst_get_buf_full() + setting sense on errors
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4409 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-19 02:36:32 +00:00
Vladislav Bolkhovitin
955113f493 Sense handling improvements
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4408 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-18 21:28:57 +00:00
Vladislav Bolkhovitin
408b67c80f Make invalid LUN message more comprehensive
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4407 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-17 20:09:37 +00:00
Bart Van Assche
6cfe427617 nightly build: Update kernel versions
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4406 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-14 15:03:21 +00:00
Vladislav Bolkhovitin
7cde5841a8 Cleanup
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4405 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-13 21:53:44 +00:00
Vladislav Bolkhovitin
260c6cb1f8 Fix incorrect completion function dereference.
Reported by Thomas Lau <Thomas.Lau@principleone.com>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4404 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-13 21:39:30 +00:00
Bart Van Assche
bbc726fdea nightly build: Update Linux kernel versions
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4403 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-12 05:54:27 +00:00
Bart Van Assche
d0745d1a16 scst: Fix WRITE FILEMARKS parsing
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4402 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-09 06:22:48 +00:00
Bart Van Assche
bcc952a765 scst: Add support for SECURITY PROTOCOL IN and OUT
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4401 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-09 06:19:38 +00:00
Bart Van Assche
95246ee9d7 scstadmin: Make _syswrite() translate EBUSY into "writing failed"
_syswrite() callers check whether writing into an SCST sysfs attribute
succeeded by checking whether the value returned by this function is
defined(). Return undef (failed) instead of -1 (success) if syswrite()
returned error code EBUSY (found this through source reading). Return
$length instead of length($cmd) if the initial write triggered EAGAIN.
Remove a superfluous $bytes = undef statement. Eliminate the variable
$wait.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4400 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-09 06:12:47 +00:00
Vladislav Bolkhovitin
39e304dc76 scst: Don't suspend activity during removal of a SCSI device
SCST allows SCSI pass-through to SCSI devices registered with the SCSI
initiator core. SCST I/O activity has to be suspended before a LUN
that corresponds to such a SCSI device can be removed safely. Do not
suspend I/O when a SCSI device is being removed that has not been
exported as an SCST LUN such that removal of such devices does not
slow down I/O.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4399 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-09 00:24:51 +00:00
Vladislav Bolkhovitin
68662e9fbd Fix data direction of RECEIVE COPY RESULT command
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4398 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-09 00:21:40 +00:00
Bart Van Assche
ac2a3aad90 scst: Remove spaces in front of tabs because checkpatch complains about these. This is a whitespace-only change.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4397 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-07 06:33:46 +00:00
Bart Van Assche
d89d3fae83 Follow-up for r4395: Make SCST build again on pre-2.6.38 kernels
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4396 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-07 06:30:50 +00:00
Vladislav Bolkhovitin
df4d0f9dad Fix ALLOW COMMANDS field of PERSISTENT RESERVE IN REPORT CAPABILITIES handling according to SPC-4 suggestions
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4395 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-06 19:57:48 +00:00
Vladislav Bolkhovitin
64be93db95 scst: Fix sysfs code for parsing parameters when adding or replacing a LUN
Signed-off-by: Bart Van Assche <bvanassche@acm.org>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4394 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-06 03:02:42 +00:00
Vladislav Bolkhovitin
a17349c566 scst: Parse REQUEST VOLUME ELEMENT ADDRESS correctly
Signed-off-by: Bart Van Assche <bvanassche@acm.org>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4393 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-07-06 02:44:53 +00:00
Vladislav Bolkhovitin
16d0b30bc8 Cleanup: let's have a dedicate CDB flag to mark CDBs without LBA instead of relying on lba_off = 0.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4392 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-06-29 22:31:13 +00:00
Bart Van Assche
db5b92274a scstadmin: Allow hash signs to be escaped
Hash signs have to be specified in scst.conf when using the per_portal_acl=1
feature of iSCSI-SCST in combination with LUN masking. Make scstadmin not
consider hash signs preceded by a backslash as the start of a comment. Escape
backslashes and hash signs when writing out scst.conf.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4391 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-06-29 13:43:36 +00:00
Bart Van Assche
d811c1374c nightly build: Disable x86_32 mode in kernel config
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4390 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-06-29 06:25:16 +00:00
Vladislav Bolkhovitin
a7a24d6dab scst: Remove a superfluous goto statement and a superfluous label
Signed-off-by: Bart Van Assche <bvanassche@acm.org>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4389 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-06-28 23:31:07 +00:00
Vladislav Bolkhovitin
c531f06b32 scst: sysfs session creation error path fix
The attached patch prevents that a kernel oops is triggered if something
fails when adding a session to sysfs.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4388 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-06-28 22:43:19 +00:00
Vladislav Bolkhovitin
e80a15bfd3 scst_assign_dev_handler(): detach if attach only succeeded partially
Partial attach failure should result in calling detach for those handlers
for which attach succeeded

Signed-off-by: Bart Van Assche <bvanassche@acm.org>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4387 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-06-28 22:35:49 +00:00
Vladislav Bolkhovitin
2fc379e221 scst: Make extra_tgt_dev_list_entry users hold scst_mutex
Because it's used in 3 places not othrewise synchronized

Signed-off-by: Bart Van Assche <bvanassche@acm.org>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4386 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-06-28 22:32:03 +00:00
Vladislav Bolkhovitin
b25cb2a7e5 scst: Fix MAINTENANCE IN parsing
Although I do not know of any initiator that asks for the extended
parameter data format when submitting a REPORT TARGET PORT GROUPS
command, I think it's a good idea to support that data format (i.e.
three most significant bits of the second CDB byte are 001 instead
of 000). The attached patch should implement that. Additionally,
cmd->op_name is set to something more descriptive than
"MAINTENANCE IN" in that patch.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4385 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-06-28 22:27:51 +00:00
Bart Van Assche
85b11f9ced nightly build: Invoke all scripts from the same directory
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4384 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-06-28 11:32:48 +00:00
Bart Van Assche
971c23a4dd scst: Remove a superfluous test from the REPORT TARGET PORT GROUPS implementation
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4383 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-06-28 11:31:13 +00:00
Bart Van Assche
95bc9b68ff scst: Simplify REPORT TARGET PORT GROUPS implementation
The value of the variable allocation_length is identical to the value of the
variable buf_len. Hence eliminate the former. Also, for MAINTENANCE(IN)
cdb_len is always equal to 12 so the test "cdb_len > 1" can be eliminated too.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4382 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-06-28 11:28:18 +00:00
Bart Van Assche
26a74cebe8 fcst: Build fix
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4381 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-06-28 06:28:37 +00:00
Vladislav Bolkhovitin
8e093c8367 Remove wrong check, which can lead to missed lock unlock
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4380 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-06-28 01:48:19 +00:00
Bart Van Assche
e8f04d3f1c scripts/specialize-patch: Avoid that joining two lines generates a space in front of a tab.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4379 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-06-27 05:30:53 +00:00
Bart Van Assche
a4c70b8126 Use rcu_dereference_protected to tell rcu that the ft_lport_lock
is held during ft_lport_create. This resolved "suspicious RCU usage"
warnings when debugging options are turned on.

Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4378 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-06-27 05:11:20 +00:00
Vladislav Bolkhovitin
10ffe6d620 scst/sysfs: Introduce scst_tgt_find_acg()
Call scst_tgt_find_acg() instead of iterating explicitly over the ACG list.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4377 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-06-26 18:59:21 +00:00
Bart Van Assche
a5a5e4a1e3 scst: Rework r4372 such that fileio_tgt builds again
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4376 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-06-26 06:15:03 +00:00
Bart Van Assche
d52dc638a3 scst: Convert a C99 comment
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4375 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2012-06-25 06:33:11 +00:00