]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/commit
MFC r287621: Reimplement CTL High Availability.
authormav <mav@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Mon, 5 Oct 2015 08:57:16 +0000 (08:57 +0000)
committermav <mav@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Mon, 5 Oct 2015 08:57:16 +0000 (08:57 +0000)
commitddb28818e64c2e17091a7bc8fb363de7aa5f8e62
treea1a6cce50856a05f5b36bed04631d5bd16485556
parent64b039f74455ffe7c8bc09cef1c104bf60127431
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.

git-svn-id: svn://svn.freebsd.org/base/stable/10@288732 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
22 files changed:
sys/cam/ctl/README.ctl.txt
sys/cam/ctl/ctl.c
sys/cam/ctl/ctl.h
sys/cam/ctl/ctl_backend.h
sys/cam/ctl/ctl_backend_block.c
sys/cam/ctl/ctl_backend_ramdisk.c
sys/cam/ctl/ctl_cmd_table.c
sys/cam/ctl/ctl_error.c
sys/cam/ctl/ctl_error.h
sys/cam/ctl/ctl_frontend.c
sys/cam/ctl/ctl_frontend_cam_sim.c
sys/cam/ctl/ctl_frontend_ioctl.c
sys/cam/ctl/ctl_frontend_iscsi.c
sys/cam/ctl/ctl_ha.c [new file with mode: 0644]
sys/cam/ctl/ctl_ha.h
sys/cam/ctl/ctl_io.h
sys/cam/ctl/ctl_private.h
sys/cam/ctl/ctl_tpc.c
sys/cam/ctl/ctl_tpc_local.c
sys/cam/ctl/scsi_ctl.c
sys/conf/files
sys/modules/ctl/Makefile