xref: /linux/drivers/md/Kconfig (revision f36b1d3ba533d21b5b793623f05761b0297d114e)
1ec8f24b7SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only
21da177e4SLinus Torvalds#
31da177e4SLinus Torvalds# Block device driver configuration
41da177e4SLinus Torvalds#
51da177e4SLinus Torvalds
6afd44034SJan Engelhardtmenuconfig MD
71da177e4SLinus Torvalds	bool "Multiple devices driver support (RAID and LVM)"
8afd44034SJan Engelhardt	depends on BLOCK
91da177e4SLinus Torvalds	help
101da177e4SLinus Torvalds	  Support multiple physical spindles through a single logical device.
111da177e4SLinus Torvalds	  Required for RAID and logical volume management.
121da177e4SLinus Torvalds
13afd44034SJan Engelhardtif MD
14afd44034SJan Engelhardt
151da177e4SLinus Torvaldsconfig BLK_DEV_MD
161da177e4SLinus Torvalds	tristate "RAID support"
17c66fd019SChristoph Hellwig	select BLOCK_HOLDER_DEPRECATED if SYSFS
18925c86a1SChristoph Hellwig	select BUFFER_HEAD
196c0f5898SNeilBrown	# BLOCK_LEGACY_AUTOLOAD requirement should be removed
206c0f5898SNeilBrown	# after relevant mdadm enhancements - to make "names=yes"
216c0f5898SNeilBrown	# the default - are widely available.
226c0f5898SNeilBrown	select BLOCK_LEGACY_AUTOLOAD
23a7f7f624SMasahiro Yamada	help
241da177e4SLinus Torvalds	  This driver lets you combine several hard disk partitions into one
251da177e4SLinus Torvalds	  logical block device. This can be used to simply append one
261da177e4SLinus Torvalds	  partition to another one or to combine several redundant hard disks
271da177e4SLinus Torvalds	  into a RAID1/4/5 device so as to provide protection against hard
281da177e4SLinus Torvalds	  disk failures. This is called "Software RAID" since the combining of
291da177e4SLinus Torvalds	  the partitions is done by the kernel. "Hardware RAID" means that the
301da177e4SLinus Torvalds	  combining is done by a dedicated controller; if you have such a
311da177e4SLinus Torvalds	  controller, you do not need to say Y here.
321da177e4SLinus Torvalds
331da177e4SLinus Torvalds	  More information about Software RAID on Linux is contained in the
341da177e4SLinus Torvalds	  Software RAID mini-HOWTO, available from
356f3bc22bSAlexander A. Klimov	  <https://www.tldp.org/docs.html#howto>. There you will also learn
361da177e4SLinus Torvalds	  where to get the supporting user space utilities raidtools.
371da177e4SLinus Torvalds
381da177e4SLinus Torvalds	  If unsure, say N.
391da177e4SLinus Torvalds
40a364092aSArjan van de Venconfig MD_AUTODETECT
41a364092aSArjan van de Ven	bool "Autodetect RAID arrays during kernel boot"
42ce52aebdSAlan Jenkins	depends on BLK_DEV_MD=y
43a364092aSArjan van de Ven	default y
44a7f7f624SMasahiro Yamada	help
45a364092aSArjan van de Ven	  If you say Y here, then the kernel will try to autodetect raid
46a364092aSArjan van de Ven	  arrays as part of its boot process.
47a364092aSArjan van de Ven
48a364092aSArjan van de Ven	  If you don't use raid and say Y, this autodetection can cause
49a364092aSArjan van de Ven	  a several-second delay in the boot time due to various
50a364092aSArjan van de Ven	  synchronisation steps that are part of this step.
51a364092aSArjan van de Ven
52a364092aSArjan van de Ven	  If unsure, say Y.
53a364092aSArjan van de Ven
54a34d4ef8SChristoph Hellwigconfig MD_BITMAP_FILE
550ae1c9d3SChristoph Hellwig	bool "MD bitmap file support (deprecated)"
56a34d4ef8SChristoph Hellwig	default y
57a34d4ef8SChristoph Hellwig	help
58a34d4ef8SChristoph Hellwig	  If you say Y here, support for write intent bitmaps in files on an
59a34d4ef8SChristoph Hellwig	  external file system is enabled.  This is an alternative to the internal
60a34d4ef8SChristoph Hellwig	  bitmaps near the MD superblock, and very problematic code that abuses
61a34d4ef8SChristoph Hellwig	  various kernel APIs and can only work with files on a file system not
62a34d4ef8SChristoph Hellwig	  actually sitting on the MD device.
63a34d4ef8SChristoph Hellwig
641da177e4SLinus Torvaldsconfig MD_RAID0
651da177e4SLinus Torvalds	tristate "RAID-0 (striping) mode"
661da177e4SLinus Torvalds	depends on BLK_DEV_MD
67a7f7f624SMasahiro Yamada	help
681da177e4SLinus Torvalds	  If you say Y here, then your multiple devices driver will be able to
691da177e4SLinus Torvalds	  use the so-called raid0 mode, i.e. it will combine the hard disk
701da177e4SLinus Torvalds	  partitions into one logical device in such a fashion as to fill them
711da177e4SLinus Torvalds	  up evenly, one chunk here and one chunk there. This will increase
721da177e4SLinus Torvalds	  the throughput rate if the partitions reside on distinct disks.
731da177e4SLinus Torvalds
741da177e4SLinus Torvalds	  Information about Software RAID on Linux is contained in the
751da177e4SLinus Torvalds	  Software-RAID mini-HOWTO, available from
766f3bc22bSAlexander A. Klimov	  <https://www.tldp.org/docs.html#howto>. There you will also
771da177e4SLinus Torvalds	  learn where to get the supporting user space utilities raidtools.
781da177e4SLinus Torvalds
791da177e4SLinus Torvalds	  To compile this as a module, choose M here: the module
801da177e4SLinus Torvalds	  will be called raid0.
811da177e4SLinus Torvalds
821da177e4SLinus Torvalds	  If unsure, say Y.
831da177e4SLinus Torvalds
841da177e4SLinus Torvaldsconfig MD_RAID1
851da177e4SLinus Torvalds	tristate "RAID-1 (mirroring) mode"
861da177e4SLinus Torvalds	depends on BLK_DEV_MD
87a7f7f624SMasahiro Yamada	help
881da177e4SLinus Torvalds	  A RAID-1 set consists of several disk drives which are exact copies
891da177e4SLinus Torvalds	  of each other.  In the event of a mirror failure, the RAID driver
901da177e4SLinus Torvalds	  will continue to use the operational mirrors in the set, providing
911da177e4SLinus Torvalds	  an error free MD (multiple device) to the higher levels of the
921da177e4SLinus Torvalds	  kernel.  In a set with N drives, the available space is the capacity
931da177e4SLinus Torvalds	  of a single drive, and the set protects against a failure of (N - 1)
941da177e4SLinus Torvalds	  drives.
951da177e4SLinus Torvalds
961da177e4SLinus Torvalds	  Information about Software RAID on Linux is contained in the
971da177e4SLinus Torvalds	  Software-RAID mini-HOWTO, available from
986f3bc22bSAlexander A. Klimov	  <https://www.tldp.org/docs.html#howto>.  There you will also
991da177e4SLinus Torvalds	  learn where to get the supporting user space utilities raidtools.
1001da177e4SLinus Torvalds
1011da177e4SLinus Torvalds	  If you want to use such a RAID-1 set, say Y.  To compile this code
1021da177e4SLinus Torvalds	  as a module, choose M here: the module will be called raid1.
1031da177e4SLinus Torvalds
1041da177e4SLinus Torvalds	  If unsure, say Y.
1051da177e4SLinus Torvalds
1061da177e4SLinus Torvaldsconfig MD_RAID10
10708fb730cSNeilBrown	tristate "RAID-10 (mirrored striping) mode"
10808fb730cSNeilBrown	depends on BLK_DEV_MD
109a7f7f624SMasahiro Yamada	help
1101da177e4SLinus Torvalds	  RAID-10 provides a combination of striping (RAID-0) and
1114d2554d0SJustin Piszcz	  mirroring (RAID-1) with easier configuration and more flexible
1121da177e4SLinus Torvalds	  layout.
1131da177e4SLinus Torvalds	  Unlike RAID-0, but like RAID-1, RAID-10 requires all devices to
1141da177e4SLinus Torvalds	  be the same size (or at least, only as much as the smallest device
1151da177e4SLinus Torvalds	  will be used).
1161da177e4SLinus Torvalds	  RAID-10 provides a variety of layouts that provide different levels
1171da177e4SLinus Torvalds	  of redundancy and performance.
1181da177e4SLinus Torvalds
1191da177e4SLinus Torvalds	  RAID-10 requires mdadm-1.7.0 or later, available at:
1201da177e4SLinus Torvalds
1214f6cce39SSeongJae Park	  https://www.kernel.org/pub/linux/utils/raid/mdadm/
1221da177e4SLinus Torvalds
1231da177e4SLinus Torvalds	  If unsure, say Y.
1241da177e4SLinus Torvalds
12516a53eccSNeilBrownconfig MD_RAID456
12616a53eccSNeilBrown	tristate "RAID-4/RAID-5/RAID-6 mode"
1271da177e4SLinus Torvalds	depends on BLK_DEV_MD
128f5e70d0fSDavid Woodhouse	select RAID6_PQ
12914f09e2fSArnd Bergmann	select LIBCRC32C
1309bc89cd8SDan Williams	select ASYNC_MEMCPY
1319bc89cd8SDan Williams	select ASYNC_XOR
132ac6b53b6SDan Williams	select ASYNC_PQ
133ac6b53b6SDan Williams	select ASYNC_RAID6_RECOV
134a7f7f624SMasahiro Yamada	help
1351da177e4SLinus Torvalds	  A RAID-5 set of N drives with a capacity of C MB per drive provides
1361da177e4SLinus Torvalds	  the capacity of C * (N - 1) MB, and protects against a failure
1371da177e4SLinus Torvalds	  of a single drive. For a given sector (row) number, (N - 1) drives
1381da177e4SLinus Torvalds	  contain data sectors, and one drive contains the parity protection.
1391da177e4SLinus Torvalds	  For a RAID-4 set, the parity blocks are present on a single drive,
1401da177e4SLinus Torvalds	  while a RAID-5 set distributes the parity across the drives in one
1411da177e4SLinus Torvalds	  of the available parity distribution methods.
1421da177e4SLinus Torvalds
14316a53eccSNeilBrown	  A RAID-6 set of N drives with a capacity of C MB per drive
14416a53eccSNeilBrown	  provides the capacity of C * (N - 2) MB, and protects
14516a53eccSNeilBrown	  against a failure of any two drives. For a given sector
14616a53eccSNeilBrown	  (row) number, (N - 2) drives contain data sectors, and two
14716a53eccSNeilBrown	  drives contains two independent redundancy syndromes.  Like
14816a53eccSNeilBrown	  RAID-5, RAID-6 distributes the syndromes across the drives
14916a53eccSNeilBrown	  in one of the available parity distribution methods.
15016a53eccSNeilBrown
1511da177e4SLinus Torvalds	  Information about Software RAID on Linux is contained in the
1521da177e4SLinus Torvalds	  Software-RAID mini-HOWTO, available from
1536f3bc22bSAlexander A. Klimov	  <https://www.tldp.org/docs.html#howto>. There you will also
1541da177e4SLinus Torvalds	  learn where to get the supporting user space utilities raidtools.
1551da177e4SLinus Torvalds
15616a53eccSNeilBrown	  If you want to use such a RAID-4/RAID-5/RAID-6 set, say Y.  To
1571da177e4SLinus Torvalds	  compile this code as a module, choose M here: the module
15816a53eccSNeilBrown	  will be called raid456.
1591da177e4SLinus Torvalds
1601da177e4SLinus Torvalds	  If unsure, say Y.
1611da177e4SLinus Torvalds
1628e854e9cSGoldwyn Rodriguesconfig MD_CLUSTER
163f0e230adSGuoqing Jiang	tristate "Cluster Support for MD"
1648e854e9cSGoldwyn Rodrigues	depends on BLK_DEV_MD
1658e854e9cSGoldwyn Rodrigues	depends on DLM
1668e854e9cSGoldwyn Rodrigues	default n
167a7f7f624SMasahiro Yamada	help
1688e854e9cSGoldwyn Rodrigues	Clustering support for MD devices. This enables locking and
1698e854e9cSGoldwyn Rodrigues	synchronization across multiple systems on the cluster, so all
1708e854e9cSGoldwyn Rodrigues	nodes in the cluster can access the MD devices simultaneously.
1718e854e9cSGoldwyn Rodrigues
1728e854e9cSGoldwyn Rodrigues	This brings the redundancy (and uptime) of RAID levels across the
173f0e230adSGuoqing Jiang	nodes of the cluster. Currently, it can work with raid1 and raid10
174f0e230adSGuoqing Jiang	(limited support).
1758e854e9cSGoldwyn Rodrigues
1768e854e9cSGoldwyn Rodrigues	If unsure, say N.
1778e854e9cSGoldwyn Rodrigues
178cafe5635SKent Overstreetsource "drivers/md/bcache/Kconfig"
179cafe5635SKent Overstreet
1802995fa78SMikulas Patockaconfig BLK_DEV_DM_BUILTIN
1816341e62bSChristoph Jaeger	bool
1822995fa78SMikulas Patocka
1831da177e4SLinus Torvaldsconfig BLK_DEV_DM
1841da177e4SLinus Torvalds	tristate "Device mapper support"
185c66fd019SChristoph Hellwig	select BLOCK_HOLDER_DEPRECATED if SYSFS
1862995fa78SMikulas Patocka	select BLK_DEV_DM_BUILTIN
187248c7933SChristoph Hellwig	select BLK_MQ_STACKING
188976431b0SDan Williams	depends on DAX || DAX=n
189a7f7f624SMasahiro Yamada	help
1901da177e4SLinus Torvalds	  Device-mapper is a low level volume manager.  It works by allowing
1911da177e4SLinus Torvalds	  people to specify mappings for ranges of logical sectors.  Various
1921da177e4SLinus Torvalds	  mapping types are available, in addition people may write their own
1931da177e4SLinus Torvalds	  modules containing custom mappings if they wish.
1941da177e4SLinus Torvalds
1951da177e4SLinus Torvalds	  Higher level volume managers such as LVM2 use this driver.
1961da177e4SLinus Torvalds
1971da177e4SLinus Torvalds	  To compile this as a module, choose M here: the module will be
1981da177e4SLinus Torvalds	  called dm-mod.
1991da177e4SLinus Torvalds
2001da177e4SLinus Torvalds	  If unsure, say N.
2011da177e4SLinus Torvalds
202cc109201SBryn Reevesconfig DM_DEBUG
2036341e62bSChristoph Jaeger	bool "Device mapper debugging support"
2040149e57fSAlasdair G Kergon	depends on BLK_DEV_DM
205a7f7f624SMasahiro Yamada	help
206cc109201SBryn Reeves	  Enable this for messages that may help debug device-mapper problems.
207cc109201SBryn Reeves
208cc109201SBryn Reeves	  If unsure, say N.
209cc109201SBryn Reeves
21095d402f0SMikulas Patockaconfig DM_BUFIO
21195d402f0SMikulas Patocka       tristate
212d57916a0SAlasdair G Kergon       depends on BLK_DEV_DM
213a7f7f624SMasahiro Yamada	help
21495d402f0SMikulas Patocka	 This interface allows you to do buffered I/O on a device and acts
21595d402f0SMikulas Patocka	 as a cache, holding recently-read blocks in memory and performing
21695d402f0SMikulas Patocka	 delayed writes.
21795d402f0SMikulas Patocka
2182e8ed711SJoe Thornberconfig DM_DEBUG_BLOCK_MANAGER_LOCKING
2192e8ed711SJoe Thornber       bool "Block manager locking"
2202e8ed711SJoe Thornber       depends on DM_BUFIO
221a7f7f624SMasahiro Yamada	help
2222e8ed711SJoe Thornber	 Block manager locking can catch various metadata corruption issues.
2232e8ed711SJoe Thornber
2242e8ed711SJoe Thornber	 If unsure, say N.
2252e8ed711SJoe Thornber
22686bad0c7SMikulas Patockaconfig DM_DEBUG_BLOCK_STACK_TRACING
22786bad0c7SMikulas Patocka       bool "Keep stack trace of persistent data block lock holders"
2282e8ed711SJoe Thornber       depends on STACKTRACE_SUPPORT && DM_DEBUG_BLOCK_MANAGER_LOCKING
22986bad0c7SMikulas Patocka       select STACKTRACE
230a7f7f624SMasahiro Yamada	help
23186bad0c7SMikulas Patocka	 Enable this for messages that may help debug problems with the
23286bad0c7SMikulas Patocka	 block manager locking used by thin provisioning and caching.
23386bad0c7SMikulas Patocka
23486bad0c7SMikulas Patocka	 If unsure, say N.
2353f068040SMike Snitzer
2364f81a417SMike Snitzerconfig DM_BIO_PRISON
2374f81a417SMike Snitzer       tristate
238d57916a0SAlasdair G Kergon       depends on BLK_DEV_DM
239a7f7f624SMasahiro Yamada	help
2404f81a417SMike Snitzer	 Some bio locking schemes used by other device-mapper targets
2414f81a417SMike Snitzer	 including thin provisioning.
2424f81a417SMike Snitzer
243991d9fa0SJoe Thornbersource "drivers/md/persistent-data/Kconfig"
244991d9fa0SJoe Thornber
24518a5bf27SScott Bauerconfig DM_UNSTRIPED
24618a5bf27SScott Bauer       tristate "Unstriped target"
24718a5bf27SScott Bauer       depends on BLK_DEV_DM
248a7f7f624SMasahiro Yamada	help
24918a5bf27SScott Bauer	  Unstripes I/O so it is issued solely on a single drive in a HW
25018a5bf27SScott Bauer	  RAID0 or dm-striped target.
25118a5bf27SScott Bauer
2521da177e4SLinus Torvaldsconfig DM_CRYPT
2531da177e4SLinus Torvalds	tristate "Crypt target support"
2540149e57fSAlasdair G Kergon	depends on BLK_DEV_DM
25527f5411aSDmitry Baryshkov	depends on (ENCRYPTED_KEYS || ENCRYPTED_KEYS=n)
256363880c4SAhmad Fatoum	depends on (TRUSTED_KEYS || TRUSTED_KEYS=n)
2571da177e4SLinus Torvalds	select CRYPTO
2583263263fSHerbert Xu	select CRYPTO_CBC
259a1a262b6SArd Biesheuvel	select CRYPTO_ESSIV
260a7f7f624SMasahiro Yamada	help
2611da177e4SLinus Torvalds	  This device-mapper target allows you to create a device that
2621da177e4SLinus Torvalds	  transparently encrypts the data on it. You'll need to activate
2631da177e4SLinus Torvalds	  the ciphers you're going to use in the cryptoapi configuration.
2641da177e4SLinus Torvalds
265cf352487SLoic Pefferkorn	  For further information on dm-crypt and userspace tools see:
2666ed443c0SBaruch Siach	  <https://gitlab.com/cryptsetup/cryptsetup/wikis/DMCrypt>
2671da177e4SLinus Torvalds
2681da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the module will
2691da177e4SLinus Torvalds	  be called dm-crypt.
2701da177e4SLinus Torvalds
2711da177e4SLinus Torvalds	  If unsure, say N.
2721da177e4SLinus Torvalds
2731da177e4SLinus Torvaldsconfig DM_SNAPSHOT
2740149e57fSAlasdair G Kergon       tristate "Snapshot target"
2750149e57fSAlasdair G Kergon       depends on BLK_DEV_DM
27655494bf2SMikulas Patocka       select DM_BUFIO
277a7f7f624SMasahiro Yamada	help
2784d2554d0SJustin Piszcz	 Allow volume managers to take writable snapshots of a device.
2791da177e4SLinus Torvalds
280991d9fa0SJoe Thornberconfig DM_THIN_PROVISIONING
281d57916a0SAlasdair G Kergon       tristate "Thin provisioning target"
282d57916a0SAlasdair G Kergon       depends on BLK_DEV_DM
283991d9fa0SJoe Thornber       select DM_PERSISTENT_DATA
2844f81a417SMike Snitzer       select DM_BIO_PRISON
285a7f7f624SMasahiro Yamada	help
286991d9fa0SJoe Thornber	 Provides thin provisioning and snapshots that share a data store.
287991d9fa0SJoe Thornber
288c6b4fcbaSJoe Thornberconfig DM_CACHE
289c6b4fcbaSJoe Thornber       tristate "Cache target (EXPERIMENTAL)"
290c6b4fcbaSJoe Thornber       depends on BLK_DEV_DM
291c6b4fcbaSJoe Thornber       default n
292c6b4fcbaSJoe Thornber       select DM_PERSISTENT_DATA
293c6b4fcbaSJoe Thornber       select DM_BIO_PRISON
294a7f7f624SMasahiro Yamada	help
295c6b4fcbaSJoe Thornber	 dm-cache attempts to improve performance of a block device by
296c6b4fcbaSJoe Thornber	 moving frequently used data to a smaller, higher performance
297c6b4fcbaSJoe Thornber	 device.  Different 'policy' plugins can be used to change the
298c6b4fcbaSJoe Thornber	 algorithms used to select which blocks are promoted, demoted,
299c6b4fcbaSJoe Thornber	 cleaned etc.  It supports writeback and writethrough modes.
300c6b4fcbaSJoe Thornber
30166a63635SJoe Thornberconfig DM_CACHE_SMQ
30266a63635SJoe Thornber       tristate "Stochastic MQ Cache Policy (EXPERIMENTAL)"
30366a63635SJoe Thornber       depends on DM_CACHE
30466a63635SJoe Thornber       default y
305a7f7f624SMasahiro Yamada	help
30666a63635SJoe Thornber	 A cache policy that uses a multiqueue ordered by recent hits
30766a63635SJoe Thornber	 to select which blocks should be promoted and demoted.
30866a63635SJoe Thornber	 This is meant to be a general purpose policy.  It prioritises
30966a63635SJoe Thornber	 reads over writes.  This SMQ policy (vs MQ) offers the promise
31066a63635SJoe Thornber	 of less memory utilization, improved performance and increased
31166a63635SJoe Thornber	 adaptability in the face of changing workloads.
31266a63635SJoe Thornber
31348debafeSMikulas Patockaconfig DM_WRITECACHE
31448debafeSMikulas Patocka	tristate "Writecache target"
31548debafeSMikulas Patocka	depends on BLK_DEV_DM
316a7f7f624SMasahiro Yamada	help
31748debafeSMikulas Patocka	   The writecache target caches writes on persistent memory or SSD.
31848debafeSMikulas Patocka	   It is intended for databases or other programs that need extremely
31948debafeSMikulas Patocka	   low commit latency.
32048debafeSMikulas Patocka
32148debafeSMikulas Patocka	   The writecache target doesn't cache reads because reads are supposed
32248debafeSMikulas Patocka	   to be cached in standard RAM.
32348debafeSMikulas Patocka
324d3c7b35cSHeinz Mauelshagenconfig DM_EBS
325d3c7b35cSHeinz Mauelshagen	tristate "Emulated block size target (EXPERIMENTAL)"
3261c277e50SChristoph Hellwig	depends on BLK_DEV_DM && !HIGHMEM
327d3c7b35cSHeinz Mauelshagen	select DM_BUFIO
328d3c7b35cSHeinz Mauelshagen	help
329d3c7b35cSHeinz Mauelshagen	  dm-ebs emulates smaller logical block size on backing devices
330d3c7b35cSHeinz Mauelshagen	  with larger ones (e.g. 512 byte sectors on 4K native disks).
331d3c7b35cSHeinz Mauelshagen
332eec40579SJoe Thornberconfig DM_ERA
333eec40579SJoe Thornber       tristate "Era target (EXPERIMENTAL)"
334eec40579SJoe Thornber       depends on BLK_DEV_DM
335eec40579SJoe Thornber       default n
336eec40579SJoe Thornber       select DM_PERSISTENT_DATA
337eec40579SJoe Thornber       select DM_BIO_PRISON
338a7f7f624SMasahiro Yamada	help
339eec40579SJoe Thornber	 dm-era tracks which parts of a block device are written to
340eec40579SJoe Thornber	 over time.  Useful for maintaining cache coherency when using
341eec40579SJoe Thornber	 vendor snapshots.
342eec40579SJoe Thornber
3437431b783SNikos Tsironisconfig DM_CLONE
3447431b783SNikos Tsironis       tristate "Clone target (EXPERIMENTAL)"
3457431b783SNikos Tsironis       depends on BLK_DEV_DM
3467431b783SNikos Tsironis       default n
3477431b783SNikos Tsironis       select DM_PERSISTENT_DATA
348a7f7f624SMasahiro Yamada	help
3497431b783SNikos Tsironis	 dm-clone produces a one-to-one copy of an existing, read-only source
3507431b783SNikos Tsironis	 device into a writable destination device. The cloned device is
3517431b783SNikos Tsironis	 visible/mountable immediately and the copy of the source device to the
3527431b783SNikos Tsironis	 destination device happens in the background, in parallel with user
3537431b783SNikos Tsironis	 I/O.
3547431b783SNikos Tsironis
3557431b783SNikos Tsironis	 If unsure, say N.
3567431b783SNikos Tsironis
3571da177e4SLinus Torvaldsconfig DM_MIRROR
3580149e57fSAlasdair G Kergon       tristate "Mirror target"
3590149e57fSAlasdair G Kergon       depends on BLK_DEV_DM
360a7f7f624SMasahiro Yamada	help
3611da177e4SLinus Torvalds	 Allow volume managers to mirror logical volumes, also
3621da177e4SLinus Torvalds	 needed for live data migration tools such as 'pvmove'.
3631da177e4SLinus Torvalds
3645442851eSMikulas Patockaconfig DM_LOG_USERSPACE
3655442851eSMikulas Patocka	tristate "Mirror userspace logging"
3665442851eSMikulas Patocka	depends on DM_MIRROR && NET
3675442851eSMikulas Patocka	select CONNECTOR
368a7f7f624SMasahiro Yamada	help
3695442851eSMikulas Patocka	  The userspace logging module provides a mechanism for
3705442851eSMikulas Patocka	  relaying the dm-dirty-log API to userspace.  Log designs
3715442851eSMikulas Patocka	  which are more suited to userspace implementation (e.g.
3725442851eSMikulas Patocka	  shared storage logs) or experimental logs can be implemented
3735442851eSMikulas Patocka	  by leveraging this framework.
3745442851eSMikulas Patocka
3759d09e663SNeilBrownconfig DM_RAID
376d9f691c3SNeilBrown       tristate "RAID 1/4/5/6/10 target"
377035220b3SAlasdair G Kergon       depends on BLK_DEV_DM
3787b81ef8bSMikulas Patocka       select MD_RAID0
379b12d437bSJonathan Brassow       select MD_RAID1
380d9f691c3SNeilBrown       select MD_RAID10
3819d09e663SNeilBrown       select MD_RAID456
3829d09e663SNeilBrown       select BLK_DEV_MD
383a7f7f624SMasahiro Yamada	help
384d9f691c3SNeilBrown	 A dm target that supports RAID1, RAID10, RAID4, RAID5 and RAID6 mappings
3859d09e663SNeilBrown
3869d09e663SNeilBrown	 A RAID-5 set of N drives with a capacity of C MB per drive provides
3879d09e663SNeilBrown	 the capacity of C * (N - 1) MB, and protects against a failure
3889d09e663SNeilBrown	 of a single drive. For a given sector (row) number, (N - 1) drives
3899d09e663SNeilBrown	 contain data sectors, and one drive contains the parity protection.
3909d09e663SNeilBrown	 For a RAID-4 set, the parity blocks are present on a single drive,
3919d09e663SNeilBrown	 while a RAID-5 set distributes the parity across the drives in one
3929d09e663SNeilBrown	 of the available parity distribution methods.
3939d09e663SNeilBrown
3949d09e663SNeilBrown	 A RAID-6 set of N drives with a capacity of C MB per drive
3959d09e663SNeilBrown	 provides the capacity of C * (N - 2) MB, and protects
3969d09e663SNeilBrown	 against a failure of any two drives. For a given sector
3979d09e663SNeilBrown	 (row) number, (N - 2) drives contain data sectors, and two
3989d09e663SNeilBrown	 drives contains two independent redundancy syndromes.  Like
3999d09e663SNeilBrown	 RAID-5, RAID-6 distributes the syndromes across the drives
4009d09e663SNeilBrown	 in one of the available parity distribution methods.
4019d09e663SNeilBrown
4021da177e4SLinus Torvaldsconfig DM_ZERO
4030149e57fSAlasdair G Kergon	tristate "Zero target"
4040149e57fSAlasdair G Kergon	depends on BLK_DEV_DM
405a7f7f624SMasahiro Yamada	help
4061da177e4SLinus Torvalds	  A target that discards writes, and returns all zeroes for
4071da177e4SLinus Torvalds	  reads.  Useful in some recovery situations.
4081da177e4SLinus Torvalds
4091da177e4SLinus Torvaldsconfig DM_MULTIPATH
4100149e57fSAlasdair G Kergon	tristate "Multipath target"
4110149e57fSAlasdair G Kergon	depends on BLK_DEV_DM
412fe9233fbSChandra Seetharaman	# nasty syntax but means make DM_MULTIPATH independent
413fe9233fbSChandra Seetharaman	# of SCSI_DH if the latter isn't defined but if
414fe9233fbSChandra Seetharaman	# it is, DM_MULTIPATH must depend on it.  We get a build
415fe9233fbSChandra Seetharaman	# error if SCSI_DH=m and DM_MULTIPATH=y
416294ab783SChristoph Hellwig	depends on !SCSI_DH || SCSI
417a7f7f624SMasahiro Yamada	help
4181da177e4SLinus Torvalds	  Allow volume managers to support multipath hardware.
4191da177e4SLinus Torvalds
420fd5e0339SKiyoshi Uedaconfig DM_MULTIPATH_QL
421fd5e0339SKiyoshi Ueda	tristate "I/O Path Selector based on the number of in-flight I/Os"
422fd5e0339SKiyoshi Ueda	depends on DM_MULTIPATH
423a7f7f624SMasahiro Yamada	help
424fd5e0339SKiyoshi Ueda	  This path selector is a dynamic load balancer which selects
425fd5e0339SKiyoshi Ueda	  the path with the least number of in-flight I/Os.
426fd5e0339SKiyoshi Ueda
427fd5e0339SKiyoshi Ueda	  If unsure, say N.
428fd5e0339SKiyoshi Ueda
429f392ba88SKiyoshi Uedaconfig DM_MULTIPATH_ST
430f392ba88SKiyoshi Ueda	tristate "I/O Path Selector based on the service time"
431f392ba88SKiyoshi Ueda	depends on DM_MULTIPATH
432a7f7f624SMasahiro Yamada	help
433f392ba88SKiyoshi Ueda	  This path selector is a dynamic load balancer which selects
434f392ba88SKiyoshi Ueda	  the path expected to complete the incoming I/O in the shortest
435f392ba88SKiyoshi Ueda	  time.
436f392ba88SKiyoshi Ueda
437f392ba88SKiyoshi Ueda	  If unsure, say N.
438f392ba88SKiyoshi Ueda
4392613eab1SKhazhismel Kumykovconfig DM_MULTIPATH_HST
4402613eab1SKhazhismel Kumykov	tristate "I/O Path Selector based on historical service time"
4412613eab1SKhazhismel Kumykov	depends on DM_MULTIPATH
4422613eab1SKhazhismel Kumykov	help
4432613eab1SKhazhismel Kumykov	  This path selector is a dynamic load balancer which selects
4442613eab1SKhazhismel Kumykov	  the path expected to complete the incoming I/O in the shortest
4452613eab1SKhazhismel Kumykov	  time by comparing estimated service time (based on historical
4462613eab1SKhazhismel Kumykov	  service time).
4472613eab1SKhazhismel Kumykov
4482613eab1SKhazhismel Kumykov	  If unsure, say N.
4492613eab1SKhazhismel Kumykov
450e4d2e82bSMike Christieconfig DM_MULTIPATH_IOA
451e4d2e82bSMike Christie	tristate "I/O Path Selector based on CPU submission"
452e4d2e82bSMike Christie	depends on DM_MULTIPATH
453e4d2e82bSMike Christie	help
454e4d2e82bSMike Christie	  This path selector selects the path based on the CPU the IO is
455e4d2e82bSMike Christie	  executed on and the CPU to path mapping setup at path addition time.
456e4d2e82bSMike Christie
457e4d2e82bSMike Christie	  If unsure, say N.
458e4d2e82bSMike Christie
45926b9f228SHeinz Mauelshagenconfig DM_DELAY
460d57916a0SAlasdair G Kergon	tristate "I/O delaying target"
461d57916a0SAlasdair G Kergon	depends on BLK_DEV_DM
462a7f7f624SMasahiro Yamada	help
46326b9f228SHeinz Mauelshagen	A target that delays reads and/or writes and can send
46426b9f228SHeinz Mauelshagen	them to different devices.  Useful for testing.
46526b9f228SHeinz Mauelshagen
46626b9f228SHeinz Mauelshagen	If unsure, say N.
46726b9f228SHeinz Mauelshagen
468e4f3fabdSBryan Gurneyconfig DM_DUST
469e4f3fabdSBryan Gurney	tristate "Bad sector simulation target"
470e4f3fabdSBryan Gurney	depends on BLK_DEV_DM
471a7f7f624SMasahiro Yamada	help
472e4f3fabdSBryan Gurney	A target that simulates bad sector behavior.
473e4f3fabdSBryan Gurney	Useful for testing.
474e4f3fabdSBryan Gurney
475e4f3fabdSBryan Gurney	If unsure, say N.
476e4f3fabdSBryan Gurney
4776bbc923dSHelen Koikeconfig DM_INIT
4786bbc923dSHelen Koike	bool "DM \"dm-mod.create=\" parameter support"
4796bbc923dSHelen Koike	depends on BLK_DEV_DM=y
480a7f7f624SMasahiro Yamada	help
4816bbc923dSHelen Koike	Enable "dm-mod.create=" parameter to create mapped devices at init time.
4826bbc923dSHelen Koike	This option is useful to allow mounting rootfs without requiring an
4836bbc923dSHelen Koike	initramfs.
4846cf2a73cSMauro Carvalho Chehab	See Documentation/admin-guide/device-mapper/dm-init.rst for dm-mod.create="..."
4856bbc923dSHelen Koike	format.
4866bbc923dSHelen Koike
4876bbc923dSHelen Koike	If unsure, say N.
4886bbc923dSHelen Koike
48951e5b2bdSMike Andersonconfig DM_UEVENT
490e0b215daSAlasdair G Kergon	bool "DM uevents"
491e0b215daSAlasdair G Kergon	depends on BLK_DEV_DM
492a7f7f624SMasahiro Yamada	help
49351e5b2bdSMike Anderson	Generate udev events for DM events.
49451e5b2bdSMike Anderson
4953407ef52SJosef Bacikconfig DM_FLAKEY
496d57916a0SAlasdair G Kergon       tristate "Flakey target"
497d57916a0SAlasdair G Kergon       depends on BLK_DEV_DM
498a7f7f624SMasahiro Yamada	help
4993407ef52SJosef Bacik	 A target that intermittently fails I/O for debugging purposes.
5003407ef52SJosef Bacik
501a4ffc152SMikulas Patockaconfig DM_VERITY
502d57916a0SAlasdair G Kergon	tristate "Verity target support"
503d57916a0SAlasdair G Kergon	depends on BLK_DEV_DM
504a4ffc152SMikulas Patocka	select CRYPTO
505a4ffc152SMikulas Patocka	select CRYPTO_HASH
506a4ffc152SMikulas Patocka	select DM_BUFIO
507a7f7f624SMasahiro Yamada	help
508a4ffc152SMikulas Patocka	  This device-mapper target creates a read-only device that
509a4ffc152SMikulas Patocka	  transparently validates the data on one underlying device against
510a4ffc152SMikulas Patocka	  a pre-generated tree of cryptographic checksums stored on a second
511a4ffc152SMikulas Patocka	  device.
512a4ffc152SMikulas Patocka
513a4ffc152SMikulas Patocka	  You'll need to activate the digests you're going to use in the
514a4ffc152SMikulas Patocka	  cryptoapi configuration.
515a4ffc152SMikulas Patocka
516a4ffc152SMikulas Patocka	  To compile this code as a module, choose M here: the module will
517a4ffc152SMikulas Patocka	  be called dm-verity.
518a4ffc152SMikulas Patocka
519a4ffc152SMikulas Patocka	  If unsure, say N.
520a4ffc152SMikulas Patocka
52188cd3e6cSJaskaran Khuranaconfig DM_VERITY_VERIFY_ROOTHASH_SIG
52288cd3e6cSJaskaran Khurana	def_bool n
52388cd3e6cSJaskaran Khurana	bool "Verity data device root hash signature verification support"
52488cd3e6cSJaskaran Khurana	depends on DM_VERITY
52588cd3e6cSJaskaran Khurana	select SYSTEM_DATA_VERIFICATION
52688cd3e6cSJaskaran Khurana	help
52788cd3e6cSJaskaran Khurana	  Add ability for dm-verity device to be validated if the
52888cd3e6cSJaskaran Khurana	  pre-generated tree of cryptographic checksums passed has a pkcs#7
52988cd3e6cSJaskaran Khurana	  signature file that can validate the roothash of the tree.
5304da8f8c8SMickaël Salaün
5314da8f8c8SMickaël Salaün	  By default, rely on the builtin trusted keyring.
5324da8f8c8SMickaël Salaün
5334da8f8c8SMickaël Salaün	  If unsure, say N.
5344da8f8c8SMickaël Salaün
5354da8f8c8SMickaël Salaünconfig DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING
5364da8f8c8SMickaël Salaün	bool "Verity data device root hash signature verification with secondary keyring"
5374da8f8c8SMickaël Salaün	depends on DM_VERITY_VERIFY_ROOTHASH_SIG
5384da8f8c8SMickaël Salaün	depends on SECONDARY_TRUSTED_KEYRING
5394da8f8c8SMickaël Salaün	help
5404da8f8c8SMickaël Salaün	  Rely on the secondary trusted keyring to verify dm-verity signatures.
54188cd3e6cSJaskaran Khurana
54288cd3e6cSJaskaran Khurana	  If unsure, say N.
54388cd3e6cSJaskaran Khurana
544a739ff3fSSami Tolvanenconfig DM_VERITY_FEC
545a739ff3fSSami Tolvanen	bool "Verity forward error correction support"
546a739ff3fSSami Tolvanen	depends on DM_VERITY
547a739ff3fSSami Tolvanen	select REED_SOLOMON
548a739ff3fSSami Tolvanen	select REED_SOLOMON_DEC8
549a7f7f624SMasahiro Yamada	help
550a739ff3fSSami Tolvanen	  Add forward error correction support to dm-verity. This option
551a739ff3fSSami Tolvanen	  makes it possible to use pre-generated error correction data to
552a739ff3fSSami Tolvanen	  recover from corrupted blocks.
553a739ff3fSSami Tolvanen
554a739ff3fSSami Tolvanen	  If unsure, say N.
555a739ff3fSSami Tolvanen
5569d0eb0abSJim Ramsayconfig DM_SWITCH
5579d0eb0abSJim Ramsay	tristate "Switch target support (EXPERIMENTAL)"
5589d0eb0abSJim Ramsay	depends on BLK_DEV_DM
559a7f7f624SMasahiro Yamada	help
5609d0eb0abSJim Ramsay	  This device-mapper target creates a device that supports an arbitrary
5619d0eb0abSJim Ramsay	  mapping of fixed-size regions of I/O across a fixed set of paths.
5629d0eb0abSJim Ramsay	  The path used for any specific region can be switched dynamically
5639d0eb0abSJim Ramsay	  by sending the target a message.
5649d0eb0abSJim Ramsay
5659d0eb0abSJim Ramsay	  To compile this code as a module, choose M here: the module will
5669d0eb0abSJim Ramsay	  be called dm-switch.
5679d0eb0abSJim Ramsay
5689d0eb0abSJim Ramsay	  If unsure, say N.
5699d0eb0abSJim Ramsay
5700e9cebe7SJosef Bacikconfig DM_LOG_WRITES
5710e9cebe7SJosef Bacik	tristate "Log writes target support"
5720e9cebe7SJosef Bacik	depends on BLK_DEV_DM
573a7f7f624SMasahiro Yamada	help
5740e9cebe7SJosef Bacik	  This device-mapper target takes two devices, one device to use
5750e9cebe7SJosef Bacik	  normally, one to log all write operations done to the first device.
5760e9cebe7SJosef Bacik	  This is for use by file system developers wishing to verify that
57757d42487SGeert Uytterhoeven	  their fs is writing a consistent file system at all times by allowing
5780e9cebe7SJosef Bacik	  them to replay the log in a variety of ways and to check the
5790e9cebe7SJosef Bacik	  contents.
5800e9cebe7SJosef Bacik
5810e9cebe7SJosef Bacik	  To compile this code as a module, choose M here: the module will
5820e9cebe7SJosef Bacik	  be called dm-log-writes.
5830e9cebe7SJosef Bacik
5840e9cebe7SJosef Bacik	  If unsure, say N.
5850e9cebe7SJosef Bacik
5867eada909SMikulas Patockaconfig DM_INTEGRITY
5877ab84db6SMike Snitzer	tristate "Integrity target support"
5887eada909SMikulas Patocka	depends on BLK_DEV_DM
5897eada909SMikulas Patocka	select BLK_DEV_INTEGRITY
5907eada909SMikulas Patocka	select DM_BUFIO
5917eada909SMikulas Patocka	select CRYPTO
592f7b347acSAnthony Iliopoulos	select CRYPTO_SKCIPHER
5937eada909SMikulas Patocka	select ASYNC_XOR
59482bb8599SMichael Weiß	select DM_AUDIT if AUDIT
595a7f7f624SMasahiro Yamada	help
5967ab84db6SMike Snitzer	  This device-mapper target emulates a block device that has
5977ab84db6SMike Snitzer	  additional per-sector tags that can be used for storing
5987ab84db6SMike Snitzer	  integrity information.
5997ab84db6SMike Snitzer
6007ab84db6SMike Snitzer	  This integrity target is used with the dm-crypt target to
6017ab84db6SMike Snitzer	  provide authenticated disk encryption or it can be used
6027ab84db6SMike Snitzer	  standalone.
6037ab84db6SMike Snitzer
6047ab84db6SMike Snitzer	  To compile this code as a module, choose M here: the module will
6057ab84db6SMike Snitzer	  be called dm-integrity.
6067ab84db6SMike Snitzer
6073b1a94c8SDamien Le Moalconfig DM_ZONED
6083b1a94c8SDamien Le Moal	tristate "Drive-managed zoned block device target support"
6093b1a94c8SDamien Le Moal	depends on BLK_DEV_DM
6103b1a94c8SDamien Le Moal	depends on BLK_DEV_ZONED
611b690bd54SArnd Bergmann	select CRC32
612a7f7f624SMasahiro Yamada	help
6133b1a94c8SDamien Le Moal	  This device-mapper target takes a host-managed or host-aware zoned
6143b1a94c8SDamien Le Moal	  block device and exposes most of its capacity as a regular block
6153b1a94c8SDamien Le Moal	  device (drive-managed zoned block device) without any write
6163b1a94c8SDamien Le Moal	  constraints. This is mainly intended for use with file systems that
6173b1a94c8SDamien Le Moal	  do not natively support zoned block devices but still want to
6183b1a94c8SDamien Le Moal	  benefit from the increased capacity offered by SMR disks. Other uses
6193b1a94c8SDamien Le Moal	  by applications using raw block devices (for example object stores)
6203b1a94c8SDamien Le Moal	  are also possible.
6213b1a94c8SDamien Le Moal
6223b1a94c8SDamien Le Moal	  To compile this code as a module, choose M here: the module will
6233b1a94c8SDamien Le Moal	  be called dm-zoned.
6243b1a94c8SDamien Le Moal
6257ab84db6SMike Snitzer	  If unsure, say N.
6267eada909SMikulas Patocka
6272cc1ae48SMichael Weißconfig DM_AUDIT
6282cc1ae48SMichael Weiß	bool "DM audit events"
6296849302fSMike Snitzer	depends on BLK_DEV_DM
6302cc1ae48SMichael Weiß	depends on AUDIT
6312cc1ae48SMichael Weiß	help
6322cc1ae48SMichael Weiß	  Generate audit events for device-mapper.
6332cc1ae48SMichael Weiß
6342cc1ae48SMichael Weiß	  Enables audit logging of several security relevant events in the
6352cc1ae48SMichael Weiß	  particular device-mapper targets, especially the integrity target.
6362cc1ae48SMichael Weiß
637*f36b1d3bSMike Snitzersource "drivers/md/dm-vdo/Kconfig"
638*f36b1d3bSMike Snitzer
639afd44034SJan Engelhardtendif # MD
640