config DST
	tristate "Distributed storage"
	depends on NET && CRYPTO && SYSFS && BLK_DEV
	select CONNECTOR
	---help---
	DST is a network block device storage, which can be used to organize
	exported storage on the remote nodes into the local block device.

	DST works on top of any network media and protocol; it is just a matter
	of configuration utility to understand the correct addresses. The most
	common example is TCP over IP, which allows to pass through firewalls and
	create remote backup storage in a different datacenter. DST requires
	single port to be enabled on the exporting node and outgoing connections
	on the local node.

	DST works with in-kernel client and server, which improves performance by
	eliminating unneded data copies and by not depending on the version
	of the external IO components. It requires userspace configuration utility
	though.

	DST uses transaction model, when each store has to be explicitly acked
	from the remote node to be considered as successfully written. There
	may be lots of in-flight transactions. When remote host does not ack
	the transaction it will be resent predefined number of times with specified
	timeouts between them. All those parameters are configurable. Transactions
	are marked as failed after all resends complete unsuccessfully; having
	long enough resend timeout and/or large number of resends allows not to
	return error to the higher (FS usually) layer in case of short network
	problems or remote node outages. In case of network RAID setup this means
	that storage will not degrade until transactions are marked as failed, and
	thus will not force checksum recalculation and data rebuild. In case of
	connection failure DST will try to reconnect to the remote node automatically.
	DST sends ping commands at idle time to detect if remote node is alive.

	Because of transactional model it is possible to use zero-copy sending
	without worry of data corruption (which in turn could be detected by the
	strong checksums though).

	DST may fully encrypt the data channel in case of untrusted channel and implement
	strong checksum of the transferred data. It is possible to configure algorithms
	and crypto keys; they should match on both sides of the network channel.
	Crypto processing does not introduce noticeble performance overhead, since DST
	uses configurable pool of threads to perform crypto processing.

	DST utilizes memory pool model of all its transaction allocations (it is the
	only additional allocation on the client) and server allocations (bio pools,
	while pages are allocated from the slab).

	At startup DST performs a simple negotiation with the export node to determine
	access permissions and size of the exported storage. It can be extended if
	new parameters should be autonegotiated.

	DST carries block IO flags in the protocol, which allows to transparently implement
	barriers and sync/flush operations. Those flags are used in the export node where
	IO against the local storage is performed, which means that sync write will be sync
	on the remote node too, which in turn improves data integrity and improved resistance
	to errors and data corruption during power outages or storage damages.

	Homepage: http://www.ioremap.net/projects/dst
	Userspace configuration utility and the latest releases: http://www.ioremap.net/archive/dst/

config DST_DEBUG
	bool "DST debug"
	depends on DST
	---help---
	This option will enable HEAVY debugging of the DST.
	Turn it on ONLY if you have to debug some really obscure problem.
