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