1# SPDX-License-Identifier: GPL-2.0-only 2# 3# Block device driver configuration 4# 5 6menuconfig 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 13if MD 14 15config 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 40config 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 54config 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 64config 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 77config 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 97config 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 119config 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 138config 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 175config 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 186config 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 196config 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 212source "drivers/md/bcache/Kconfig" 213 214config BLK_DEV_DM_BUILTIN 215 bool 216 217config 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 236config 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 244config 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 252config 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 260config 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 270config 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 277source "drivers/md/persistent-data/Kconfig" 278 279config 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 286config 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 307config DM_DEFAULT_KEY 308 tristate "Default-key target support" 309 depends on BLK_DEV_DM 310 depends on BLK_INLINE_ENCRYPTION 311 # dm-default-key doesn't require -o inlinecrypt, but it does currently 312 # rely on the inline encryption hooks being built into the kernel. 313 depends on FS_ENCRYPTION_INLINE_CRYPT 314 help 315 This device-mapper target allows you to create a device that 316 assigns a default encryption key to bios that aren't for the 317 contents of an encrypted file. 318 319 This ensures that all blocks on-disk will be encrypted with 320 some key, without the performance hit of file contents being 321 encrypted twice when fscrypt (File-Based Encryption) is used. 322 323 It is only appropriate to use dm-default-key when key 324 configuration is tightly controlled, like it is in Android, 325 such that all fscrypt keys are at least as hard to compromise 326 as the default key. 327 328config DM_SNAPSHOT 329 tristate "Snapshot target" 330 depends on BLK_DEV_DM 331 select DM_BUFIO 332 help 333 Allow volume managers to take writable snapshots of a device. 334 335config DM_THIN_PROVISIONING 336 tristate "Thin provisioning target" 337 depends on BLK_DEV_DM 338 select DM_PERSISTENT_DATA 339 select DM_BIO_PRISON 340 help 341 Provides thin provisioning and snapshots that share a data store. 342 343config DM_CACHE 344 tristate "Cache target (EXPERIMENTAL)" 345 depends on BLK_DEV_DM 346 default n 347 select DM_PERSISTENT_DATA 348 select DM_BIO_PRISON 349 help 350 dm-cache attempts to improve performance of a block device by 351 moving frequently used data to a smaller, higher performance 352 device. Different 'policy' plugins can be used to change the 353 algorithms used to select which blocks are promoted, demoted, 354 cleaned etc. It supports writeback and writethrough modes. 355 356config DM_CACHE_SMQ 357 tristate "Stochastic MQ Cache Policy (EXPERIMENTAL)" 358 depends on DM_CACHE 359 default y 360 help 361 A cache policy that uses a multiqueue ordered by recent hits 362 to select which blocks should be promoted and demoted. 363 This is meant to be a general purpose policy. It prioritises 364 reads over writes. This SMQ policy (vs MQ) offers the promise 365 of less memory utilization, improved performance and increased 366 adaptability in the face of changing workloads. 367 368config DM_WRITECACHE 369 tristate "Writecache target" 370 depends on BLK_DEV_DM 371 help 372 The writecache target caches writes on persistent memory or SSD. 373 It is intended for databases or other programs that need extremely 374 low commit latency. 375 376 The writecache target doesn't cache reads because reads are supposed 377 to be cached in standard RAM. 378 379config DM_EBS 380 tristate "Emulated block size target (EXPERIMENTAL)" 381 depends on BLK_DEV_DM && !HIGHMEM 382 select DM_BUFIO 383 help 384 dm-ebs emulates smaller logical block size on backing devices 385 with larger ones (e.g. 512 byte sectors on 4K native disks). 386 387config DM_ERA 388 tristate "Era target (EXPERIMENTAL)" 389 depends on BLK_DEV_DM 390 default n 391 select DM_PERSISTENT_DATA 392 select DM_BIO_PRISON 393 help 394 dm-era tracks which parts of a block device are written to 395 over time. Useful for maintaining cache coherency when using 396 vendor snapshots. 397 398config DM_CLONE 399 tristate "Clone target (EXPERIMENTAL)" 400 depends on BLK_DEV_DM 401 default n 402 select DM_PERSISTENT_DATA 403 help 404 dm-clone produces a one-to-one copy of an existing, read-only source 405 device into a writable destination device. The cloned device is 406 visible/mountable immediately and the copy of the source device to the 407 destination device happens in the background, in parallel with user 408 I/O. 409 410 If unsure, say N. 411 412config DM_MIRROR 413 tristate "Mirror target" 414 depends on BLK_DEV_DM 415 help 416 Allow volume managers to mirror logical volumes, also 417 needed for live data migration tools such as 'pvmove'. 418 419config DM_LOG_USERSPACE 420 tristate "Mirror userspace logging" 421 depends on DM_MIRROR && NET 422 select CONNECTOR 423 help 424 The userspace logging module provides a mechanism for 425 relaying the dm-dirty-log API to userspace. Log designs 426 which are more suited to userspace implementation (e.g. 427 shared storage logs) or experimental logs can be implemented 428 by leveraging this framework. 429 430config DM_RAID 431 tristate "RAID 1/4/5/6/10 target" 432 depends on BLK_DEV_DM 433 select MD_RAID0 434 select MD_RAID1 435 select MD_RAID10 436 select MD_RAID456 437 select BLK_DEV_MD 438 help 439 A dm target that supports RAID1, RAID10, RAID4, RAID5 and RAID6 mappings 440 441 A RAID-5 set of N drives with a capacity of C MB per drive provides 442 the capacity of C * (N - 1) MB, and protects against a failure 443 of a single drive. For a given sector (row) number, (N - 1) drives 444 contain data sectors, and one drive contains the parity protection. 445 For a RAID-4 set, the parity blocks are present on a single drive, 446 while a RAID-5 set distributes the parity across the drives in one 447 of the available parity distribution methods. 448 449 A RAID-6 set of N drives with a capacity of C MB per drive 450 provides the capacity of C * (N - 2) MB, and protects 451 against a failure of any two drives. For a given sector 452 (row) number, (N - 2) drives contain data sectors, and two 453 drives contains two independent redundancy syndromes. Like 454 RAID-5, RAID-6 distributes the syndromes across the drives 455 in one of the available parity distribution methods. 456 457config DM_ZERO 458 tristate "Zero target" 459 depends on BLK_DEV_DM 460 help 461 A target that discards writes, and returns all zeroes for 462 reads. Useful in some recovery situations. 463 464config DM_MULTIPATH 465 tristate "Multipath target" 466 depends on BLK_DEV_DM 467 # nasty syntax but means make DM_MULTIPATH independent 468 # of SCSI_DH if the latter isn't defined but if 469 # it is, DM_MULTIPATH must depend on it. We get a build 470 # error if SCSI_DH=m and DM_MULTIPATH=y 471 depends on !SCSI_DH || SCSI 472 help 473 Allow volume managers to support multipath hardware. 474 475config DM_MULTIPATH_QL 476 tristate "I/O Path Selector based on the number of in-flight I/Os" 477 depends on DM_MULTIPATH 478 help 479 This path selector is a dynamic load balancer which selects 480 the path with the least number of in-flight I/Os. 481 482 If unsure, say N. 483 484config DM_MULTIPATH_ST 485 tristate "I/O Path Selector based on the service time" 486 depends on DM_MULTIPATH 487 help 488 This path selector is a dynamic load balancer which selects 489 the path expected to complete the incoming I/O in the shortest 490 time. 491 492 If unsure, say N. 493 494config DM_MULTIPATH_HST 495 tristate "I/O Path Selector based on historical service time" 496 depends on DM_MULTIPATH 497 help 498 This path selector is a dynamic load balancer which selects 499 the path expected to complete the incoming I/O in the shortest 500 time by comparing estimated service time (based on historical 501 service time). 502 503 If unsure, say N. 504 505config DM_MULTIPATH_IOA 506 tristate "I/O Path Selector based on CPU submission" 507 depends on DM_MULTIPATH 508 help 509 This path selector selects the path based on the CPU the IO is 510 executed on and the CPU to path mapping setup at path addition time. 511 512 If unsure, say N. 513 514config DM_DELAY 515 tristate "I/O delaying target" 516 depends on BLK_DEV_DM 517 help 518 A target that delays reads and/or writes and can send 519 them to different devices. Useful for testing. 520 521 If unsure, say N. 522 523config DM_DUST 524 tristate "Bad sector simulation target" 525 depends on BLK_DEV_DM 526 help 527 A target that simulates bad sector behavior. 528 Useful for testing. 529 530 If unsure, say N. 531 532config DM_INIT 533 bool "DM \"dm-mod.create=\" parameter support" 534 depends on BLK_DEV_DM=y 535 help 536 Enable "dm-mod.create=" parameter to create mapped devices at init time. 537 This option is useful to allow mounting rootfs without requiring an 538 initramfs. 539 See Documentation/admin-guide/device-mapper/dm-init.rst for dm-mod.create="..." 540 format. 541 542 If unsure, say N. 543 544config DM_UEVENT 545 bool "DM uevents" 546 depends on BLK_DEV_DM 547 help 548 Generate udev events for DM events. 549 550config DM_FLAKEY 551 tristate "Flakey target" 552 depends on BLK_DEV_DM 553 help 554 A target that intermittently fails I/O for debugging purposes. 555 556config DM_VERITY 557 tristate "Verity target support" 558 depends on BLK_DEV_DM 559 select CRYPTO 560 select CRYPTO_HASH 561 select DM_BUFIO 562 help 563 This device-mapper target creates a read-only device that 564 transparently validates the data on one underlying device against 565 a pre-generated tree of cryptographic checksums stored on a second 566 device. 567 568 You'll need to activate the digests you're going to use in the 569 cryptoapi configuration. 570 571 To compile this code as a module, choose M here: the module will 572 be called dm-verity. 573 574 If unsure, say N. 575 576config DM_VERITY_VERIFY_ROOTHASH_SIG 577 def_bool n 578 bool "Verity data device root hash signature verification support" 579 depends on DM_VERITY 580 select SYSTEM_DATA_VERIFICATION 581 help 582 Add ability for dm-verity device to be validated if the 583 pre-generated tree of cryptographic checksums passed has a pkcs#7 584 signature file that can validate the roothash of the tree. 585 586 By default, rely on the builtin trusted keyring. 587 588 If unsure, say N. 589 590config DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING 591 bool "Verity data device root hash signature verification with secondary keyring" 592 depends on DM_VERITY_VERIFY_ROOTHASH_SIG 593 depends on SECONDARY_TRUSTED_KEYRING 594 help 595 Rely on the secondary trusted keyring to verify dm-verity signatures. 596 597 If unsure, say N. 598 599config DM_VERITY_FEC 600 bool "Verity forward error correction support" 601 depends on DM_VERITY 602 select REED_SOLOMON 603 select REED_SOLOMON_DEC8 604 help 605 Add forward error correction support to dm-verity. This option 606 makes it possible to use pre-generated error correction data to 607 recover from corrupted blocks. 608 609 If unsure, say N. 610 611config DM_SWITCH 612 tristate "Switch target support (EXPERIMENTAL)" 613 depends on BLK_DEV_DM 614 help 615 This device-mapper target creates a device that supports an arbitrary 616 mapping of fixed-size regions of I/O across a fixed set of paths. 617 The path used for any specific region can be switched dynamically 618 by sending the target a message. 619 620 To compile this code as a module, choose M here: the module will 621 be called dm-switch. 622 623 If unsure, say N. 624 625config DM_LOG_WRITES 626 tristate "Log writes target support" 627 depends on BLK_DEV_DM 628 help 629 This device-mapper target takes two devices, one device to use 630 normally, one to log all write operations done to the first device. 631 This is for use by file system developers wishing to verify that 632 their fs is writing a consistent file system at all times by allowing 633 them to replay the log in a variety of ways and to check the 634 contents. 635 636 To compile this code as a module, choose M here: the module will 637 be called dm-log-writes. 638 639 If unsure, say N. 640 641config DM_INTEGRITY 642 tristate "Integrity target support" 643 depends on BLK_DEV_DM 644 select BLK_DEV_INTEGRITY 645 select DM_BUFIO 646 select CRYPTO 647 select CRYPTO_SKCIPHER 648 select ASYNC_XOR 649 select DM_AUDIT if AUDIT 650 help 651 This device-mapper target emulates a block device that has 652 additional per-sector tags that can be used for storing 653 integrity information. 654 655 This integrity target is used with the dm-crypt target to 656 provide authenticated disk encryption or it can be used 657 standalone. 658 659 To compile this code as a module, choose M here: the module will 660 be called dm-integrity. 661 662config DM_ZONED 663 tristate "Drive-managed zoned block device target support" 664 depends on BLK_DEV_DM 665 depends on BLK_DEV_ZONED 666 select CRC32 667 help 668 This device-mapper target takes a host-managed or host-aware zoned 669 block device and exposes most of its capacity as a regular block 670 device (drive-managed zoned block device) without any write 671 constraints. This is mainly intended for use with file systems that 672 do not natively support zoned block devices but still want to 673 benefit from the increased capacity offered by SMR disks. Other uses 674 by applications using raw block devices (for example object stores) 675 are also possible. 676 677 To compile this code as a module, choose M here: the module will 678 be called dm-zoned. 679 680 If unsure, say N. 681 682config DM_AUDIT 683 bool "DM audit events" 684 depends on BLK_DEV_DM 685 depends on AUDIT 686 help 687 Generate audit events for device-mapper. 688 689 Enables audit logging of several security relevant events in the 690 particular device-mapper targets, especially the integrity target. 691 692config DM_USER 693 tristate "Block device in userspace" 694 depends on BLK_DEV_DM 695 default y 696 help 697 This device-mapper target allows a userspace daemon to provide the 698 contents of a block device. See 699 <file:Documentation/block/dm-user.rst> for more information. 700 701 To compile this code as a module, choose M here: the module will be 702 called dm-user. 703 704 If unsure, say N. 705 706endif # MD 707