Merge tag 'md-fixes-20230914' of https://git.kernel.org/pub/scm/linux/kernel/git...
[platform/kernel/linux-starfive.git] / block / Kconfig
1 # SPDX-License-Identifier: GPL-2.0
2 #
3 # Block layer core configuration
4 #
5 menuconfig BLOCK
6        bool "Enable the block layer" if EXPERT
7        default y
8        select FS_IOMAP
9        select SBITMAP
10        help
11          Provide block layer support for the kernel.
12
13          Disable this option to remove the block layer support from the
14          kernel. This may be useful for embedded devices.
15
16          If this option is disabled:
17
18            - block device files will become unusable
19            - some filesystems (such as ext3) will become unavailable.
20
21          Also, SCSI character devices and USB storage will be disabled since
22          they make use of various block layer definitions and facilities.
23
24          Say Y here unless you know you really don't want to mount disks and
25          suchlike.
26
27 if BLOCK
28
29 config BLOCK_LEGACY_AUTOLOAD
30         bool "Legacy autoloading support"
31         default y
32         help
33           Enable loading modules and creating block device instances based on
34           accesses through their device special file.  This is a historic Linux
35           feature and makes no sense in a udev world where device files are
36           created on demand, but scripts that manually create device nodes and
37           then call losetup might rely on this behavior.
38
39 config BLK_RQ_ALLOC_TIME
40         bool
41
42 config BLK_CGROUP_RWSTAT
43         bool
44
45 config BLK_CGROUP_PUNT_BIO
46         bool
47
48 config BLK_DEV_BSG_COMMON
49         tristate
50
51 config BLK_ICQ
52         bool
53
54 config BLK_DEV_BSGLIB
55         bool "Block layer SG support v4 helper lib"
56         select BLK_DEV_BSG_COMMON
57         help
58           Subsystems will normally enable this if needed. Users will not
59           normally need to manually enable this.
60
61           If unsure, say N.
62
63 config BLK_DEV_INTEGRITY
64         bool "Block layer data integrity support"
65         help
66         Some storage devices allow extra information to be
67         stored/retrieved to help protect the data.  The block layer
68         data integrity option provides hooks which can be used by
69         filesystems to ensure better data integrity.
70
71         Say yes here if you have a storage device that provides the
72         T10/SCSI Data Integrity Field or the T13/ATA External Path
73         Protection.  If in doubt, say N.
74
75 config BLK_DEV_INTEGRITY_T10
76         tristate
77         depends on BLK_DEV_INTEGRITY
78         select CRC_T10DIF
79         select CRC64_ROCKSOFT
80
81 config BLK_DEV_ZONED
82         bool "Zoned block device support"
83         select MQ_IOSCHED_DEADLINE
84         help
85         Block layer zoned block device support. This option enables
86         support for ZAC/ZBC/ZNS host-managed and host-aware zoned block
87         devices.
88
89         Say yes here if you have a ZAC, ZBC, or ZNS storage device.
90
91 config BLK_DEV_THROTTLING
92         bool "Block layer bio throttling support"
93         depends on BLK_CGROUP
94         select BLK_CGROUP_RWSTAT
95         help
96         Block layer bio throttling support. It can be used to limit
97         the IO rate to a device. IO rate policies are per cgroup and
98         one needs to mount and use blkio cgroup controller for creating
99         cgroups and specifying per device IO rate policies.
100
101         See Documentation/admin-guide/cgroup-v1/blkio-controller.rst for more information.
102
103 config BLK_DEV_THROTTLING_LOW
104         bool "Block throttling .low limit interface support (EXPERIMENTAL)"
105         depends on BLK_DEV_THROTTLING
106         help
107         Add .low limit interface for block throttling. The low limit is a best
108         effort limit to prioritize cgroups. Depending on the setting, the limit
109         can be used to protect cgroups in terms of bandwidth/iops and better
110         utilize disk resource.
111
112         Note, this is an experimental interface and could be changed someday.
113
114 config BLK_WBT
115         bool "Enable support for block device writeback throttling"
116         help
117         Enabling this option enables the block layer to throttle buffered
118         background writeback from the VM, making it more smooth and having
119         less impact on foreground operations. The throttling is done
120         dynamically on an algorithm loosely based on CoDel, factoring in
121         the realtime performance of the disk.
122
123 config BLK_WBT_MQ
124         bool "Enable writeback throttling by default"
125         default y
126         depends on BLK_WBT
127         help
128         Enable writeback throttling by default for request-based block devices.
129
130 config BLK_CGROUP_IOLATENCY
131         bool "Enable support for latency based cgroup IO protection"
132         depends on BLK_CGROUP
133         help
134         Enabling this option enables the .latency interface for IO throttling.
135         The IO controller will attempt to maintain average IO latencies below
136         the configured latency target, throttling anybody with a higher latency
137         target than the victimized group.
138
139         Note, this is an experimental interface and could be changed someday.
140
141 config BLK_CGROUP_FC_APPID
142         bool "Enable support to track FC I/O Traffic across cgroup applications"
143         depends on BLK_CGROUP && NVME_FC
144         help
145           Enabling this option enables the support to track FC I/O traffic across
146           cgroup applications. It enables the Fabric and the storage targets to
147           identify, monitor, and handle FC traffic based on VM tags by inserting
148           application specific identification into the FC frame.
149
150 config BLK_CGROUP_IOCOST
151         bool "Enable support for cost model based cgroup IO controller"
152         depends on BLK_CGROUP
153         select BLK_RQ_ALLOC_TIME
154         help
155         Enabling this option enables the .weight interface for cost
156         model based proportional IO control.  The IO controller
157         distributes IO capacity between different groups based on
158         their share of the overall weight distribution.
159
160 config BLK_CGROUP_IOPRIO
161         bool "Cgroup I/O controller for assigning an I/O priority class"
162         depends on BLK_CGROUP
163         help
164         Enable the .prio interface for assigning an I/O priority class to
165         requests. The I/O priority class affects the order in which an I/O
166         scheduler and block devices process requests. Only some I/O schedulers
167         and some block devices support I/O priorities.
168
169 config BLK_DEBUG_FS
170         bool "Block layer debugging information in debugfs"
171         default y
172         depends on DEBUG_FS
173         help
174         Include block layer debugging information in debugfs. This information
175         is mostly useful for kernel developers, but it doesn't incur any cost
176         at runtime.
177
178         Unless you are building a kernel for a tiny system, you should
179         say Y here.
180
181 config BLK_DEBUG_FS_ZONED
182        bool
183        default BLK_DEBUG_FS && BLK_DEV_ZONED
184
185 config BLK_SED_OPAL
186         bool "Logic for interfacing with Opal enabled SEDs"
187         depends on KEYS
188         select PSERIES_PLPKS if PPC_PSERIES
189         help
190         Builds Logic for interfacing with Opal enabled controllers.
191         Enabling this option enables users to setup/unlock/lock
192         Locking ranges for SED devices using the Opal protocol.
193
194 config BLK_INLINE_ENCRYPTION
195         bool "Enable inline encryption support in block layer"
196         help
197           Build the blk-crypto subsystem. Enabling this lets the
198           block layer handle encryption, so users can take
199           advantage of inline encryption hardware if present.
200
201 config BLK_INLINE_ENCRYPTION_FALLBACK
202         bool "Enable crypto API fallback for blk-crypto"
203         depends on BLK_INLINE_ENCRYPTION
204         select CRYPTO
205         select CRYPTO_SKCIPHER
206         help
207           Enabling this lets the block layer handle inline encryption
208           by falling back to the kernel crypto API when inline
209           encryption hardware is not present.
210
211 source "block/partitions/Kconfig"
212
213 config BLK_MQ_PCI
214         def_bool PCI
215
216 config BLK_MQ_VIRTIO
217         bool
218         depends on VIRTIO
219         default y
220
221 config BLK_PM
222         def_bool PM
223
224 # do not use in new code
225 config BLOCK_HOLDER_DEPRECATED
226         bool
227
228 config BLK_MQ_STACKING
229         bool
230
231 source "block/Kconfig.iosched"
232
233 endif # BLOCK