Commit Graph

1730 Commits

Author SHA1 Message Date
mav
9a25467988 Allow LOG SENSE command on non-disk devices. 2015-09-26 13:51:29 +00:00
mav
7903c2e5c3 Remove concept of control device. 2015-09-26 12:53:55 +00:00
mav
9bb4838c10 Move ioctl frontend defines where they belong. 2015-09-26 11:56:28 +00:00
mav
4fe0be11b5 Remove few more unused variables. 2015-09-26 11:39:54 +00:00
mav
70f018005e Remove some duplicate, legacy, dead and questionable code. 2015-09-26 11:28:45 +00:00
mav
da3031ba34 Pass to sobind() copy of the address, not the original. 2015-09-26 01:23:29 +00:00
mav
68c4bb4bd1 Properly lock LUN in ctl_failover_lun(). 2015-09-25 22:45:23 +00:00
mav
666e15d04a Fix bit masks changed for the wrong commands in r288221. 2015-09-25 19:46:34 +00:00
mav
c46f2e1439 Constify ctl_serialize_table. 2015-09-25 18:49:25 +00:00
mav
048c6e7723 Remove some dead code found by Clang analyzer. 2015-09-25 18:15:34 +00:00
mav
4d45b292aa Remove stale comments and some excessive empty lines. 2015-09-25 16:34:59 +00:00
mav
dc7c5180b5 Switch I/O time accounting from system time to uptime.
While there, make num_dmas accounted independently of CTL_TIME_IO.
2015-09-25 10:14:39 +00:00
mav
87240643a5 Collect DMA statistics on secondary HA node. 2015-09-25 09:55:51 +00:00
mav
e36a0596e3 Make HA handle datamove and done in a universal way, using port methods.
Now from primary node point of view requests transferred from secondary
node should look almost normal and always have valid port.
2015-09-25 09:14:29 +00:00
mav
ba2d211568 Remove some control_softc references. 2015-09-25 07:27:23 +00:00
mav
f83f810204 Allow WRITE SAME with NDOB bit set but without UNMAP.
This combination was originally forbidden, but allowed at spc4r3.
2015-09-24 15:59:08 +00:00
mav
661d29ba49 Add new report types to REPORT LUNS command.
This is only for completeness, since we have nothing new to report there.
2015-09-24 12:22:47 +00:00
mav
9e5012814b Update WRITE ATOMIC(16) support to sbc4r8 draft.
This is only a cosmetic change.  We still don't support atomic boundary
field in the CDB, but at least now we do it formally.
2015-09-24 08:04:47 +00:00
mav
09cbc1126e Add support for READ BUFFER(16) command. 2015-09-24 07:16:34 +00:00
mav
4c00714c1f Synchronize mode pages between HA peers.
We allow to modify only few fields in mode pages now, but still it is
not good if they unexpectedly change during failover.  Also this fixes
reporting of "Mode parameters changed" UAs on secondary node.
2015-09-23 18:33:00 +00:00
mav
6711ffe0ce Make HA peers announce their parameters on connect.
HA protocol requires strict version, parameters and configuration match.
Differences there may cause full set of problems up to kernel panic.
To avoid that, validate peer parameters on connect, and abort connection
immediately if some mismatch detected.
2015-09-23 15:49:27 +00:00
mav
35d91751bd Add support for Control extension mode page. 2015-09-22 14:55:46 +00:00
mav
04e2dfaaea Remove duplicate and incomplete code handling LUN modify.
Instead reuse code from LUN creation.  This allows most of LUN media
options to be changed live with modify request without full restart.
2015-09-22 10:45:50 +00:00
mav
6fb47d3576 Log iSCSI session reinstatements.
False session reinstatements can be result of misconfiguration, when
several initiators use the same initiator name and ISID.
2015-09-21 13:25:29 +00:00
mav
089bfb2bd5 Mark with DMA flag I/Os waiting for iSCSI write data after R2T.
Reads and immediate writes are not blocking, so don't bother.
2015-09-20 11:39:19 +00:00
mav
6e8a812631 Remove couple excess SGLIST I/O flags.
Those flags duplicated respective (sg_entries > 0) values.
2015-09-20 10:40:30 +00:00
mav
ce8faf1ce9 Always execute REPORT LUNS and REQUEST SENSE commands locally.
REPORT LUNS command is more related to target rather then specific LUN.
This node may be primary for LUNs for some reason unknown to another,
and command forwarded to another node won't be able to report them.

