#
313369 |
|
07-Feb-2017 |
mav |
MFC r312603: Add initial support for CTL module unloading.
It is only a first step and not perfect, but better then nothing. The main blocker is CAM target frontend, that can not be unloaded, since CAM does not have mechanism to unregister periph driver now.
|
#
312841 |
|
26-Jan-2017 |
mav |
MFC r311804: Rewrite CTL statistics in more simple and scalable way.
Instead of collecting statistics for each combination of ports and logical units, that consumed ~45KB per LU with present number of ports, collect separate statistics for every port and every logical unit separately, that consume only 176 bytes per each single LU/port. This reduces struct ctl_lun size down to just 6KB.
Also new IOCTL API/ABI does not hardcode number of LUs/ports, and should allow handling of very large quantities.
Old API is still enabled in stable branches for compatibility reasons.
|
#
288811 |
|
05-Oct-2015 |
mav |
MFC r288348: Umplement media load/eject support for removable devices.
In case of block backend eject really closes the backing store, while load tries to open it back. Failed store open is reported as no media.
|
#
288732 |
|
05-Oct-2015 |
mav |
MFC r287621: Reimplement CTL High Availability.
CTL HA functionality was originally implemented by Copan many years ago, but large part of the sources was never published. This change includes clean room implementation of the missing code and fixes for many bugs.
This code supports dual-node HA with ALUA in four modes: - Active/Unavailable without interlink between nodes; - Active/Standby with second node handling only basic LUN discovery and reservation, synchronizing with the first node through the interlink; - Active/Active with both nodes processing commands and accessing the backing storage, synchronizing with the first node through the interlink; - Active/Active with second node working as proxy, transfering all commands to the first node for execution through the interlink.
Unlike original Copan's implementation, depending on specific hardware, this code uses simple custom TCP-based protocol for interlink. It has no authentication, so it should never be enabled on public interfaces.
The code may still need some polishing, but generally it is functional.
Relnotes: yes Sponsored by: iXsystems, Inc.
|
#
288727 |
|
05-Oct-2015 |
mav |
MFC r287499: Move setting of media parameters inside open routines.
This is preparation for possibility to open/close media several times per LUN life cycle. While there, rename variables to reduce confusion. As additional bonus this allows to open read-only media, such as ZFS snapshots.
|
#
276237 |
|
26-Dec-2014 |
mav |
MFC r275920, r276127: Pass real optimal transfer size supported by backend.
For files and ZVOLs that is 1MB now, not 128K.
|
#
276179 |
|
24-Dec-2014 |
mav |
MFC r275865: Add configuration options to override physical and UNMAP blocks geometry.
While in most cases CTL should correctly fetch those values from backing storages, there are some initiators (like MS SQL), that may not like large physical block sizes, even if they are true. For such cases allow override fetched values with supported ones (like 4K).
|
#
275895 |
|
18-Dec-2014 |
mav |
MFC r275568: Count consecutive read requests as blocking in CTL for files and ZVOLs.
Technically read requests can be executed in any order or simultaneously since they are not changing any data. But ZFS prefetcher goes crasy when it receives consecutive requests from different threads. Since prefetcher works on level of separate blocks, instead of two consecutive 128K requests it may receive 32 8K requests in mixed order.
This patch is more workaround then a real fix, and it does not fix all of prefetcher problems, but it improves sequential read speed by 3-4x times in some configurations. On the other side it may hurt performance if some backing store has no prefetch, that is why it is disabled by default for raw devices.
|
#
274732 |
|
20-Nov-2014 |
mav |
MFC r274154, r274163: Add to CTL support for logical block provisioning threshold notifications.
For ZVOL-backed LUNs this allows to inform initiators if storage's used or available spaces get above/below the configured thresholds.
Sponsored by: iXsystems, Inc.
|
#
273978 |
|
02-Nov-2014 |
mav |
MFC r273075: Remove couple Copan's vendor-specific mode pages.
Those pages are highly system-/hardware-specific, the code is incomplete, and so they hardly can be useful for anybody else.
|
#
273315 |
|
20-Oct-2014 |
mav |
MFC r272911: Make ctld start even if some LUNs are unable to open backing storage.
Such LUNs will be visible to initiators, but return "not ready" status on media access commands. If backing storage become available later, `ctladm modify ...` or `service ctld reload` can trigger its reopen.
|
#
273311 |
|
20-Oct-2014 |
mav |
MFC r272734: Add support for WRITE ATOMIC (16) command and report SBC-4 compliance.
Atomic writes are only supported for ZVOLs in "dev" mode. In other cases atomicity can not be guarantied and so the command is blocked.
|
#
268678 |
|
15-Jul-2014 |
mav |
MFC r268280: Make options KPI more generic to allow it to be used for ports too, not only for LUNs.
|
#
268143 |
|
02-Jul-2014 |
mav |
MFC r267481, r267952: Implement small KPI to access LUN options instead doing it by hands.
|
#
265634 |
|
08-May-2014 |
mav |
MFC r264274, r264279, r264283, r264296, r264297: Add support for SCSI UNMAP commands to CTL.
This patch adds support for three new SCSI commands: UNMAP, WRITE SAME(10) and WRITE SAME(16). WRITE SAME commands support both normal write mode and UNMAP flag. To properly report UNMAP capabilities this patch also adds support for reporting two new VPD pages: Block limits and Logical Block Provisioning.
UNMAP support can be enabled per-LUN by adding "-o unmap=on" to `ctladm create` command line or "option unmap on" to lun sections of /etc/ctl.conf.
At this moment UNMAP supported for ramdisks and device-backed block LUNs. It was tested to work great with ZFS ZVOLs. For file-backed LUNs UNMAP support is unfortunately missing due to absence of respective VFS KPI.
Sponsored by: iXsystems, Inc
|
#
264727 |
|
21-Apr-2014 |
mav |
MFC r264191: Report stripe size and offset of the backing device in READ CAPACITY (16) as physical sector size and offset.
|
#
288732 |
|
05-Oct-2015 |
mav |
MFC r287621: Reimplement CTL High Availability.
CTL HA functionality was originally implemented by Copan many years ago, but large part of the sources was never published. This change includes clean room implementation of the missing code and fixes for many bugs.
This code supports dual-node HA with ALUA in four modes: - Active/Unavailable without interlink between nodes; - Active/Standby with second node handling only basic LUN discovery and reservation, synchronizing with the first node through the interlink; - Active/Active with both nodes processing commands and accessing the backing storage, synchronizing with the first node through the interlink; - Active/Active with second node working as proxy, transfering all commands to the first node for execution through the interlink.
Unlike original Copan's implementation, depending on specific hardware, this code uses simple custom TCP-based protocol for interlink. It has no authentication, so it should never be enabled on public interfaces.
The code may still need some polishing, but generally it is functional.
Relnotes: yes Sponsored by: iXsystems, Inc.
|
#
288727 |
|
05-Oct-2015 |
mav |
MFC r287499: Move setting of media parameters inside open routines.
This is preparation for possibility to open/close media several times per LUN life cycle. While there, rename variables to reduce confusion. As additional bonus this allows to open read-only media, such as ZFS snapshots.
|
#
276237 |
|
26-Dec-2014 |
mav |
MFC r275920, r276127: Pass real optimal transfer size supported by backend.
For files and ZVOLs that is 1MB now, not 128K.
|
#
276179 |
|
24-Dec-2014 |
mav |
MFC r275865: Add configuration options to override physical and UNMAP blocks geometry.
While in most cases CTL should correctly fetch those values from backing storages, there are some initiators (like MS SQL), that may not like large physical block sizes, even if they are true. For such cases allow override fetched values with supported ones (like 4K).
|
#
275895 |
|
18-Dec-2014 |
mav |
MFC r275568: Count consecutive read requests as blocking in CTL for files and ZVOLs.
Technically read requests can be executed in any order or simultaneously since they are not changing any data. But ZFS prefetcher goes crasy when it receives consecutive requests from different threads. Since prefetcher works on level of separate blocks, instead of two consecutive 128K requests it may receive 32 8K requests in mixed order.
This patch is more workaround then a real fix, and it does not fix all of prefetcher problems, but it improves sequential read speed by 3-4x times in some configurations. On the other side it may hurt performance if some backing store has no prefetch, that is why it is disabled by default for raw devices.
|
#
274732 |
|
20-Nov-2014 |
mav |
MFC r274154, r274163: Add to CTL support for logical block provisioning threshold notifications.
For ZVOL-backed LUNs this allows to inform initiators if storage's used or available spaces get above/below the configured thresholds.
Sponsored by: iXsystems, Inc.
|
#
273978 |
|
02-Nov-2014 |
mav |
MFC r273075: Remove couple Copan's vendor-specific mode pages.
Those pages are highly system-/hardware-specific, the code is incomplete, and so they hardly can be useful for anybody else.
|
#
273315 |
|
20-Oct-2014 |
mav |
MFC r272911: Make ctld start even if some LUNs are unable to open backing storage.
Such LUNs will be visible to initiators, but return "not ready" status on media access commands. If backing storage become available later, `ctladm modify ...` or `service ctld reload` can trigger its reopen.
|
#
273311 |
|
20-Oct-2014 |
mav |
MFC r272734: Add support for WRITE ATOMIC (16) command and report SBC-4 compliance.
Atomic writes are only supported for ZVOLs in "dev" mode. In other cases atomicity can not be guarantied and so the command is blocked.
|
#
268678 |
|
15-Jul-2014 |
mav |
MFC r268280: Make options KPI more generic to allow it to be used for ports too, not only for LUNs.
|
#
268143 |
|
02-Jul-2014 |
mav |
MFC r267481, r267952: Implement small KPI to access LUN options instead doing it by hands.
|
#
265634 |
|
08-May-2014 |
mav |
MFC r264274, r264279, r264283, r264296, r264297: Add support for SCSI UNMAP commands to CTL.
This patch adds support for three new SCSI commands: UNMAP, WRITE SAME(10) and WRITE SAME(16). WRITE SAME commands support both normal write mode and UNMAP flag. To properly report UNMAP capabilities this patch also adds support for reporting two new VPD pages: Block limits and Logical Block Provisioning.
UNMAP support can be enabled per-LUN by adding "-o unmap=on" to `ctladm create` command line or "option unmap on" to lun sections of /etc/ctl.conf.
At this moment UNMAP supported for ramdisks and device-backed block LUNs. It was tested to work great with ZFS ZVOLs. For file-backed LUNs UNMAP support is unfortunately missing due to absence of respective VFS KPI.
Sponsored by: iXsystems, Inc
|
#
264727 |
|
21-Apr-2014 |
mav |
MFC r264191: Report stripe size and offset of the backing device in READ CAPACITY (16) as physical sector size and offset.
|