Merge patch series "riscv: Introduce KASLR"
[platform/kernel/linux-rpi.git] / drivers / md / Kconfig
1 # SPDX-License-Identifier: GPL-2.0-only
2 #
3 # Block device driver configuration
4 #
5
6 menuconfig MD
7         bool "Multiple devices driver support (RAID and LVM)"
8         depends on BLOCK
9         help
10           Support multiple physical spindles through a single logical device.
11           Required for RAID and logical volume management.
12
13 if MD
14
15 config BLK_DEV_MD
16         tristate "RAID support"
17         select BLOCK_HOLDER_DEPRECATED if SYSFS
18         select BUFFER_HEAD
19         # BLOCK_LEGACY_AUTOLOAD requirement should be removed
20         # after relevant mdadm enhancements - to make "names=yes"
21         # the default - are widely available.
22         select BLOCK_LEGACY_AUTOLOAD
23         help
24           This driver lets you combine several hard disk partitions into one
25           logical block device. This can be used to simply append one
26           partition to another one or to combine several redundant hard disks
27           into a RAID1/4/5 device so as to provide protection against hard
28           disk failures. This is called "Software RAID" since the combining of
29           the partitions is done by the kernel. "Hardware RAID" means that the
30           combining is done by a dedicated controller; if you have such a
31           controller, you do not need to say Y here.
32
33           More information about Software RAID on Linux is contained in the
34           Software RAID mini-HOWTO, available from
35           <https://www.tldp.org/docs.html#howto>. There you will also learn
36           where to get the supporting user space utilities raidtools.
37
38           If unsure, say N.
39
40 config MD_AUTODETECT
41         bool "Autodetect RAID arrays during kernel boot"
42         depends on BLK_DEV_MD=y
43         default y
44         help
45           If you say Y here, then the kernel will try to autodetect raid
46           arrays as part of its boot process.
47
48           If you don't use raid and say Y, this autodetection can cause
49           a several-second delay in the boot time due to various
50           synchronisation steps that are part of this step.
51
52           If unsure, say Y.
53
54 config MD_BITMAP_FILE
55         bool "MD bitmap file support (deprecated)"
56         default y
57         help
58           If you say Y here, support for write intent bitmaps in files on an
59           external file system is enabled.  This is an alternative to the internal
60           bitmaps near the MD superblock, and very problematic code that abuses
61           various kernel APIs and can only work with files on a file system not
62           actually sitting on the MD device.
63
64 config MD_LINEAR
65         tristate "Linear (append) mode (deprecated)"
66         depends on BLK_DEV_MD
67         help
68           If you say Y here, then your multiple devices driver will be able to
69           use the so-called linear mode, i.e. it will combine the hard disk
70           partitions by simply appending one to the other.
71
72           To compile this as a module, choose M here: the module
73           will be called linear.
74
75           If unsure, say Y.
76
77 config MD_RAID0
78         tristate "RAID-0 (striping) mode"
79         depends on BLK_DEV_MD
80         help
81           If you say Y here, then your multiple devices driver will be able to
82           use the so-called raid0 mode, i.e. it will combine the hard disk
83           partitions into one logical device in such a fashion as to fill them
84           up evenly, one chunk here and one chunk there. This will increase
85           the throughput rate if the partitions reside on distinct disks.
86
87           Information about Software RAID on Linux is contained in the
88           Software-RAID mini-HOWTO, available from
89           <https://www.tldp.org/docs.html#howto>. There you will also
90           learn where to get the supporting user space utilities raidtools.
91
92           To compile this as a module, choose M here: the module
93           will be called raid0.
94
95           If unsure, say Y.
96
97 config MD_RAID1
98         tristate "RAID-1 (mirroring) mode"
99         depends on BLK_DEV_MD
100         help
101           A RAID-1 set consists of several disk drives which are exact copies
102           of each other.  In the event of a mirror failure, the RAID driver
103           will continue to use the operational mirrors in the set, providing
104           an error free MD (multiple device) to the higher levels of the
105           kernel.  In a set with N drives, the available space is the capacity
106           of a single drive, and the set protects against a failure of (N - 1)
107           drives.
108
109           Information about Software RAID on Linux is contained in the
110           Software-RAID mini-HOWTO, available from
111           <https://www.tldp.org/docs.html#howto>.  There you will also
112           learn where to get the supporting user space utilities raidtools.
113
114           If you want to use such a RAID-1 set, say Y.  To compile this code
115           as a module, choose M here: the module will be called raid1.
116
117           If unsure, say Y.
118
119 config MD_RAID10
120         tristate "RAID-10 (mirrored striping) mode"
121         depends on BLK_DEV_MD
122         help
123           RAID-10 provides a combination of striping (RAID-0) and
124           mirroring (RAID-1) with easier configuration and more flexible
125           layout.
126           Unlike RAID-0, but like RAID-1, RAID-10 requires all devices to
127           be the same size (or at least, only as much as the smallest device
128           will be used).
129           RAID-10 provides a variety of layouts that provide different levels
130           of redundancy and performance.
131
132           RAID-10 requires mdadm-1.7.0 or later, available at:
133
134           https://www.kernel.org/pub/linux/utils/raid/mdadm/
135
136           If unsure, say Y.
137
138 config MD_RAID456
139         tristate "RAID-4/RAID-5/RAID-6 mode"
140         depends on BLK_DEV_MD
141         select RAID6_PQ
142         select LIBCRC32C
143         select ASYNC_MEMCPY
144         select ASYNC_XOR
145         select ASYNC_PQ
146         select ASYNC_RAID6_RECOV
147         help
148           A RAID-5 set of N drives with a capacity of C MB per drive provides
149           the capacity of C * (N - 1) MB, and protects against a failure
150           of a single drive. For a given sector (row) number, (N - 1) drives
151           contain data sectors, and one drive contains the parity protection.
152           For a RAID-4 set, the parity blocks are present on a single drive,
153           while a RAID-5 set distributes the parity across the drives in one
154           of the available parity distribution methods.
155
156           A RAID-6 set of N drives with a capacity of C MB per drive
157           provides the capacity of C * (N - 2) MB, and protects
158           against a failure of any two drives. For a given sector
159           (row) number, (N - 2) drives contain data sectors, and two
160           drives contains two independent redundancy syndromes.  Like
161           RAID-5, RAID-6 distributes the syndromes across the drives
162           in one of the available parity distribution methods.
163
164           Information about Software RAID on Linux is contained in the
165           Software-RAID mini-HOWTO, available from
166           <https://www.tldp.org/docs.html#howto>. There you will also
167           learn where to get the supporting user space utilities raidtools.
168
169           If you want to use such a RAID-4/RAID-5/RAID-6 set, say Y.  To
170           compile this code as a module, choose M here: the module
171           will be called raid456.
172
173           If unsure, say Y.
174
175 config MD_MULTIPATH
176         tristate "Multipath I/O support (deprecated)"
177         depends on BLK_DEV_MD
178         help
179           MD_MULTIPATH provides a simple multi-path personality for use
180           the MD framework.  It is not under active development.  New
181           projects should consider using DM_MULTIPATH which has more
182           features and more testing.
183
184           If unsure, say N.
185
186 config MD_FAULTY
187         tristate "Faulty test module for MD (deprecated)"
188         depends on BLK_DEV_MD
189         help
190           The "faulty" module allows for a block device that occasionally returns
191           read or write errors.  It is useful for testing.
192
193           In unsure, say N.
194
195
196 config MD_CLUSTER
197         tristate "Cluster Support for MD"
198         depends on BLK_DEV_MD
199         depends on DLM
200         default n
201         help
202         Clustering support for MD devices. This enables locking and
203         synchronization across multiple systems on the cluster, so all
204         nodes in the cluster can access the MD devices simultaneously.
205
206         This brings the redundancy (and uptime) of RAID levels across the
207         nodes of the cluster. Currently, it can work with raid1 and raid10
208         (limited support).
209
210         If unsure, say N.
211
212 source "drivers/md/bcache/Kconfig"
213
214 config BLK_DEV_DM_BUILTIN
215         bool
216
217 config BLK_DEV_DM
218         tristate "Device mapper support"
219         select BLOCK_HOLDER_DEPRECATED if SYSFS
220         select BLK_DEV_DM_BUILTIN
221         select BLK_MQ_STACKING
222         depends on DAX || DAX=n
223         help
224           Device-mapper is a low level volume manager.  It works by allowing
225           people to specify mappings for ranges of logical sectors.  Various
226           mapping types are available, in addition people may write their own
227           modules containing custom mappings if they wish.
228
229           Higher level volume managers such as LVM2 use this driver.
230
231           To compile this as a module, choose M here: the module will be
232           called dm-mod.
233
234           If unsure, say N.
235
236 config DM_DEBUG
237         bool "Device mapper debugging support"
238         depends on BLK_DEV_DM
239         help
240           Enable this for messages that may help debug device-mapper problems.
241
242           If unsure, say N.
243
244 config DM_BUFIO
245        tristate
246        depends on BLK_DEV_DM
247         help
248          This interface allows you to do buffered I/O on a device and acts
249          as a cache, holding recently-read blocks in memory and performing
250          delayed writes.
251
252 config DM_DEBUG_BLOCK_MANAGER_LOCKING
253        bool "Block manager locking"
254        depends on DM_BUFIO
255         help
256          Block manager locking can catch various metadata corruption issues.
257
258          If unsure, say N.
259
260 config DM_DEBUG_BLOCK_STACK_TRACING
261        bool "Keep stack trace of persistent data block lock holders"
262        depends on STACKTRACE_SUPPORT && DM_DEBUG_BLOCK_MANAGER_LOCKING
263        select STACKTRACE
264         help
265          Enable this for messages that may help debug problems with the
266          block manager locking used by thin provisioning and caching.
267
268          If unsure, say N.
269
270 config DM_BIO_PRISON
271        tristate
272        depends on BLK_DEV_DM
273         help
274          Some bio locking schemes used by other device-mapper targets
275          including thin provisioning.
276
277 source "drivers/md/persistent-data/Kconfig"
278
279 config DM_UNSTRIPED
280        tristate "Unstriped target"
281        depends on BLK_DEV_DM
282         help
283           Unstripes I/O so it is issued solely on a single drive in a HW
284           RAID0 or dm-striped target.
285
286 config DM_CRYPT
287         tristate "Crypt target support"
288         depends on BLK_DEV_DM
289         depends on (ENCRYPTED_KEYS || ENCRYPTED_KEYS=n)
290         depends on (TRUSTED_KEYS || TRUSTED_KEYS=n)
291         select CRYPTO
292         select CRYPTO_CBC
293         select CRYPTO_ESSIV
294         help
295           This device-mapper target allows you to create a device that
296           transparently encrypts the data on it. You'll need to activate
297           the ciphers you're going to use in the cryptoapi configuration.
298
299           For further information on dm-crypt and userspace tools see:
300           <https://gitlab.com/cryptsetup/cryptsetup/wikis/DMCrypt>
301
302           To compile this code as a module, choose M here: the module will
303           be called dm-crypt.
304
305           If unsure, say N.
306
307 config DM_SNAPSHOT
308        tristate "Snapshot target"
309        depends on BLK_DEV_DM
310        select DM_BUFIO
311         help
312          Allow volume managers to take writable snapshots of a device.
313
314 config DM_THIN_PROVISIONING
315        tristate "Thin provisioning target"
316        depends on BLK_DEV_DM
317        select DM_PERSISTENT_DATA
318        select DM_BIO_PRISON
319         help
320          Provides thin provisioning and snapshots that share a data store.
321
322 config DM_CACHE
323        tristate "Cache target (EXPERIMENTAL)"
324        depends on BLK_DEV_DM
325        default n
326        select DM_PERSISTENT_DATA
327        select DM_BIO_PRISON
328         help
329          dm-cache attempts to improve performance of a block device by
330          moving frequently used data to a smaller, higher performance
331          device.  Different 'policy' plugins can be used to change the
332          algorithms used to select which blocks are promoted, demoted,
333          cleaned etc.  It supports writeback and writethrough modes.
334
335 config DM_CACHE_SMQ
336        tristate "Stochastic MQ Cache Policy (EXPERIMENTAL)"
337        depends on DM_CACHE
338        default y
339         help
340          A cache policy that uses a multiqueue ordered by recent hits
341          to select which blocks should be promoted and demoted.
342          This is meant to be a general purpose policy.  It prioritises
343          reads over writes.  This SMQ policy (vs MQ) offers the promise
344          of less memory utilization, improved performance and increased
345          adaptability in the face of changing workloads.
346
347 config DM_WRITECACHE
348         tristate "Writecache target"
349         depends on BLK_DEV_DM
350         help
351            The writecache target caches writes on persistent memory or SSD.
352            It is intended for databases or other programs that need extremely
353            low commit latency.
354
355            The writecache target doesn't cache reads because reads are supposed
356            to be cached in standard RAM.
357
358 config DM_EBS
359         tristate "Emulated block size target (EXPERIMENTAL)"
360         depends on BLK_DEV_DM && !HIGHMEM
361         select DM_BUFIO
362         help
363           dm-ebs emulates smaller logical block size on backing devices
364           with larger ones (e.g. 512 byte sectors on 4K native disks).
365
366 config DM_ERA
367        tristate "Era target (EXPERIMENTAL)"
368        depends on BLK_DEV_DM
369        default n
370        select DM_PERSISTENT_DATA
371        select DM_BIO_PRISON
372         help
373          dm-era tracks which parts of a block device are written to
374          over time.  Useful for maintaining cache coherency when using
375          vendor snapshots.
376
377 config DM_CLONE
378        tristate "Clone target (EXPERIMENTAL)"
379        depends on BLK_DEV_DM
380        default n
381        select DM_PERSISTENT_DATA
382         help
383          dm-clone produces a one-to-one copy of an existing, read-only source
384          device into a writable destination device. The cloned device is
385          visible/mountable immediately and the copy of the source device to the
386          destination device happens in the background, in parallel with user
387          I/O.
388
389          If unsure, say N.
390
391 config DM_MIRROR
392        tristate "Mirror target"
393        depends on BLK_DEV_DM
394         help
395          Allow volume managers to mirror logical volumes, also
396          needed for live data migration tools such as 'pvmove'.
397
398 config DM_LOG_USERSPACE
399         tristate "Mirror userspace logging"
400         depends on DM_MIRROR && NET
401         select CONNECTOR
402         help
403           The userspace logging module provides a mechanism for
404           relaying the dm-dirty-log API to userspace.  Log designs
405           which are more suited to userspace implementation (e.g.
406           shared storage logs) or experimental logs can be implemented
407           by leveraging this framework.
408
409 config DM_RAID
410        tristate "RAID 1/4/5/6/10 target"
411        depends on BLK_DEV_DM
412        select MD_RAID0
413        select MD_RAID1
414        select MD_RAID10
415        select MD_RAID456
416        select BLK_DEV_MD
417         help
418          A dm target that supports RAID1, RAID10, RAID4, RAID5 and RAID6 mappings
419
420          A RAID-5 set of N drives with a capacity of C MB per drive provides
421          the capacity of C * (N - 1) MB, and protects against a failure
422          of a single drive. For a given sector (row) number, (N - 1) drives
423          contain data sectors, and one drive contains the parity protection.
424          For a RAID-4 set, the parity blocks are present on a single drive,
425          while a RAID-5 set distributes the parity across the drives in one
426          of the available parity distribution methods.
427
428          A RAID-6 set of N drives with a capacity of C MB per drive
429          provides the capacity of C * (N - 2) MB, and protects
430          against a failure of any two drives. For a given sector
431          (row) number, (N - 2) drives contain data sectors, and two
432          drives contains two independent redundancy syndromes.  Like
433          RAID-5, RAID-6 distributes the syndromes across the drives
434          in one of the available parity distribution methods.
435
436 config DM_ZERO
437         tristate "Zero target"
438         depends on BLK_DEV_DM
439         help
440           A target that discards writes, and returns all zeroes for
441           reads.  Useful in some recovery situations.
442
443 config DM_MULTIPATH
444         tristate "Multipath target"
445         depends on BLK_DEV_DM
446         # nasty syntax but means make DM_MULTIPATH independent
447         # of SCSI_DH if the latter isn't defined but if
448         # it is, DM_MULTIPATH must depend on it.  We get a build
449         # error if SCSI_DH=m and DM_MULTIPATH=y
450         depends on !SCSI_DH || SCSI
451         help
452           Allow volume managers to support multipath hardware.
453
454 config DM_MULTIPATH_QL
455         tristate "I/O Path Selector based on the number of in-flight I/Os"
456         depends on DM_MULTIPATH
457         help
458           This path selector is a dynamic load balancer which selects
459           the path with the least number of in-flight I/Os.
460
461           If unsure, say N.
462
463 config DM_MULTIPATH_ST
464         tristate "I/O Path Selector based on the service time"
465         depends on DM_MULTIPATH
466         help
467           This path selector is a dynamic load balancer which selects
468           the path expected to complete the incoming I/O in the shortest
469           time.
470
471           If unsure, say N.
472
473 config DM_MULTIPATH_HST
474         tristate "I/O Path Selector based on historical service time"
475         depends on DM_MULTIPATH
476         help
477           This path selector is a dynamic load balancer which selects
478           the path expected to complete the incoming I/O in the shortest
479           time by comparing estimated service time (based on historical
480           service time).
481
482           If unsure, say N.
483
484 config DM_MULTIPATH_IOA
485         tristate "I/O Path Selector based on CPU submission"
486         depends on DM_MULTIPATH
487         help
488           This path selector selects the path based on the CPU the IO is
489           executed on and the CPU to path mapping setup at path addition time.
490
491           If unsure, say N.
492
493 config DM_DELAY
494         tristate "I/O delaying target"
495         depends on BLK_DEV_DM
496         help
497         A target that delays reads and/or writes and can send
498         them to different devices.  Useful for testing.
499
500         If unsure, say N.
501
502 config DM_DUST
503         tristate "Bad sector simulation target"
504         depends on BLK_DEV_DM
505         help
506         A target that simulates bad sector behavior.
507         Useful for testing.
508
509         If unsure, say N.
510
511 config DM_INIT
512         bool "DM \"dm-mod.create=\" parameter support"
513         depends on BLK_DEV_DM=y
514         help
515         Enable "dm-mod.create=" parameter to create mapped devices at init time.
516         This option is useful to allow mounting rootfs without requiring an
517         initramfs.
518         See Documentation/admin-guide/device-mapper/dm-init.rst for dm-mod.create="..."
519         format.
520
521         If unsure, say N.
522
523 config DM_UEVENT
524         bool "DM uevents"
525         depends on BLK_DEV_DM
526         help
527         Generate udev events for DM events.
528
529 config DM_FLAKEY
530        tristate "Flakey target"
531        depends on BLK_DEV_DM
532         help
533          A target that intermittently fails I/O for debugging purposes.
534
535 config DM_VERITY
536         tristate "Verity target support"
537         depends on BLK_DEV_DM
538         select CRYPTO
539         select CRYPTO_HASH
540         select DM_BUFIO
541         help
542           This device-mapper target creates a read-only device that
543           transparently validates the data on one underlying device against
544           a pre-generated tree of cryptographic checksums stored on a second
545           device.
546
547           You'll need to activate the digests you're going to use in the
548           cryptoapi configuration.
549
550           To compile this code as a module, choose M here: the module will
551           be called dm-verity.
552
553           If unsure, say N.
554
555 config DM_VERITY_VERIFY_ROOTHASH_SIG
556         def_bool n
557         bool "Verity data device root hash signature verification support"
558         depends on DM_VERITY
559         select SYSTEM_DATA_VERIFICATION
560         help
561           Add ability for dm-verity device to be validated if the
562           pre-generated tree of cryptographic checksums passed has a pkcs#7
563           signature file that can validate the roothash of the tree.
564
565           By default, rely on the builtin trusted keyring.
566
567           If unsure, say N.
568
569 config DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING
570         bool "Verity data device root hash signature verification with secondary keyring"
571         depends on DM_VERITY_VERIFY_ROOTHASH_SIG
572         depends on SECONDARY_TRUSTED_KEYRING
573         help
574           Rely on the secondary trusted keyring to verify dm-verity signatures.
575
576           If unsure, say N.
577
578 config DM_VERITY_FEC
579         bool "Verity forward error correction support"
580         depends on DM_VERITY
581         select REED_SOLOMON
582         select REED_SOLOMON_DEC8
583         help
584           Add forward error correction support to dm-verity. This option
585           makes it possible to use pre-generated error correction data to
586           recover from corrupted blocks.
587
588           If unsure, say N.
589
590 config DM_SWITCH
591         tristate "Switch target support (EXPERIMENTAL)"
592         depends on BLK_DEV_DM
593         help
594           This device-mapper target creates a device that supports an arbitrary
595           mapping of fixed-size regions of I/O across a fixed set of paths.
596           The path used for any specific region can be switched dynamically
597           by sending the target a message.
598
599           To compile this code as a module, choose M here: the module will
600           be called dm-switch.
601
602           If unsure, say N.
603
604 config DM_LOG_WRITES
605         tristate "Log writes target support"
606         depends on BLK_DEV_DM
607         help
608           This device-mapper target takes two devices, one device to use
609           normally, one to log all write operations done to the first device.
610           This is for use by file system developers wishing to verify that
611           their fs is writing a consistent file system at all times by allowing
612           them to replay the log in a variety of ways and to check the
613           contents.
614
615           To compile this code as a module, choose M here: the module will
616           be called dm-log-writes.
617
618           If unsure, say N.
619
620 config DM_INTEGRITY
621         tristate "Integrity target support"
622         depends on BLK_DEV_DM
623         select BLK_DEV_INTEGRITY
624         select DM_BUFIO
625         select CRYPTO
626         select CRYPTO_SKCIPHER
627         select ASYNC_XOR
628         select DM_AUDIT if AUDIT
629         help
630           This device-mapper target emulates a block device that has
631           additional per-sector tags that can be used for storing
632           integrity information.
633
634           This integrity target is used with the dm-crypt target to
635           provide authenticated disk encryption or it can be used
636           standalone.
637
638           To compile this code as a module, choose M here: the module will
639           be called dm-integrity.
640
641 config DM_ZONED
642         tristate "Drive-managed zoned block device target support"
643         depends on BLK_DEV_DM
644         depends on BLK_DEV_ZONED
645         select CRC32
646         help
647           This device-mapper target takes a host-managed or host-aware zoned
648           block device and exposes most of its capacity as a regular block
649           device (drive-managed zoned block device) without any write
650           constraints. This is mainly intended for use with file systems that
651           do not natively support zoned block devices but still want to
652           benefit from the increased capacity offered by SMR disks. Other uses
653           by applications using raw block devices (for example object stores)
654           are also possible.
655
656           To compile this code as a module, choose M here: the module will
657           be called dm-zoned.
658
659           If unsure, say N.
660
661 config DM_AUDIT
662         bool "DM audit events"
663         depends on AUDIT
664         help
665           Generate audit events for device-mapper.
666
667           Enables audit logging of several security relevant events in the
668           particular device-mapper targets, especially the integrity target.
669
670 endif # MD