Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-backlight
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / staging / dst / Kconfig
CommitLineData
9539bec7
EP
1config DST
2 tristate "Distributed storage"
e3337201 3 depends on NET && CRYPTO && SYSFS && BLK_DEV
9539bec7 4 select CONNECTOR
9539bec7
EP
5 ---help---
6 DST is a network block device storage, which can be used to organize
e5f753a5 7 exported storage on the remote nodes into the local block device.
9539bec7 8
e5f753a5 9 DST works on top of any network media and protocol; it is just a matter
9539bec7 10 of configuration utility to understand the correct addresses. The most
e5f753a5
EP
11 common example is TCP over IP, which allows to pass through firewalls and
12 create remote backup storage in a different datacenter. DST requires
9539bec7
EP
13 single port to be enabled on the exporting node and outgoing connections
14 on the local node.
15
e5f753a5
EP
16 DST works with in-kernel client and server, which improves performance by
17 eliminating unneded data copies and by not depending on the version
9539bec7
EP
18 of the external IO components. It requires userspace configuration utility
19 though.
20
21 DST uses transaction model, when each store has to be explicitly acked
22 from the remote node to be considered as successfully written. There
23 may be lots of in-flight transactions. When remote host does not ack
24 the transaction it will be resent predefined number of times with specified
25 timeouts between them. All those parameters are configurable. Transactions
e5f753a5 26 are marked as failed after all resends complete unsuccessfully; having
9539bec7
EP
27 long enough resend timeout and/or large number of resends allows not to
28 return error to the higher (FS usually) layer in case of short network
29 problems or remote node outages. In case of network RAID setup this means
30 that storage will not degrade until transactions are marked as failed, and
31 thus will not force checksum recalculation and data rebuild. In case of
32 connection failure DST will try to reconnect to the remote node automatically.
33 DST sends ping commands at idle time to detect if remote node is alive.
34
35 Because of transactional model it is possible to use zero-copy sending
36 without worry of data corruption (which in turn could be detected by the
37 strong checksums though).
38
39 DST may fully encrypt the data channel in case of untrusted channel and implement
40 strong checksum of the transferred data. It is possible to configure algorithms
e5f753a5 41 and crypto keys; they should match on both sides of the network channel.
9539bec7
EP
42 Crypto processing does not introduce noticeble performance overhead, since DST
43 uses configurable pool of threads to perform crypto processing.
44
45 DST utilizes memory pool model of all its transaction allocations (it is the
46 only additional allocation on the client) and server allocations (bio pools,
47 while pages are allocated from the slab).
48
49 At startup DST performs a simple negotiation with the export node to determine
50 access permissions and size of the exported storage. It can be extended if
51 new parameters should be autonegotiated.
52
53 DST carries block IO flags in the protocol, which allows to transparently implement
54 barriers and sync/flush operations. Those flags are used in the export node where
55 IO against the local storage is performed, which means that sync write will be sync
56 on the remote node too, which in turn improves data integrity and improved resistance
57 to errors and data corruption during power outages or storage damages.
58
59 Homepage: http://www.ioremap.net/projects/dst
60 Userspace configuration utility and the latest releases: http://www.ioremap.net/archive/dst/
61
62config DST_DEBUG
63 bool "DST debug"
64 depends on DST
65 ---help---
e5f753a5 66 This option will enable HEAVY debugging of the DST.
9539bec7 67 Turn it on ONLY if you have to debug some really obscure problem.