649 lines · plain
1# SPDX-License-Identifier: GPL-2.0-only2#3# Block device driver configuration4#5 6menuconfig MD7 bool "Multiple devices driver support (RAID and LVM)"8 depends on BLOCK9 help10 Support multiple physical spindles through a single logical device.11 Required for RAID and logical volume management.12 13if MD14 15config BLK_DEV_MD16 tristate "RAID support"17 select BLOCK_HOLDER_DEPRECATED if SYSFS18 select BUFFER_HEAD19 # BLOCK_LEGACY_AUTOLOAD requirement should be removed20 # after relevant mdadm enhancements - to make "names=yes"21 # the default - are widely available.22 select BLOCK_LEGACY_AUTOLOAD23 help24 This driver lets you combine several hard disk partitions into one25 logical block device. This can be used to simply append one26 partition to another one or to combine several redundant hard disks27 into a RAID1/4/5 device so as to provide protection against hard28 disk failures. This is called "Software RAID" since the combining of29 the partitions is done by the kernel. "Hardware RAID" means that the30 combining is done by a dedicated controller; if you have such a31 controller, you do not need to say Y here.32 33 More information about Software RAID on Linux is contained in the34 Software RAID mini-HOWTO, available from35 <https://www.tldp.org/docs.html#howto>. There you will also learn36 where to get the supporting user space utilities raidtools.37 38 If unsure, say N.39 40config MD_AUTODETECT41 bool "Autodetect RAID arrays during kernel boot"42 depends on BLK_DEV_MD=y43 default y44 help45 If you say Y here, then the kernel will try to autodetect raid46 arrays as part of its boot process.47 48 If you don't use raid and say Y, this autodetection can cause49 a several-second delay in the boot time due to various50 synchronisation steps that are part of this step.51 52 If unsure, say Y.53 54config MD_BITMAP_FILE55 bool "MD bitmap file support (deprecated)"56 default y57 help58 If you say Y here, support for write intent bitmaps in files on an59 external file system is enabled. This is an alternative to the internal60 bitmaps near the MD superblock, and very problematic code that abuses61 various kernel APIs and can only work with files on a file system not62 actually sitting on the MD device.63 64config MD_RAID065 tristate "RAID-0 (striping) mode"66 depends on BLK_DEV_MD67 help68 If you say Y here, then your multiple devices driver will be able to69 use the so-called raid0 mode, i.e. it will combine the hard disk70 partitions into one logical device in such a fashion as to fill them71 up evenly, one chunk here and one chunk there. This will increase72 the throughput rate if the partitions reside on distinct disks.73 74 Information about Software RAID on Linux is contained in the75 Software-RAID mini-HOWTO, available from76 <https://www.tldp.org/docs.html#howto>. There you will also77 learn where to get the supporting user space utilities raidtools.78 79 To compile this as a module, choose M here: the module80 will be called raid0.81 82 If unsure, say Y.83 84config MD_RAID185 tristate "RAID-1 (mirroring) mode"86 depends on BLK_DEV_MD87 help88 A RAID-1 set consists of several disk drives which are exact copies89 of each other. In the event of a mirror failure, the RAID driver90 will continue to use the operational mirrors in the set, providing91 an error free MD (multiple device) to the higher levels of the92 kernel. In a set with N drives, the available space is the capacity93 of a single drive, and the set protects against a failure of (N - 1)94 drives.95 96 Information about Software RAID on Linux is contained in the97 Software-RAID mini-HOWTO, available from98 <https://www.tldp.org/docs.html#howto>. There you will also99 learn where to get the supporting user space utilities raidtools.100 101 If you want to use such a RAID-1 set, say Y. To compile this code102 as a module, choose M here: the module will be called raid1.103 104 If unsure, say Y.105 106config MD_RAID10107 tristate "RAID-10 (mirrored striping) mode"108 depends on BLK_DEV_MD109 help110 RAID-10 provides a combination of striping (RAID-0) and111 mirroring (RAID-1) with easier configuration and more flexible112 layout.113 Unlike RAID-0, but like RAID-1, RAID-10 requires all devices to114 be the same size (or at least, only as much as the smallest device115 will be used).116 RAID-10 provides a variety of layouts that provide different levels117 of redundancy and performance.118 119 RAID-10 requires mdadm-1.7.0 or later, available at:120 121 https://www.kernel.org/pub/linux/utils/raid/mdadm/122 123 If unsure, say Y.124 125config MD_RAID456126 tristate "RAID-4/RAID-5/RAID-6 mode"127 depends on BLK_DEV_MD128 select RAID6_PQ129 select LIBCRC32C130 select ASYNC_MEMCPY131 select ASYNC_XOR132 select ASYNC_PQ133 select ASYNC_RAID6_RECOV134 help135 A RAID-5 set of N drives with a capacity of C MB per drive provides136 the capacity of C * (N - 1) MB, and protects against a failure137 of a single drive. For a given sector (row) number, (N - 1) drives138 contain data sectors, and one drive contains the parity protection.139 For a RAID-4 set, the parity blocks are present on a single drive,140 while a RAID-5 set distributes the parity across the drives in one141 of the available parity distribution methods.142 143 A RAID-6 set of N drives with a capacity of C MB per drive144 provides the capacity of C * (N - 2) MB, and protects145 against a failure of any two drives. For a given sector146 (row) number, (N - 2) drives contain data sectors, and two147 drives contains two independent redundancy syndromes. Like148 RAID-5, RAID-6 distributes the syndromes across the drives149 in one of the available parity distribution methods.150 151 Information about Software RAID on Linux is contained in the152 Software-RAID mini-HOWTO, available from153 <https://www.tldp.org/docs.html#howto>. There you will also154 learn where to get the supporting user space utilities raidtools.155 156 If you want to use such a RAID-4/RAID-5/RAID-6 set, say Y. To157 compile this code as a module, choose M here: the module158 will be called raid456.159 160 If unsure, say Y.161 162config MD_CLUSTER163 tristate "Cluster Support for MD"164 depends on BLK_DEV_MD165 depends on DLM166 default n167 help168 Clustering support for MD devices. This enables locking and169 synchronization across multiple systems on the cluster, so all170 nodes in the cluster can access the MD devices simultaneously.171 172 This brings the redundancy (and uptime) of RAID levels across the173 nodes of the cluster. Currently, it can work with raid1 and raid10174 (limited support).175 176 If unsure, say N.177 178source "drivers/md/bcache/Kconfig"179 180config BLK_DEV_DM_BUILTIN181 bool182 183config BLK_DEV_DM184 tristate "Device mapper support"185 select BLOCK_HOLDER_DEPRECATED if SYSFS186 select BLK_DEV_DM_BUILTIN187 select BLK_MQ_STACKING188 depends on DAX || DAX=n189 help190 Device-mapper is a low level volume manager. It works by allowing191 people to specify mappings for ranges of logical sectors. Various192 mapping types are available, in addition people may write their own193 modules containing custom mappings if they wish.194 195 Higher level volume managers such as LVM2 use this driver.196 197 To compile this as a module, choose M here: the module will be198 called dm-mod.199 200 If unsure, say N.201 202config DM_DEBUG203 bool "Device mapper debugging support"204 depends on BLK_DEV_DM205 help206 Enable this for messages that may help debug device-mapper problems.207 208 If unsure, say N.209 210config DM_BUFIO211 tristate212 depends on BLK_DEV_DM213 help214 This interface allows you to do buffered I/O on a device and acts215 as a cache, holding recently-read blocks in memory and performing216 delayed writes.217 218config DM_DEBUG_BLOCK_MANAGER_LOCKING219 bool "Block manager locking"220 depends on DM_BUFIO221 help222 Block manager locking can catch various metadata corruption issues.223 224 If unsure, say N.225 226config DM_DEBUG_BLOCK_STACK_TRACING227 bool "Keep stack trace of persistent data block lock holders"228 depends on STACKTRACE_SUPPORT && DM_DEBUG_BLOCK_MANAGER_LOCKING229 select STACKTRACE230 help231 Enable this for messages that may help debug problems with the232 block manager locking used by thin provisioning and caching.233 234 If unsure, say N.235 236config DM_BIO_PRISON237 tristate238 depends on BLK_DEV_DM239 help240 Some bio locking schemes used by other device-mapper targets241 including thin provisioning.242 243source "drivers/md/persistent-data/Kconfig"244 245config DM_UNSTRIPED246 tristate "Unstriped target"247 depends on BLK_DEV_DM248 help249 Unstripes I/O so it is issued solely on a single drive in a HW250 RAID0 or dm-striped target.251 252config DM_CRYPT253 tristate "Crypt target support"254 depends on BLK_DEV_DM255 depends on (ENCRYPTED_KEYS || ENCRYPTED_KEYS=n)256 depends on (TRUSTED_KEYS || TRUSTED_KEYS=n)257 select CRYPTO258 select CRYPTO_CBC259 select CRYPTO_ESSIV260 help261 This device-mapper target allows you to create a device that262 transparently encrypts the data on it. You'll need to activate263 the ciphers you're going to use in the cryptoapi configuration.264 265 For further information on dm-crypt and userspace tools see:266 <https://gitlab.com/cryptsetup/cryptsetup/wikis/DMCrypt>267 268 To compile this code as a module, choose M here: the module will269 be called dm-crypt.270 271 If unsure, say N.272 273config DM_SNAPSHOT274 tristate "Snapshot target"275 depends on BLK_DEV_DM276 select DM_BUFIO277 help278 Allow volume managers to take writable snapshots of a device.279 280config DM_THIN_PROVISIONING281 tristate "Thin provisioning target"282 depends on BLK_DEV_DM283 select DM_PERSISTENT_DATA284 select DM_BIO_PRISON285 help286 Provides thin provisioning and snapshots that share a data store.287 288config DM_CACHE289 tristate "Cache target (EXPERIMENTAL)"290 depends on BLK_DEV_DM291 default n292 select DM_PERSISTENT_DATA293 select DM_BIO_PRISON294 help295 dm-cache attempts to improve performance of a block device by296 moving frequently used data to a smaller, higher performance297 device. Different 'policy' plugins can be used to change the298 algorithms used to select which blocks are promoted, demoted,299 cleaned etc. It supports writeback and writethrough modes.300 301config DM_CACHE_SMQ302 tristate "Stochastic MQ Cache Policy (EXPERIMENTAL)"303 depends on DM_CACHE304 default y305 help306 A cache policy that uses a multiqueue ordered by recent hits307 to select which blocks should be promoted and demoted.308 This is meant to be a general purpose policy. It prioritises309 reads over writes. This SMQ policy (vs MQ) offers the promise310 of less memory utilization, improved performance and increased311 adaptability in the face of changing workloads.312 313config DM_WRITECACHE314 tristate "Writecache target"315 depends on BLK_DEV_DM316 help317 The writecache target caches writes on persistent memory or SSD.318 It is intended for databases or other programs that need extremely319 low commit latency.320 321 The writecache target doesn't cache reads because reads are supposed322 to be cached in standard RAM.323 324config DM_EBS325 tristate "Emulated block size target (EXPERIMENTAL)"326 depends on BLK_DEV_DM && !HIGHMEM327 select DM_BUFIO328 help329 dm-ebs emulates smaller logical block size on backing devices330 with larger ones (e.g. 512 byte sectors on 4K native disks).331 332config DM_ERA333 tristate "Era target (EXPERIMENTAL)"334 depends on BLK_DEV_DM335 default n336 select DM_PERSISTENT_DATA337 select DM_BIO_PRISON338 help339 dm-era tracks which parts of a block device are written to340 over time. Useful for maintaining cache coherency when using341 vendor snapshots.342 343config DM_CLONE344 tristate "Clone target (EXPERIMENTAL)"345 depends on BLK_DEV_DM346 default n347 select DM_PERSISTENT_DATA348 help349 dm-clone produces a one-to-one copy of an existing, read-only source350 device into a writable destination device. The cloned device is351 visible/mountable immediately and the copy of the source device to the352 destination device happens in the background, in parallel with user353 I/O.354 355 If unsure, say N.356 357config DM_MIRROR358 tristate "Mirror target"359 depends on BLK_DEV_DM360 help361 Allow volume managers to mirror logical volumes, also362 needed for live data migration tools such as 'pvmove'.363 364config DM_LOG_USERSPACE365 tristate "Mirror userspace logging"366 depends on DM_MIRROR && NET367 select CONNECTOR368 help369 The userspace logging module provides a mechanism for370 relaying the dm-dirty-log API to userspace. Log designs371 which are more suited to userspace implementation (e.g.372 shared storage logs) or experimental logs can be implemented373 by leveraging this framework.374 375config DM_RAID376 tristate "RAID 1/4/5/6/10 target"377 depends on BLK_DEV_DM378 select MD_RAID0379 select MD_RAID1380 select MD_RAID10381 select MD_RAID456382 select BLK_DEV_MD383 help384 A dm target that supports RAID1, RAID10, RAID4, RAID5 and RAID6 mappings385 386 A RAID-5 set of N drives with a capacity of C MB per drive provides387 the capacity of C * (N - 1) MB, and protects against a failure388 of a single drive. For a given sector (row) number, (N - 1) drives389 contain data sectors, and one drive contains the parity protection.390 For a RAID-4 set, the parity blocks are present on a single drive,391 while a RAID-5 set distributes the parity across the drives in one392 of the available parity distribution methods.393 394 A RAID-6 set of N drives with a capacity of C MB per drive395 provides the capacity of C * (N - 2) MB, and protects396 against a failure of any two drives. For a given sector397 (row) number, (N - 2) drives contain data sectors, and two398 drives contains two independent redundancy syndromes. Like399 RAID-5, RAID-6 distributes the syndromes across the drives400 in one of the available parity distribution methods.401 402config DM_ZERO403 tristate "Zero target"404 depends on BLK_DEV_DM405 help406 A target that discards writes, and returns all zeroes for407 reads. Useful in some recovery situations.408 409config DM_MULTIPATH410 tristate "Multipath target"411 depends on BLK_DEV_DM412 # nasty syntax but means make DM_MULTIPATH independent413 # of SCSI_DH if the latter isn't defined but if414 # it is, DM_MULTIPATH must depend on it. We get a build415 # error if SCSI_DH=m and DM_MULTIPATH=y416 depends on !SCSI_DH || SCSI417 help418 Allow volume managers to support multipath hardware.419 420config DM_MULTIPATH_QL421 tristate "I/O Path Selector based on the number of in-flight I/Os"422 depends on DM_MULTIPATH423 help424 This path selector is a dynamic load balancer which selects425 the path with the least number of in-flight I/Os.426 427 If unsure, say N.428 429config DM_MULTIPATH_ST430 tristate "I/O Path Selector based on the service time"431 depends on DM_MULTIPATH432 help433 This path selector is a dynamic load balancer which selects434 the path expected to complete the incoming I/O in the shortest435 time.436 437 If unsure, say N.438 439config DM_MULTIPATH_HST440 tristate "I/O Path Selector based on historical service time"441 depends on DM_MULTIPATH442 help443 This path selector is a dynamic load balancer which selects444 the path expected to complete the incoming I/O in the shortest445 time by comparing estimated service time (based on historical446 service time).447 448 If unsure, say N.449 450config DM_MULTIPATH_IOA451 tristate "I/O Path Selector based on CPU submission"452 depends on DM_MULTIPATH453 help454 This path selector selects the path based on the CPU the IO is455 executed on and the CPU to path mapping setup at path addition time.456 457 If unsure, say N.458 459config DM_DELAY460 tristate "I/O delaying target"461 depends on BLK_DEV_DM462 help463 A target that delays reads and/or writes and can send464 them to different devices. Useful for testing.465 466 If unsure, say N.467 468config DM_DUST469 tristate "Bad sector simulation target"470 depends on BLK_DEV_DM471 help472 A target that simulates bad sector behavior.473 Useful for testing.474 475 If unsure, say N.476 477config DM_INIT478 bool "DM \"dm-mod.create=\" parameter support"479 depends on BLK_DEV_DM=y480 help481 Enable "dm-mod.create=" parameter to create mapped devices at init time.482 This option is useful to allow mounting rootfs without requiring an483 initramfs.484 See Documentation/admin-guide/device-mapper/dm-init.rst for dm-mod.create="..."485 format.486 487 If unsure, say N.488 489config DM_UEVENT490 bool "DM uevents"491 depends on BLK_DEV_DM492 help493 Generate udev events for DM events.494 495config DM_FLAKEY496 tristate "Flakey target"497 depends on BLK_DEV_DM498 help499 A target that intermittently fails I/O for debugging purposes.500 501config DM_VERITY502 tristate "Verity target support"503 depends on BLK_DEV_DM504 select CRYPTO505 select CRYPTO_HASH506 select DM_BUFIO507 help508 This device-mapper target creates a read-only device that509 transparently validates the data on one underlying device against510 a pre-generated tree of cryptographic checksums stored on a second511 device.512 513 You'll need to activate the digests you're going to use in the514 cryptoapi configuration.515 516 To compile this code as a module, choose M here: the module will517 be called dm-verity.518 519 If unsure, say N.520 521config DM_VERITY_VERIFY_ROOTHASH_SIG522 bool "Verity data device root hash signature verification support"523 depends on DM_VERITY524 select SYSTEM_DATA_VERIFICATION525 help526 Add ability for dm-verity device to be validated if the527 pre-generated tree of cryptographic checksums passed has a pkcs#7528 signature file that can validate the roothash of the tree.529 530 By default, rely on the builtin trusted keyring.531 532 If unsure, say N.533 534config DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING535 bool "Verity data device root hash signature verification with secondary keyring"536 depends on DM_VERITY_VERIFY_ROOTHASH_SIG537 depends on SECONDARY_TRUSTED_KEYRING538 help539 Rely on the secondary trusted keyring to verify dm-verity signatures.540 541 If unsure, say N.542 543config DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING544 bool "Verity data device root hash signature verification with platform keyring"545 default DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING546 depends on DM_VERITY_VERIFY_ROOTHASH_SIG547 depends on INTEGRITY_PLATFORM_KEYRING548 help549 Rely also on the platform keyring to verify dm-verity signatures.550 551 If unsure, say N.552 553config DM_VERITY_FEC554 bool "Verity forward error correction support"555 depends on DM_VERITY556 select REED_SOLOMON557 select REED_SOLOMON_DEC8558 help559 Add forward error correction support to dm-verity. This option560 makes it possible to use pre-generated error correction data to561 recover from corrupted blocks.562 563 If unsure, say N.564 565config DM_SWITCH566 tristate "Switch target support (EXPERIMENTAL)"567 depends on BLK_DEV_DM568 help569 This device-mapper target creates a device that supports an arbitrary570 mapping of fixed-size regions of I/O across a fixed set of paths.571 The path used for any specific region can be switched dynamically572 by sending the target a message.573 574 To compile this code as a module, choose M here: the module will575 be called dm-switch.576 577 If unsure, say N.578 579config DM_LOG_WRITES580 tristate "Log writes target support"581 depends on BLK_DEV_DM582 help583 This device-mapper target takes two devices, one device to use584 normally, one to log all write operations done to the first device.585 This is for use by file system developers wishing to verify that586 their fs is writing a consistent file system at all times by allowing587 them to replay the log in a variety of ways and to check the588 contents.589 590 To compile this code as a module, choose M here: the module will591 be called dm-log-writes.592 593 If unsure, say N.594 595config DM_INTEGRITY596 tristate "Integrity target support"597 depends on BLK_DEV_DM598 select BLK_DEV_INTEGRITY599 select DM_BUFIO600 select CRYPTO601 select CRYPTO_SKCIPHER602 select ASYNC_XOR603 select DM_AUDIT if AUDIT604 help605 This device-mapper target emulates a block device that has606 additional per-sector tags that can be used for storing607 integrity information.608 609 This integrity target is used with the dm-crypt target to610 provide authenticated disk encryption or it can be used611 standalone.612 613 To compile this code as a module, choose M here: the module will614 be called dm-integrity.615 616config DM_ZONED617 tristate "Drive-managed zoned block device target support"618 depends on BLK_DEV_DM619 depends on BLK_DEV_ZONED620 select CRC32621 help622 This device-mapper target takes a host-managed or host-aware zoned623 block device and exposes most of its capacity as a regular block624 device (drive-managed zoned block device) without any write625 constraints. This is mainly intended for use with file systems that626 do not natively support zoned block devices but still want to627 benefit from the increased capacity offered by SMR disks. Other uses628 by applications using raw block devices (for example object stores)629 are also possible.630 631 To compile this code as a module, choose M here: the module will632 be called dm-zoned.633 634 If unsure, say N.635 636config DM_AUDIT637 bool "DM audit events"638 depends on BLK_DEV_DM639 depends on AUDIT640 help641 Generate audit events for device-mapper.642 643 Enables audit logging of several security relevant events in the644 particular device-mapper targets, especially the integrity target.645 646source "drivers/md/dm-vdo/Kconfig"647 648endif # MD649