REQUEST SENSE is related to LUN, but in our implementation it reports
only UAs and CAs, that are stored locally rather then on primary node.
2015-09-19 19:30:55 +00:00
mav
5c7a1c36c1 Split two command flags with different meaning.
This is only a cosmetical change.
2015-09-19 19:11:59 +00:00
mav
9435d43b5b Pack struct ctl_ha_msg_hdr by 8 bytes. 2015-09-19 18:23:06 +00:00
mav
b5750fe77b Fix memory corruption when >128K transferred through HA link.
While there, do some cleaning.
2015-09-19 13:12:09 +00:00
mav
02db1cf02c Mark I/Os with DMA flag while moving data through the HA link. 2015-09-18 20:11:10 +00:00
mav
d696fece47 Relax serseq option operation for reads.
Previously, with serseq enabled, next command was unblocked only after
previous completed.  With this change, for read operations, next command
is unblocked as soon as last media read completed.  This is important
for frontends that actually wait for data move completion (like camtgt),
or when data are moved through the HA link, or especially when both.
2015-09-18 19:43:14 +00:00
mav
6c4148c76b Kill HA link and shutdown the threads on shutdown. 2015-09-18 12:08:00 +00:00
mav
39b362d735 Update list of opcodes to 5/26/15. 2015-09-18 10:44:25 +00:00
mav
48d608e93d Update list of ASC/ASCQ codes from 5/20/12 to 8/12/15. 2015-09-18 10:23:17 +00:00
mav
e2cbfa7ae4 Replicate initiators WWPNs and names between HA peers. 2015-09-17 21:51:11 +00:00
mav
7d2c7a2790 Replicate port->init_devid to HA peer. 2015-09-17 20:36:34 +00:00
mav
5168f6a6d2 When reporting TPT UA, report which of thresholds was reached. 2015-09-17 17:00:36 +00:00
mav
a09fd181e0 Report number of failed XCOPY segment. 2015-09-17 14:22:52 +00:00
mav
c83e5e51a7 Report proper medium error code for VERIFY commands. 2015-09-17 12:52:18 +00:00
mav
5cd19bff79 Fix reading after end of file for file-backed LUNs.
If backing file is smaller then the LUN size, we have to explicitly clear
the rest of the buffer to not leak some random data from previous I/Os.
2015-09-16 21:43:51 +00:00
mav
319baa7ea6 Make COMPARE AND WRITE report offset of difference. 2015-09-16 18:33:04 +00:00
mav
a2e99dcb40 Fix fixed sense writing when passed more data then it can fit.
MFC after:	1 week
2015-09-16 17:56:24 +00:00
mav
1391356f66 Frontends don't need to set errors themselves. 2015-09-16 13:25:35 +00:00
mav
32d95a60aa Don't flap the HA link if sysctl is reset to the same value. 2015-09-16 09:59:05 +00:00
mav
b533e5b8f6 Make CAM log errors that make it wait.
Waiting can take minutes, and it would be good for user to know what is
going on.

MFC after:	2 weeks
2015-09-15 10:57:16 +00:00
mav
ff7a796ad3 Fix completion/error status reporting. 2015-09-15 10:42:53 +00:00
mav
6bfadefc07 Close potential race between datamove and HA failover. 2015-09-15 09:36:46 +00:00
markj
67708eb40c Preserve the device queue status before retrying a sense request in
chdone(). Previously, the retry could clear the CAM_DEV_QFRZN bit in the
CCB status, leaving the queue frozen.

Submitted by:	Jeff Miller <Jeff.Miller@isilon.com>
Reviewed by:	ken
MFC after:	2 weeks
Sponsored by:	EMC / Isilon Storage Division
2015-09-15 05:09:17 +00:00
mav
183453ee1f Implement data/status aggregation for secondary HA node.
For short read requests this reduces latency by 30%, reporting command
completion after two interlink roundtrips instead of full three.
2015-09-14 15:21:23 +00:00