162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci#
362306a36Sopenharmony_ci# Block device driver configuration
462306a36Sopenharmony_ci#
562306a36Sopenharmony_ci
662306a36Sopenharmony_cimenuconfig MD
762306a36Sopenharmony_ci	bool "Multiple devices driver support (RAID and LVM)"
862306a36Sopenharmony_ci	depends on BLOCK
962306a36Sopenharmony_ci	help
1062306a36Sopenharmony_ci	  Support multiple physical spindles through a single logical device.
1162306a36Sopenharmony_ci	  Required for RAID and logical volume management.
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ciif MD
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciconfig BLK_DEV_MD
1662306a36Sopenharmony_ci	tristate "RAID support"
1762306a36Sopenharmony_ci	select BLOCK_HOLDER_DEPRECATED if SYSFS
1862306a36Sopenharmony_ci	select BUFFER_HEAD
1962306a36Sopenharmony_ci	# BLOCK_LEGACY_AUTOLOAD requirement should be removed
2062306a36Sopenharmony_ci	# after relevant mdadm enhancements - to make "names=yes"
2162306a36Sopenharmony_ci	# the default - are widely available.
2262306a36Sopenharmony_ci	select BLOCK_LEGACY_AUTOLOAD
2362306a36Sopenharmony_ci	help
2462306a36Sopenharmony_ci	  This driver lets you combine several hard disk partitions into one
2562306a36Sopenharmony_ci	  logical block device. This can be used to simply append one
2662306a36Sopenharmony_ci	  partition to another one or to combine several redundant hard disks
2762306a36Sopenharmony_ci	  into a RAID1/4/5 device so as to provide protection against hard
2862306a36Sopenharmony_ci	  disk failures. This is called "Software RAID" since the combining of
2962306a36Sopenharmony_ci	  the partitions is done by the kernel. "Hardware RAID" means that the
3062306a36Sopenharmony_ci	  combining is done by a dedicated controller; if you have such a
3162306a36Sopenharmony_ci	  controller, you do not need to say Y here.
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci	  More information about Software RAID on Linux is contained in the
3462306a36Sopenharmony_ci	  Software RAID mini-HOWTO, available from
3562306a36Sopenharmony_ci	  <https://www.tldp.org/docs.html#howto>. There you will also learn
3662306a36Sopenharmony_ci	  where to get the supporting user space utilities raidtools.
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci	  If unsure, say N.
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ciconfig MD_AUTODETECT
4162306a36Sopenharmony_ci	bool "Autodetect RAID arrays during kernel boot"
4262306a36Sopenharmony_ci	depends on BLK_DEV_MD=y
4362306a36Sopenharmony_ci	default y
4462306a36Sopenharmony_ci	help
4562306a36Sopenharmony_ci	  If you say Y here, then the kernel will try to autodetect raid
4662306a36Sopenharmony_ci	  arrays as part of its boot process.
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci	  If you don't use raid and say Y, this autodetection can cause
4962306a36Sopenharmony_ci	  a several-second delay in the boot time due to various
5062306a36Sopenharmony_ci	  synchronisation steps that are part of this step.
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci	  If unsure, say Y.
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ciconfig MD_BITMAP_FILE
5562306a36Sopenharmony_ci	bool "MD bitmap file support (deprecated)"
5662306a36Sopenharmony_ci	default y
5762306a36Sopenharmony_ci	help
5862306a36Sopenharmony_ci	  If you say Y here, support for write intent bitmaps in files on an
5962306a36Sopenharmony_ci	  external file system is enabled.  This is an alternative to the internal
6062306a36Sopenharmony_ci	  bitmaps near the MD superblock, and very problematic code that abuses
6162306a36Sopenharmony_ci	  various kernel APIs and can only work with files on a file system not
6262306a36Sopenharmony_ci	  actually sitting on the MD device.
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ciconfig MD_LINEAR
6562306a36Sopenharmony_ci	tristate "Linear (append) mode (deprecated)"
6662306a36Sopenharmony_ci	depends on BLK_DEV_MD
6762306a36Sopenharmony_ci	help
6862306a36Sopenharmony_ci	  If you say Y here, then your multiple devices driver will be able to
6962306a36Sopenharmony_ci	  use the so-called linear mode, i.e. it will combine the hard disk
7062306a36Sopenharmony_ci	  partitions by simply appending one to the other.
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci	  To compile this as a module, choose M here: the module
7362306a36Sopenharmony_ci	  will be called linear.
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci	  If unsure, say Y.
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ciconfig MD_RAID0
7862306a36Sopenharmony_ci	tristate "RAID-0 (striping) mode"
7962306a36Sopenharmony_ci	depends on BLK_DEV_MD
8062306a36Sopenharmony_ci	help
8162306a36Sopenharmony_ci	  If you say Y here, then your multiple devices driver will be able to
8262306a36Sopenharmony_ci	  use the so-called raid0 mode, i.e. it will combine the hard disk
8362306a36Sopenharmony_ci	  partitions into one logical device in such a fashion as to fill them
8462306a36Sopenharmony_ci	  up evenly, one chunk here and one chunk there. This will increase
8562306a36Sopenharmony_ci	  the throughput rate if the partitions reside on distinct disks.
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci	  Information about Software RAID on Linux is contained in the
8862306a36Sopenharmony_ci	  Software-RAID mini-HOWTO, available from
8962306a36Sopenharmony_ci	  <https://www.tldp.org/docs.html#howto>. There you will also
9062306a36Sopenharmony_ci	  learn where to get the supporting user space utilities raidtools.
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci	  To compile this as a module, choose M here: the module
9362306a36Sopenharmony_ci	  will be called raid0.
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci	  If unsure, say Y.
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ciconfig MD_RAID1
9862306a36Sopenharmony_ci	tristate "RAID-1 (mirroring) mode"
9962306a36Sopenharmony_ci	depends on BLK_DEV_MD
10062306a36Sopenharmony_ci	help
10162306a36Sopenharmony_ci	  A RAID-1 set consists of several disk drives which are exact copies
10262306a36Sopenharmony_ci	  of each other.  In the event of a mirror failure, the RAID driver
10362306a36Sopenharmony_ci	  will continue to use the operational mirrors in the set, providing
10462306a36Sopenharmony_ci	  an error free MD (multiple device) to the higher levels of the
10562306a36Sopenharmony_ci	  kernel.  In a set with N drives, the available space is the capacity
10662306a36Sopenharmony_ci	  of a single drive, and the set protects against a failure of (N - 1)
10762306a36Sopenharmony_ci	  drives.
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci	  Information about Software RAID on Linux is contained in the
11062306a36Sopenharmony_ci	  Software-RAID mini-HOWTO, available from
11162306a36Sopenharmony_ci	  <https://www.tldp.org/docs.html#howto>.  There you will also
11262306a36Sopenharmony_ci	  learn where to get the supporting user space utilities raidtools.
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci	  If you want to use such a RAID-1 set, say Y.  To compile this code
11562306a36Sopenharmony_ci	  as a module, choose M here: the module will be called raid1.
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ci	  If unsure, say Y.
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ciconfig MD_RAID10
12062306a36Sopenharmony_ci	tristate "RAID-10 (mirrored striping) mode"
12162306a36Sopenharmony_ci	depends on BLK_DEV_MD
12262306a36Sopenharmony_ci	help
12362306a36Sopenharmony_ci	  RAID-10 provides a combination of striping (RAID-0) and
12462306a36Sopenharmony_ci	  mirroring (RAID-1) with easier configuration and more flexible
12562306a36Sopenharmony_ci	  layout.
12662306a36Sopenharmony_ci	  Unlike RAID-0, but like RAID-1, RAID-10 requires all devices to
12762306a36Sopenharmony_ci	  be the same size (or at least, only as much as the smallest device
12862306a36Sopenharmony_ci	  will be used).
12962306a36Sopenharmony_ci	  RAID-10 provides a variety of layouts that provide different levels
13062306a36Sopenharmony_ci	  of redundancy and performance.
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci	  RAID-10 requires mdadm-1.7.0 or later, available at:
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ci	  https://www.kernel.org/pub/linux/utils/raid/mdadm/
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ci	  If unsure, say Y.
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ciconfig MD_RAID456
13962306a36Sopenharmony_ci	tristate "RAID-4/RAID-5/RAID-6 mode"
14062306a36Sopenharmony_ci	depends on BLK_DEV_MD
14162306a36Sopenharmony_ci	select RAID6_PQ
14262306a36Sopenharmony_ci	select LIBCRC32C
14362306a36Sopenharmony_ci	select ASYNC_MEMCPY
14462306a36Sopenharmony_ci	select ASYNC_XOR
14562306a36Sopenharmony_ci	select ASYNC_PQ
14662306a36Sopenharmony_ci	select ASYNC_RAID6_RECOV
14762306a36Sopenharmony_ci	help
14862306a36Sopenharmony_ci	  A RAID-5 set of N drives with a capacity of C MB per drive provides
14962306a36Sopenharmony_ci	  the capacity of C * (N - 1) MB, and protects against a failure
15062306a36Sopenharmony_ci	  of a single drive. For a given sector (row) number, (N - 1) drives
15162306a36Sopenharmony_ci	  contain data sectors, and one drive contains the parity protection.
15262306a36Sopenharmony_ci	  For a RAID-4 set, the parity blocks are present on a single drive,
15362306a36Sopenharmony_ci	  while a RAID-5 set distributes the parity across the drives in one
15462306a36Sopenharmony_ci	  of the available parity distribution methods.
15562306a36Sopenharmony_ci
15662306a36Sopenharmony_ci	  A RAID-6 set of N drives with a capacity of C MB per drive
15762306a36Sopenharmony_ci	  provides the capacity of C * (N - 2) MB, and protects
15862306a36Sopenharmony_ci	  against a failure of any two drives. For a given sector
15962306a36Sopenharmony_ci	  (row) number, (N - 2) drives contain data sectors, and two
16062306a36Sopenharmony_ci	  drives contains two independent redundancy syndromes.  Like
16162306a36Sopenharmony_ci	  RAID-5, RAID-6 distributes the syndromes across the drives
16262306a36Sopenharmony_ci	  in one of the available parity distribution methods.
16362306a36Sopenharmony_ci
16462306a36Sopenharmony_ci	  Information about Software RAID on Linux is contained in the
16562306a36Sopenharmony_ci	  Software-RAID mini-HOWTO, available from
16662306a36Sopenharmony_ci	  <https://www.tldp.org/docs.html#howto>. There you will also
16762306a36Sopenharmony_ci	  learn where to get the supporting user space utilities raidtools.
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ci	  If you want to use such a RAID-4/RAID-5/RAID-6 set, say Y.  To
17062306a36Sopenharmony_ci	  compile this code as a module, choose M here: the module
17162306a36Sopenharmony_ci	  will be called raid456.
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ci	  If unsure, say Y.
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ciconfig MD_MULTIPATH
17662306a36Sopenharmony_ci	tristate "Multipath I/O support (deprecated)"
17762306a36Sopenharmony_ci	depends on BLK_DEV_MD
17862306a36Sopenharmony_ci	help
17962306a36Sopenharmony_ci	  MD_MULTIPATH provides a simple multi-path personality for use
18062306a36Sopenharmony_ci	  the MD framework.  It is not under active development.  New
18162306a36Sopenharmony_ci	  projects should consider using DM_MULTIPATH which has more
18262306a36Sopenharmony_ci	  features and more testing.
18362306a36Sopenharmony_ci
18462306a36Sopenharmony_ci	  If unsure, say N.
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ciconfig MD_FAULTY
18762306a36Sopenharmony_ci	tristate "Faulty test module for MD (deprecated)"
18862306a36Sopenharmony_ci	depends on BLK_DEV_MD
18962306a36Sopenharmony_ci	help
19062306a36Sopenharmony_ci	  The "faulty" module allows for a block device that occasionally returns
19162306a36Sopenharmony_ci	  read or write errors.  It is useful for testing.
19262306a36Sopenharmony_ci
19362306a36Sopenharmony_ci	  In unsure, say N.
19462306a36Sopenharmony_ci
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_ciconfig MD_CLUSTER
19762306a36Sopenharmony_ci	tristate "Cluster Support for MD"
19862306a36Sopenharmony_ci	depends on BLK_DEV_MD
19962306a36Sopenharmony_ci	depends on DLM
20062306a36Sopenharmony_ci	default n
20162306a36Sopenharmony_ci	help
20262306a36Sopenharmony_ci	Clustering support for MD devices. This enables locking and
20362306a36Sopenharmony_ci	synchronization across multiple systems on the cluster, so all
20462306a36Sopenharmony_ci	nodes in the cluster can access the MD devices simultaneously.
20562306a36Sopenharmony_ci
20662306a36Sopenharmony_ci	This brings the redundancy (and uptime) of RAID levels across the
20762306a36Sopenharmony_ci	nodes of the cluster. Currently, it can work with raid1 and raid10
20862306a36Sopenharmony_ci	(limited support).
20962306a36Sopenharmony_ci
21062306a36Sopenharmony_ci	If unsure, say N.
21162306a36Sopenharmony_ci
21262306a36Sopenharmony_cisource "drivers/md/bcache/Kconfig"
21362306a36Sopenharmony_ci
21462306a36Sopenharmony_ciconfig BLK_DEV_DM_BUILTIN
21562306a36Sopenharmony_ci	bool
21662306a36Sopenharmony_ci
21762306a36Sopenharmony_ciconfig BLK_DEV_DM
21862306a36Sopenharmony_ci	tristate "Device mapper support"
21962306a36Sopenharmony_ci	select BLOCK_HOLDER_DEPRECATED if SYSFS
22062306a36Sopenharmony_ci	select BLK_DEV_DM_BUILTIN
22162306a36Sopenharmony_ci	select BLK_MQ_STACKING
22262306a36Sopenharmony_ci	depends on DAX || DAX=n
22362306a36Sopenharmony_ci	help
22462306a36Sopenharmony_ci	  Device-mapper is a low level volume manager.  It works by allowing
22562306a36Sopenharmony_ci	  people to specify mappings for ranges of logical sectors.  Various
22662306a36Sopenharmony_ci	  mapping types are available, in addition people may write their own
22762306a36Sopenharmony_ci	  modules containing custom mappings if they wish.
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ci	  Higher level volume managers such as LVM2 use this driver.
23062306a36Sopenharmony_ci
23162306a36Sopenharmony_ci	  To compile this as a module, choose M here: the module will be
23262306a36Sopenharmony_ci	  called dm-mod.
23362306a36Sopenharmony_ci
23462306a36Sopenharmony_ci	  If unsure, say N.
23562306a36Sopenharmony_ci
23662306a36Sopenharmony_ciconfig DM_DEBUG
23762306a36Sopenharmony_ci	bool "Device mapper debugging support"
23862306a36Sopenharmony_ci	depends on BLK_DEV_DM
23962306a36Sopenharmony_ci	help
24062306a36Sopenharmony_ci	  Enable this for messages that may help debug device-mapper problems.
24162306a36Sopenharmony_ci
24262306a36Sopenharmony_ci	  If unsure, say N.
24362306a36Sopenharmony_ci
24462306a36Sopenharmony_ciconfig DM_BUFIO
24562306a36Sopenharmony_ci       tristate
24662306a36Sopenharmony_ci       depends on BLK_DEV_DM
24762306a36Sopenharmony_ci	help
24862306a36Sopenharmony_ci	 This interface allows you to do buffered I/O on a device and acts
24962306a36Sopenharmony_ci	 as a cache, holding recently-read blocks in memory and performing
25062306a36Sopenharmony_ci	 delayed writes.
25162306a36Sopenharmony_ci
25262306a36Sopenharmony_ciconfig DM_DEBUG_BLOCK_MANAGER_LOCKING
25362306a36Sopenharmony_ci       bool "Block manager locking"
25462306a36Sopenharmony_ci       depends on DM_BUFIO
25562306a36Sopenharmony_ci	help
25662306a36Sopenharmony_ci	 Block manager locking can catch various metadata corruption issues.
25762306a36Sopenharmony_ci
25862306a36Sopenharmony_ci	 If unsure, say N.
25962306a36Sopenharmony_ci
26062306a36Sopenharmony_ciconfig DM_DEBUG_BLOCK_STACK_TRACING
26162306a36Sopenharmony_ci       bool "Keep stack trace of persistent data block lock holders"
26262306a36Sopenharmony_ci       depends on STACKTRACE_SUPPORT && DM_DEBUG_BLOCK_MANAGER_LOCKING
26362306a36Sopenharmony_ci       select STACKTRACE
26462306a36Sopenharmony_ci	help
26562306a36Sopenharmony_ci	 Enable this for messages that may help debug problems with the
26662306a36Sopenharmony_ci	 block manager locking used by thin provisioning and caching.
26762306a36Sopenharmony_ci
26862306a36Sopenharmony_ci	 If unsure, say N.
26962306a36Sopenharmony_ci
27062306a36Sopenharmony_ciconfig DM_BIO_PRISON
27162306a36Sopenharmony_ci       tristate
27262306a36Sopenharmony_ci       depends on BLK_DEV_DM
27362306a36Sopenharmony_ci	help
27462306a36Sopenharmony_ci	 Some bio locking schemes used by other device-mapper targets
27562306a36Sopenharmony_ci	 including thin provisioning.
27662306a36Sopenharmony_ci
27762306a36Sopenharmony_cisource "drivers/md/persistent-data/Kconfig"
27862306a36Sopenharmony_ci
27962306a36Sopenharmony_ciconfig DM_UNSTRIPED
28062306a36Sopenharmony_ci       tristate "Unstriped target"
28162306a36Sopenharmony_ci       depends on BLK_DEV_DM
28262306a36Sopenharmony_ci	help
28362306a36Sopenharmony_ci	  Unstripes I/O so it is issued solely on a single drive in a HW
28462306a36Sopenharmony_ci	  RAID0 or dm-striped target.
28562306a36Sopenharmony_ci
28662306a36Sopenharmony_ciconfig DM_CRYPT
28762306a36Sopenharmony_ci	tristate "Crypt target support"
28862306a36Sopenharmony_ci	depends on BLK_DEV_DM
28962306a36Sopenharmony_ci	depends on (ENCRYPTED_KEYS || ENCRYPTED_KEYS=n)
29062306a36Sopenharmony_ci	depends on (TRUSTED_KEYS || TRUSTED_KEYS=n)
29162306a36Sopenharmony_ci	select CRYPTO
29262306a36Sopenharmony_ci	select CRYPTO_CBC
29362306a36Sopenharmony_ci	select CRYPTO_ESSIV
29462306a36Sopenharmony_ci	help
29562306a36Sopenharmony_ci	  This device-mapper target allows you to create a device that
29662306a36Sopenharmony_ci	  transparently encrypts the data on it. You'll need to activate
29762306a36Sopenharmony_ci	  the ciphers you're going to use in the cryptoapi configuration.
29862306a36Sopenharmony_ci
29962306a36Sopenharmony_ci	  For further information on dm-crypt and userspace tools see:
30062306a36Sopenharmony_ci	  <https://gitlab.com/cryptsetup/cryptsetup/wikis/DMCrypt>
30162306a36Sopenharmony_ci
30262306a36Sopenharmony_ci	  To compile this code as a module, choose M here: the module will
30362306a36Sopenharmony_ci	  be called dm-crypt.
30462306a36Sopenharmony_ci
30562306a36Sopenharmony_ci	  If unsure, say N.
30662306a36Sopenharmony_ci
30762306a36Sopenharmony_ciconfig DM_SNAPSHOT
30862306a36Sopenharmony_ci       tristate "Snapshot target"
30962306a36Sopenharmony_ci       depends on BLK_DEV_DM
31062306a36Sopenharmony_ci       select DM_BUFIO
31162306a36Sopenharmony_ci	help
31262306a36Sopenharmony_ci	 Allow volume managers to take writable snapshots of a device.
31362306a36Sopenharmony_ci
31462306a36Sopenharmony_ciconfig DM_THIN_PROVISIONING
31562306a36Sopenharmony_ci       tristate "Thin provisioning target"
31662306a36Sopenharmony_ci       depends on BLK_DEV_DM
31762306a36Sopenharmony_ci       select DM_PERSISTENT_DATA
31862306a36Sopenharmony_ci       select DM_BIO_PRISON
31962306a36Sopenharmony_ci	help
32062306a36Sopenharmony_ci	 Provides thin provisioning and snapshots that share a data store.
32162306a36Sopenharmony_ci
32262306a36Sopenharmony_ciconfig DM_CACHE
32362306a36Sopenharmony_ci       tristate "Cache target (EXPERIMENTAL)"
32462306a36Sopenharmony_ci       depends on BLK_DEV_DM
32562306a36Sopenharmony_ci       default n
32662306a36Sopenharmony_ci       select DM_PERSISTENT_DATA
32762306a36Sopenharmony_ci       select DM_BIO_PRISON
32862306a36Sopenharmony_ci	help
32962306a36Sopenharmony_ci	 dm-cache attempts to improve performance of a block device by
33062306a36Sopenharmony_ci	 moving frequently used data to a smaller, higher performance
33162306a36Sopenharmony_ci	 device.  Different 'policy' plugins can be used to change the
33262306a36Sopenharmony_ci	 algorithms used to select which blocks are promoted, demoted,
33362306a36Sopenharmony_ci	 cleaned etc.  It supports writeback and writethrough modes.
33462306a36Sopenharmony_ci
33562306a36Sopenharmony_ciconfig DM_CACHE_SMQ
33662306a36Sopenharmony_ci       tristate "Stochastic MQ Cache Policy (EXPERIMENTAL)"
33762306a36Sopenharmony_ci       depends on DM_CACHE
33862306a36Sopenharmony_ci       default y
33962306a36Sopenharmony_ci	help
34062306a36Sopenharmony_ci	 A cache policy that uses a multiqueue ordered by recent hits
34162306a36Sopenharmony_ci	 to select which blocks should be promoted and demoted.
34262306a36Sopenharmony_ci	 This is meant to be a general purpose policy.  It prioritises
34362306a36Sopenharmony_ci	 reads over writes.  This SMQ policy (vs MQ) offers the promise
34462306a36Sopenharmony_ci	 of less memory utilization, improved performance and increased
34562306a36Sopenharmony_ci	 adaptability in the face of changing workloads.
34662306a36Sopenharmony_ci
34762306a36Sopenharmony_ciconfig DM_WRITECACHE
34862306a36Sopenharmony_ci	tristate "Writecache target"
34962306a36Sopenharmony_ci	depends on BLK_DEV_DM
35062306a36Sopenharmony_ci	help
35162306a36Sopenharmony_ci	   The writecache target caches writes on persistent memory or SSD.
35262306a36Sopenharmony_ci	   It is intended for databases or other programs that need extremely
35362306a36Sopenharmony_ci	   low commit latency.
35462306a36Sopenharmony_ci
35562306a36Sopenharmony_ci	   The writecache target doesn't cache reads because reads are supposed
35662306a36Sopenharmony_ci	   to be cached in standard RAM.
35762306a36Sopenharmony_ci
35862306a36Sopenharmony_ciconfig DM_EBS
35962306a36Sopenharmony_ci	tristate "Emulated block size target (EXPERIMENTAL)"
36062306a36Sopenharmony_ci	depends on BLK_DEV_DM && !HIGHMEM
36162306a36Sopenharmony_ci	select DM_BUFIO
36262306a36Sopenharmony_ci	help
36362306a36Sopenharmony_ci	  dm-ebs emulates smaller logical block size on backing devices
36462306a36Sopenharmony_ci	  with larger ones (e.g. 512 byte sectors on 4K native disks).
36562306a36Sopenharmony_ci
36662306a36Sopenharmony_ciconfig DM_ERA
36762306a36Sopenharmony_ci       tristate "Era target (EXPERIMENTAL)"
36862306a36Sopenharmony_ci       depends on BLK_DEV_DM
36962306a36Sopenharmony_ci       default n
37062306a36Sopenharmony_ci       select DM_PERSISTENT_DATA
37162306a36Sopenharmony_ci       select DM_BIO_PRISON
37262306a36Sopenharmony_ci	help
37362306a36Sopenharmony_ci	 dm-era tracks which parts of a block device are written to
37462306a36Sopenharmony_ci	 over time.  Useful for maintaining cache coherency when using
37562306a36Sopenharmony_ci	 vendor snapshots.
37662306a36Sopenharmony_ci
37762306a36Sopenharmony_ciconfig DM_CLONE
37862306a36Sopenharmony_ci       tristate "Clone target (EXPERIMENTAL)"
37962306a36Sopenharmony_ci       depends on BLK_DEV_DM
38062306a36Sopenharmony_ci       default n
38162306a36Sopenharmony_ci       select DM_PERSISTENT_DATA
38262306a36Sopenharmony_ci	help
38362306a36Sopenharmony_ci	 dm-clone produces a one-to-one copy of an existing, read-only source
38462306a36Sopenharmony_ci	 device into a writable destination device. The cloned device is
38562306a36Sopenharmony_ci	 visible/mountable immediately and the copy of the source device to the
38662306a36Sopenharmony_ci	 destination device happens in the background, in parallel with user
38762306a36Sopenharmony_ci	 I/O.
38862306a36Sopenharmony_ci
38962306a36Sopenharmony_ci	 If unsure, say N.
39062306a36Sopenharmony_ci
39162306a36Sopenharmony_ciconfig DM_MIRROR
39262306a36Sopenharmony_ci       tristate "Mirror target"
39362306a36Sopenharmony_ci       depends on BLK_DEV_DM
39462306a36Sopenharmony_ci	help
39562306a36Sopenharmony_ci	 Allow volume managers to mirror logical volumes, also
39662306a36Sopenharmony_ci	 needed for live data migration tools such as 'pvmove'.
39762306a36Sopenharmony_ci
39862306a36Sopenharmony_ciconfig DM_LOG_USERSPACE
39962306a36Sopenharmony_ci	tristate "Mirror userspace logging"
40062306a36Sopenharmony_ci	depends on DM_MIRROR && NET
40162306a36Sopenharmony_ci	select CONNECTOR
40262306a36Sopenharmony_ci	help
40362306a36Sopenharmony_ci	  The userspace logging module provides a mechanism for
40462306a36Sopenharmony_ci	  relaying the dm-dirty-log API to userspace.  Log designs
40562306a36Sopenharmony_ci	  which are more suited to userspace implementation (e.g.
40662306a36Sopenharmony_ci	  shared storage logs) or experimental logs can be implemented
40762306a36Sopenharmony_ci	  by leveraging this framework.
40862306a36Sopenharmony_ci
40962306a36Sopenharmony_ciconfig DM_RAID
41062306a36Sopenharmony_ci       tristate "RAID 1/4/5/6/10 target"
41162306a36Sopenharmony_ci       depends on BLK_DEV_DM
41262306a36Sopenharmony_ci       select MD_RAID0
41362306a36Sopenharmony_ci       select MD_RAID1
41462306a36Sopenharmony_ci       select MD_RAID10
41562306a36Sopenharmony_ci       select MD_RAID456
41662306a36Sopenharmony_ci       select BLK_DEV_MD
41762306a36Sopenharmony_ci	help
41862306a36Sopenharmony_ci	 A dm target that supports RAID1, RAID10, RAID4, RAID5 and RAID6 mappings
41962306a36Sopenharmony_ci
42062306a36Sopenharmony_ci	 A RAID-5 set of N drives with a capacity of C MB per drive provides
42162306a36Sopenharmony_ci	 the capacity of C * (N - 1) MB, and protects against a failure
42262306a36Sopenharmony_ci	 of a single drive. For a given sector (row) number, (N - 1) drives
42362306a36Sopenharmony_ci	 contain data sectors, and one drive contains the parity protection.
42462306a36Sopenharmony_ci	 For a RAID-4 set, the parity blocks are present on a single drive,
42562306a36Sopenharmony_ci	 while a RAID-5 set distributes the parity across the drives in one
42662306a36Sopenharmony_ci	 of the available parity distribution methods.
42762306a36Sopenharmony_ci
42862306a36Sopenharmony_ci	 A RAID-6 set of N drives with a capacity of C MB per drive
42962306a36Sopenharmony_ci	 provides the capacity of C * (N - 2) MB, and protects
43062306a36Sopenharmony_ci	 against a failure of any two drives. For a given sector
43162306a36Sopenharmony_ci	 (row) number, (N - 2) drives contain data sectors, and two
43262306a36Sopenharmony_ci	 drives contains two independent redundancy syndromes.  Like
43362306a36Sopenharmony_ci	 RAID-5, RAID-6 distributes the syndromes across the drives
43462306a36Sopenharmony_ci	 in one of the available parity distribution methods.
43562306a36Sopenharmony_ci
43662306a36Sopenharmony_ciconfig DM_ZERO
43762306a36Sopenharmony_ci	tristate "Zero target"
43862306a36Sopenharmony_ci	depends on BLK_DEV_DM
43962306a36Sopenharmony_ci	help
44062306a36Sopenharmony_ci	  A target that discards writes, and returns all zeroes for
44162306a36Sopenharmony_ci	  reads.  Useful in some recovery situations.
44262306a36Sopenharmony_ci
44362306a36Sopenharmony_ciconfig DM_MULTIPATH
44462306a36Sopenharmony_ci	tristate "Multipath target"
44562306a36Sopenharmony_ci	depends on BLK_DEV_DM
44662306a36Sopenharmony_ci	# nasty syntax but means make DM_MULTIPATH independent
44762306a36Sopenharmony_ci	# of SCSI_DH if the latter isn't defined but if
44862306a36Sopenharmony_ci	# it is, DM_MULTIPATH must depend on it.  We get a build
44962306a36Sopenharmony_ci	# error if SCSI_DH=m and DM_MULTIPATH=y
45062306a36Sopenharmony_ci	depends on !SCSI_DH || SCSI
45162306a36Sopenharmony_ci	help
45262306a36Sopenharmony_ci	  Allow volume managers to support multipath hardware.
45362306a36Sopenharmony_ci
45462306a36Sopenharmony_ciconfig DM_MULTIPATH_QL
45562306a36Sopenharmony_ci	tristate "I/O Path Selector based on the number of in-flight I/Os"
45662306a36Sopenharmony_ci	depends on DM_MULTIPATH
45762306a36Sopenharmony_ci	help
45862306a36Sopenharmony_ci	  This path selector is a dynamic load balancer which selects
45962306a36Sopenharmony_ci	  the path with the least number of in-flight I/Os.
46062306a36Sopenharmony_ci
46162306a36Sopenharmony_ci	  If unsure, say N.
46262306a36Sopenharmony_ci
46362306a36Sopenharmony_ciconfig DM_MULTIPATH_ST
46462306a36Sopenharmony_ci	tristate "I/O Path Selector based on the service time"
46562306a36Sopenharmony_ci	depends on DM_MULTIPATH
46662306a36Sopenharmony_ci	help
46762306a36Sopenharmony_ci	  This path selector is a dynamic load balancer which selects
46862306a36Sopenharmony_ci	  the path expected to complete the incoming I/O in the shortest
46962306a36Sopenharmony_ci	  time.
47062306a36Sopenharmony_ci
47162306a36Sopenharmony_ci	  If unsure, say N.
47262306a36Sopenharmony_ci
47362306a36Sopenharmony_ciconfig DM_MULTIPATH_HST
47462306a36Sopenharmony_ci	tristate "I/O Path Selector based on historical service time"
47562306a36Sopenharmony_ci	depends on DM_MULTIPATH
47662306a36Sopenharmony_ci	help
47762306a36Sopenharmony_ci	  This path selector is a dynamic load balancer which selects
47862306a36Sopenharmony_ci	  the path expected to complete the incoming I/O in the shortest
47962306a36Sopenharmony_ci	  time by comparing estimated service time (based on historical
48062306a36Sopenharmony_ci	  service time).
48162306a36Sopenharmony_ci
48262306a36Sopenharmony_ci	  If unsure, say N.
48362306a36Sopenharmony_ci
48462306a36Sopenharmony_ciconfig DM_MULTIPATH_IOA
48562306a36Sopenharmony_ci	tristate "I/O Path Selector based on CPU submission"
48662306a36Sopenharmony_ci	depends on DM_MULTIPATH
48762306a36Sopenharmony_ci	help
48862306a36Sopenharmony_ci	  This path selector selects the path based on the CPU the IO is
48962306a36Sopenharmony_ci	  executed on and the CPU to path mapping setup at path addition time.
49062306a36Sopenharmony_ci
49162306a36Sopenharmony_ci	  If unsure, say N.
49262306a36Sopenharmony_ci
49362306a36Sopenharmony_ciconfig DM_DELAY
49462306a36Sopenharmony_ci	tristate "I/O delaying target"
49562306a36Sopenharmony_ci	depends on BLK_DEV_DM
49662306a36Sopenharmony_ci	help
49762306a36Sopenharmony_ci	A target that delays reads and/or writes and can send
49862306a36Sopenharmony_ci	them to different devices.  Useful for testing.
49962306a36Sopenharmony_ci
50062306a36Sopenharmony_ci	If unsure, say N.
50162306a36Sopenharmony_ci
50262306a36Sopenharmony_ciconfig DM_DUST
50362306a36Sopenharmony_ci	tristate "Bad sector simulation target"
50462306a36Sopenharmony_ci	depends on BLK_DEV_DM
50562306a36Sopenharmony_ci	help
50662306a36Sopenharmony_ci	A target that simulates bad sector behavior.
50762306a36Sopenharmony_ci	Useful for testing.
50862306a36Sopenharmony_ci
50962306a36Sopenharmony_ci	If unsure, say N.
51062306a36Sopenharmony_ci
51162306a36Sopenharmony_ciconfig DM_INIT
51262306a36Sopenharmony_ci	bool "DM \"dm-mod.create=\" parameter support"
51362306a36Sopenharmony_ci	depends on BLK_DEV_DM=y
51462306a36Sopenharmony_ci	help
51562306a36Sopenharmony_ci	Enable "dm-mod.create=" parameter to create mapped devices at init time.
51662306a36Sopenharmony_ci	This option is useful to allow mounting rootfs without requiring an
51762306a36Sopenharmony_ci	initramfs.
51862306a36Sopenharmony_ci	See Documentation/admin-guide/device-mapper/dm-init.rst for dm-mod.create="..."
51962306a36Sopenharmony_ci	format.
52062306a36Sopenharmony_ci
52162306a36Sopenharmony_ci	If unsure, say N.
52262306a36Sopenharmony_ci
52362306a36Sopenharmony_ciconfig DM_UEVENT
52462306a36Sopenharmony_ci	bool "DM uevents"
52562306a36Sopenharmony_ci	depends on BLK_DEV_DM
52662306a36Sopenharmony_ci	help
52762306a36Sopenharmony_ci	Generate udev events for DM events.
52862306a36Sopenharmony_ci
52962306a36Sopenharmony_ciconfig DM_FLAKEY
53062306a36Sopenharmony_ci       tristate "Flakey target"
53162306a36Sopenharmony_ci       depends on BLK_DEV_DM
53262306a36Sopenharmony_ci	help
53362306a36Sopenharmony_ci	 A target that intermittently fails I/O for debugging purposes.
53462306a36Sopenharmony_ci
53562306a36Sopenharmony_ciconfig DM_VERITY
53662306a36Sopenharmony_ci	tristate "Verity target support"
53762306a36Sopenharmony_ci	depends on BLK_DEV_DM
53862306a36Sopenharmony_ci	select CRYPTO
53962306a36Sopenharmony_ci	select CRYPTO_HASH
54062306a36Sopenharmony_ci	select DM_BUFIO
54162306a36Sopenharmony_ci	help
54262306a36Sopenharmony_ci	  This device-mapper target creates a read-only device that
54362306a36Sopenharmony_ci	  transparently validates the data on one underlying device against
54462306a36Sopenharmony_ci	  a pre-generated tree of cryptographic checksums stored on a second
54562306a36Sopenharmony_ci	  device.
54662306a36Sopenharmony_ci
54762306a36Sopenharmony_ci	  You'll need to activate the digests you're going to use in the
54862306a36Sopenharmony_ci	  cryptoapi configuration.
54962306a36Sopenharmony_ci
55062306a36Sopenharmony_ci	  To compile this code as a module, choose M here: the module will
55162306a36Sopenharmony_ci	  be called dm-verity.
55262306a36Sopenharmony_ci
55362306a36Sopenharmony_ci	  If unsure, say N.
55462306a36Sopenharmony_ci
55562306a36Sopenharmony_ciconfig DM_VERITY_VERIFY_ROOTHASH_SIG
55662306a36Sopenharmony_ci	def_bool n
55762306a36Sopenharmony_ci	bool "Verity data device root hash signature verification support"
55862306a36Sopenharmony_ci	depends on DM_VERITY
55962306a36Sopenharmony_ci	select SYSTEM_DATA_VERIFICATION
56062306a36Sopenharmony_ci	help
56162306a36Sopenharmony_ci	  Add ability for dm-verity device to be validated if the
56262306a36Sopenharmony_ci	  pre-generated tree of cryptographic checksums passed has a pkcs#7
56362306a36Sopenharmony_ci	  signature file that can validate the roothash of the tree.
56462306a36Sopenharmony_ci
56562306a36Sopenharmony_ci	  By default, rely on the builtin trusted keyring.
56662306a36Sopenharmony_ci
56762306a36Sopenharmony_ci	  If unsure, say N.
56862306a36Sopenharmony_ci
56962306a36Sopenharmony_ciconfig DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING
57062306a36Sopenharmony_ci	bool "Verity data device root hash signature verification with secondary keyring"
57162306a36Sopenharmony_ci	depends on DM_VERITY_VERIFY_ROOTHASH_SIG
57262306a36Sopenharmony_ci	depends on SECONDARY_TRUSTED_KEYRING
57362306a36Sopenharmony_ci	help
57462306a36Sopenharmony_ci	  Rely on the secondary trusted keyring to verify dm-verity signatures.
57562306a36Sopenharmony_ci
57662306a36Sopenharmony_ci	  If unsure, say N.
57762306a36Sopenharmony_ci
57862306a36Sopenharmony_ciconfig DM_VERITY_FEC
57962306a36Sopenharmony_ci	bool "Verity forward error correction support"
58062306a36Sopenharmony_ci	depends on DM_VERITY
58162306a36Sopenharmony_ci	select REED_SOLOMON
58262306a36Sopenharmony_ci	select REED_SOLOMON_DEC8
58362306a36Sopenharmony_ci	help
58462306a36Sopenharmony_ci	  Add forward error correction support to dm-verity. This option
58562306a36Sopenharmony_ci	  makes it possible to use pre-generated error correction data to
58662306a36Sopenharmony_ci	  recover from corrupted blocks.
58762306a36Sopenharmony_ci
58862306a36Sopenharmony_ci	  If unsure, say N.
58962306a36Sopenharmony_ci
59062306a36Sopenharmony_ciconfig DM_SWITCH
59162306a36Sopenharmony_ci	tristate "Switch target support (EXPERIMENTAL)"
59262306a36Sopenharmony_ci	depends on BLK_DEV_DM
59362306a36Sopenharmony_ci	help
59462306a36Sopenharmony_ci	  This device-mapper target creates a device that supports an arbitrary
59562306a36Sopenharmony_ci	  mapping of fixed-size regions of I/O across a fixed set of paths.
59662306a36Sopenharmony_ci	  The path used for any specific region can be switched dynamically
59762306a36Sopenharmony_ci	  by sending the target a message.
59862306a36Sopenharmony_ci
59962306a36Sopenharmony_ci	  To compile this code as a module, choose M here: the module will
60062306a36Sopenharmony_ci	  be called dm-switch.
60162306a36Sopenharmony_ci
60262306a36Sopenharmony_ci	  If unsure, say N.
60362306a36Sopenharmony_ci
60462306a36Sopenharmony_ciconfig DM_LOG_WRITES
60562306a36Sopenharmony_ci	tristate "Log writes target support"
60662306a36Sopenharmony_ci	depends on BLK_DEV_DM
60762306a36Sopenharmony_ci	help
60862306a36Sopenharmony_ci	  This device-mapper target takes two devices, one device to use
60962306a36Sopenharmony_ci	  normally, one to log all write operations done to the first device.
61062306a36Sopenharmony_ci	  This is for use by file system developers wishing to verify that
61162306a36Sopenharmony_ci	  their fs is writing a consistent file system at all times by allowing
61262306a36Sopenharmony_ci	  them to replay the log in a variety of ways and to check the
61362306a36Sopenharmony_ci	  contents.
61462306a36Sopenharmony_ci
61562306a36Sopenharmony_ci	  To compile this code as a module, choose M here: the module will
61662306a36Sopenharmony_ci	  be called dm-log-writes.
61762306a36Sopenharmony_ci
61862306a36Sopenharmony_ci	  If unsure, say N.
61962306a36Sopenharmony_ci
62062306a36Sopenharmony_ciconfig DM_INTEGRITY
62162306a36Sopenharmony_ci	tristate "Integrity target support"
62262306a36Sopenharmony_ci	depends on BLK_DEV_DM
62362306a36Sopenharmony_ci	select BLK_DEV_INTEGRITY
62462306a36Sopenharmony_ci	select DM_BUFIO
62562306a36Sopenharmony_ci	select CRYPTO
62662306a36Sopenharmony_ci	select CRYPTO_SKCIPHER
62762306a36Sopenharmony_ci	select ASYNC_XOR
62862306a36Sopenharmony_ci	select DM_AUDIT if AUDIT
62962306a36Sopenharmony_ci	help
63062306a36Sopenharmony_ci	  This device-mapper target emulates a block device that has
63162306a36Sopenharmony_ci	  additional per-sector tags that can be used for storing
63262306a36Sopenharmony_ci	  integrity information.
63362306a36Sopenharmony_ci
63462306a36Sopenharmony_ci	  This integrity target is used with the dm-crypt target to
63562306a36Sopenharmony_ci	  provide authenticated disk encryption or it can be used
63662306a36Sopenharmony_ci	  standalone.
63762306a36Sopenharmony_ci
63862306a36Sopenharmony_ci	  To compile this code as a module, choose M here: the module will
63962306a36Sopenharmony_ci	  be called dm-integrity.
64062306a36Sopenharmony_ci
64162306a36Sopenharmony_ciconfig DM_ZONED
64262306a36Sopenharmony_ci	tristate "Drive-managed zoned block device target support"
64362306a36Sopenharmony_ci	depends on BLK_DEV_DM
64462306a36Sopenharmony_ci	depends on BLK_DEV_ZONED
64562306a36Sopenharmony_ci	select CRC32
64662306a36Sopenharmony_ci	help
64762306a36Sopenharmony_ci	  This device-mapper target takes a host-managed or host-aware zoned
64862306a36Sopenharmony_ci	  block device and exposes most of its capacity as a regular block
64962306a36Sopenharmony_ci	  device (drive-managed zoned block device) without any write
65062306a36Sopenharmony_ci	  constraints. This is mainly intended for use with file systems that
65162306a36Sopenharmony_ci	  do not natively support zoned block devices but still want to
65262306a36Sopenharmony_ci	  benefit from the increased capacity offered by SMR disks. Other uses
65362306a36Sopenharmony_ci	  by applications using raw block devices (for example object stores)
65462306a36Sopenharmony_ci	  are also possible.
65562306a36Sopenharmony_ci
65662306a36Sopenharmony_ci	  To compile this code as a module, choose M here: the module will
65762306a36Sopenharmony_ci	  be called dm-zoned.
65862306a36Sopenharmony_ci
65962306a36Sopenharmony_ci	  If unsure, say N.
66062306a36Sopenharmony_ci
66162306a36Sopenharmony_ciconfig DM_AUDIT
66262306a36Sopenharmony_ci	bool "DM audit events"
66362306a36Sopenharmony_ci	depends on BLK_DEV_DM
66462306a36Sopenharmony_ci	depends on AUDIT
66562306a36Sopenharmony_ci	help
66662306a36Sopenharmony_ci	  Generate audit events for device-mapper.
66762306a36Sopenharmony_ci
66862306a36Sopenharmony_ci	  Enables audit logging of several security relevant events in the
66962306a36Sopenharmony_ci	  particular device-mapper targets, especially the integrity target.
67062306a36Sopenharmony_ci
67162306a36Sopenharmony_ciendif # MD
672