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" 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_CLUSTER 176 tristate "Cluster Support for MD" 177 depends on BLK_DEV_MD 178 depends on DLM 179 default n 180 help 181 Clustering support for MD devices. This enables locking and 182 synchronization across multiple systems on the cluster, so all 183 nodes in the cluster can access the MD devices simultaneously. 184 185 This brings the redundancy (and uptime) of RAID levels across the 186 nodes of the cluster. Currently, it can work with raid1 and raid10 187 (limited support). 188 189 If unsure, say N. 190 191source "drivers/md/bcache/Kconfig" 192 193config BLK_DEV_DM_BUILTIN 194 bool 195 196config BLK_DEV_DM 197 tristate "Device mapper support" 198 select BLOCK_HOLDER_DEPRECATED if SYSFS 199 select BLK_DEV_DM_BUILTIN 200 select BLK_MQ_STACKING 201 depends on DAX || DAX=n 202 help 203 Device-mapper is a low level volume manager. It works by allowing 204 people to specify mappings for ranges of logical sectors. Various 205 mapping types are available, in addition people may write their own 206 modules containing custom mappings if they wish. 207 208 Higher level volume managers such as LVM2 use this driver. 209 210 To compile this as a module, choose M here: the module will be 211 called dm-mod. 212 213 If unsure, say N. 214 215config DM_DEBUG 216 bool "Device mapper debugging support" 217 depends on BLK_DEV_DM 218 help 219 Enable this for messages that may help debug device-mapper problems. 220 221 If unsure, say N. 222 223config DM_BUFIO 224 tristate 225 depends on BLK_DEV_DM 226 help 227 This interface allows you to do buffered I/O on a device and acts 228 as a cache, holding recently-read blocks in memory and performing 229 delayed writes. 230 231config DM_DEBUG_BLOCK_MANAGER_LOCKING 232 bool "Block manager locking" 233 depends on DM_BUFIO 234 help 235 Block manager locking can catch various metadata corruption issues. 236 237 If unsure, say N. 238 239config DM_DEBUG_BLOCK_STACK_TRACING 240 bool "Keep stack trace of persistent data block lock holders" 241 depends on STACKTRACE_SUPPORT && DM_DEBUG_BLOCK_MANAGER_LOCKING 242 select STACKTRACE 243 help 244 Enable this for messages that may help debug problems with the 245 block manager locking used by thin provisioning and caching. 246 247 If unsure, say N. 248 249config DM_BIO_PRISON 250 tristate 251 depends on BLK_DEV_DM 252 help 253 Some bio locking schemes used by other device-mapper targets 254 including thin provisioning. 255 256source "drivers/md/persistent-data/Kconfig" 257 258config DM_UNSTRIPED 259 tristate "Unstriped target" 260 depends on BLK_DEV_DM 261 help 262 Unstripes I/O so it is issued solely on a single drive in a HW 263 RAID0 or dm-striped target. 264 265config DM_CRYPT 266 tristate "Crypt target support" 267 depends on BLK_DEV_DM 268 depends on (ENCRYPTED_KEYS || ENCRYPTED_KEYS=n) 269 depends on (TRUSTED_KEYS || TRUSTED_KEYS=n) 270 select CRYPTO 271 select CRYPTO_CBC 272 select CRYPTO_ESSIV 273 help 274 This device-mapper target allows you to create a device that 275 transparently encrypts the data on it. You'll need to activate 276 the ciphers you're going to use in the cryptoapi configuration. 277 278 For further information on dm-crypt and userspace tools see: 279 <https://gitlab.com/cryptsetup/cryptsetup/wikis/DMCrypt> 280 281 To compile this code as a module, choose M here: the module will 282 be called dm-crypt. 283 284 If unsure, say N. 285 286config DM_DEFAULT_KEY 287 tristate "Default-key target support" 288 depends on BLK_DEV_DM 289 depends on BLK_INLINE_ENCRYPTION 290 # dm-default-key doesn't require -o inlinecrypt, but it does currently 291 # rely on the inline encryption hooks being built into the kernel. 292 depends on FS_ENCRYPTION_INLINE_CRYPT 293 help 294 This device-mapper target allows you to create a device that 295 assigns a default encryption key to bios that aren't for the 296 contents of an encrypted file. 297 298 This ensures that all blocks on-disk will be encrypted with 299 some key, without the performance hit of file contents being 300 encrypted twice when fscrypt (File-Based Encryption) is used. 301 302 It is only appropriate to use dm-default-key when key 303 configuration is tightly controlled, like it is in Android, 304 such that all fscrypt keys are at least as hard to compromise 305 as the default key. 306 307config 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 314config 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 322config 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 335config 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 347config 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 358config 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 366config 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 377config 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 391config 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 398config 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 409config 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 436config 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 443config 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 454config 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 463config 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 473config 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 484config 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 493config 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 502config 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 511config 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 523config DM_UEVENT 524 bool "DM uevents" 525 depends on BLK_DEV_DM 526 help 527 Generate udev events for DM events. 528 529config 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 535config 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 555config DM_VERITY_VERIFY_ROOTHASH_SIG 556 bool "Verity data device root hash signature verification support" 557 depends on DM_VERITY 558 select SYSTEM_DATA_VERIFICATION 559 help 560 Add ability for dm-verity device to be validated if the 561 pre-generated tree of cryptographic checksums passed has a pkcs#7 562 signature file that can validate the roothash of the tree. 563 564 By default, rely on the builtin trusted keyring. 565 566 If unsure, say N. 567 568config DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING 569 bool "Verity data device root hash signature verification with secondary keyring" 570 depends on DM_VERITY_VERIFY_ROOTHASH_SIG 571 depends on SECONDARY_TRUSTED_KEYRING 572 help 573 Rely on the secondary trusted keyring to verify dm-verity signatures. 574 575 If unsure, say N. 576 577config DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING 578 bool "Verity data device root hash signature verification with platform keyring" 579 default DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING 580 depends on DM_VERITY_VERIFY_ROOTHASH_SIG 581 depends on INTEGRITY_PLATFORM_KEYRING 582 help 583 Rely also on the platform keyring to verify dm-verity signatures. 584 585 If unsure, say N. 586 587config DM_VERITY_FEC 588 bool "Verity forward error correction support" 589 depends on DM_VERITY 590 select REED_SOLOMON 591 select REED_SOLOMON_DEC8 592 help 593 Add forward error correction support to dm-verity. This option 594 makes it possible to use pre-generated error correction data to 595 recover from corrupted blocks. 596 597 If unsure, say N. 598 599config DM_SWITCH 600 tristate "Switch target support (EXPERIMENTAL)" 601 depends on BLK_DEV_DM 602 help 603 This device-mapper target creates a device that supports an arbitrary 604 mapping of fixed-size regions of I/O across a fixed set of paths. 605 The path used for any specific region can be switched dynamically 606 by sending the target a message. 607 608 To compile this code as a module, choose M here: the module will 609 be called dm-switch. 610 611 If unsure, say N. 612 613config DM_LOG_WRITES 614 tristate "Log writes target support" 615 depends on BLK_DEV_DM 616 help 617 This device-mapper target takes two devices, one device to use 618 normally, one to log all write operations done to the first device. 619 This is for use by file system developers wishing to verify that 620 their fs is writing a consistent file system at all times by allowing 621 them to replay the log in a variety of ways and to check the 622 contents. 623 624 To compile this code as a module, choose M here: the module will 625 be called dm-log-writes. 626 627 If unsure, say N. 628 629config DM_INTEGRITY 630 tristate "Integrity target support" 631 depends on BLK_DEV_DM 632 select BLK_DEV_INTEGRITY 633 select DM_BUFIO 634 select CRYPTO 635 select CRYPTO_SKCIPHER 636 select ASYNC_XOR 637 select DM_AUDIT if AUDIT 638 help 639 This device-mapper target emulates a block device that has 640 additional per-sector tags that can be used for storing 641 integrity information. 642 643 This integrity target is used with the dm-crypt target to 644 provide authenticated disk encryption or it can be used 645 standalone. 646 647 To compile this code as a module, choose M here: the module will 648 be called dm-integrity. 649 650config DM_ZONED 651 tristate "Drive-managed zoned block device target support" 652 depends on BLK_DEV_DM 653 depends on BLK_DEV_ZONED 654 select CRC32 655 help 656 This device-mapper target takes a host-managed or host-aware zoned 657 block device and exposes most of its capacity as a regular block 658 device (drive-managed zoned block device) without any write 659 constraints. This is mainly intended for use with file systems that 660 do not natively support zoned block devices but still want to 661 benefit from the increased capacity offered by SMR disks. Other uses 662 by applications using raw block devices (for example object stores) 663 are also possible. 664 665 To compile this code as a module, choose M here: the module will 666 be called dm-zoned. 667 668 If unsure, say N. 669 670config DM_AUDIT 671 bool "DM audit events" 672 depends on BLK_DEV_DM 673 depends on AUDIT 674 help 675 Generate audit events for device-mapper. 676 677 Enables audit logging of several security relevant events in the 678 particular device-mapper targets, especially the integrity target. 679 680config DM_BOW 681 tristate "Backup block device" 682 depends on BLK_DEV_DM 683 select DM_BUFIO 684 help 685 This device-mapper target takes a device and keeps a log of all 686 changes using free blocks identified by issuing a trim command. 687 This can then be restored by running a command line utility, 688 or committed by simply replacing the target. 689 690 If unsure, say N. 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 706source "drivers/md/dm-vdo/Kconfig" 707 708endif # MD 709