xref: /OK3568_Linux_fs/kernel/block/Kconfig (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# Block layer core configuration
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyunmenuconfig BLOCK
6*4882a593Smuzhiyun       bool "Enable the block layer" if EXPERT
7*4882a593Smuzhiyun       default y
8*4882a593Smuzhiyun       select SBITMAP
9*4882a593Smuzhiyun       select SRCU
10*4882a593Smuzhiyun       help
11*4882a593Smuzhiyun	 Provide block layer support for the kernel.
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun	 Disable this option to remove the block layer support from the
14*4882a593Smuzhiyun	 kernel. This may be useful for embedded devices.
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun	 If this option is disabled:
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun	   - block device files will become unusable
19*4882a593Smuzhiyun	   - some filesystems (such as ext3) will become unavailable.
20*4882a593Smuzhiyun
21*4882a593Smuzhiyun	 Also, SCSI character devices and USB storage will be disabled since
22*4882a593Smuzhiyun	 they make use of various block layer definitions and facilities.
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun	 Say Y here unless you know you really don't want to mount disks and
25*4882a593Smuzhiyun	 suchlike.
26*4882a593Smuzhiyun
27*4882a593Smuzhiyunif BLOCK
28*4882a593Smuzhiyun
29*4882a593Smuzhiyunconfig BLK_RQ_ALLOC_TIME
30*4882a593Smuzhiyun	bool
31*4882a593Smuzhiyun
32*4882a593Smuzhiyunconfig BLK_SCSI_REQUEST
33*4882a593Smuzhiyun	bool
34*4882a593Smuzhiyun
35*4882a593Smuzhiyunconfig BLK_CGROUP_RWSTAT
36*4882a593Smuzhiyun	bool
37*4882a593Smuzhiyun
38*4882a593Smuzhiyunconfig BLK_DEV_BSG
39*4882a593Smuzhiyun	bool "Block layer SG support v4"
40*4882a593Smuzhiyun	default y
41*4882a593Smuzhiyun	select BLK_SCSI_REQUEST
42*4882a593Smuzhiyun	help
43*4882a593Smuzhiyun	  Saying Y here will enable generic SG (SCSI generic) v4 support
44*4882a593Smuzhiyun	  for any block device.
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun	  Unlike SG v3 (aka block/scsi_ioctl.c drivers/scsi/sg.c), SG v4
47*4882a593Smuzhiyun	  can handle complicated SCSI commands: tagged variable length cdbs
48*4882a593Smuzhiyun	  with bidirectional data transfers and generic request/response
49*4882a593Smuzhiyun	  protocols (e.g. Task Management Functions and SMP in Serial
50*4882a593Smuzhiyun	  Attached SCSI).
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun	  This option is required by recent UDEV versions to properly
53*4882a593Smuzhiyun	  access device serial numbers, etc.
54*4882a593Smuzhiyun
55*4882a593Smuzhiyun	  If unsure, say Y.
56*4882a593Smuzhiyun
57*4882a593Smuzhiyunconfig BLK_DEV_BSGLIB
58*4882a593Smuzhiyun	bool "Block layer SG support v4 helper lib"
59*4882a593Smuzhiyun	select BLK_DEV_BSG
60*4882a593Smuzhiyun	select BLK_SCSI_REQUEST
61*4882a593Smuzhiyun	help
62*4882a593Smuzhiyun	  Subsystems will normally enable this if needed. Users will not
63*4882a593Smuzhiyun	  normally need to manually enable this.
64*4882a593Smuzhiyun
65*4882a593Smuzhiyun	  If unsure, say N.
66*4882a593Smuzhiyun
67*4882a593Smuzhiyunconfig BLK_DEV_INTEGRITY
68*4882a593Smuzhiyun	bool "Block layer data integrity support"
69*4882a593Smuzhiyun	help
70*4882a593Smuzhiyun	Some storage devices allow extra information to be
71*4882a593Smuzhiyun	stored/retrieved to help protect the data.  The block layer
72*4882a593Smuzhiyun	data integrity option provides hooks which can be used by
73*4882a593Smuzhiyun	filesystems to ensure better data integrity.
74*4882a593Smuzhiyun
75*4882a593Smuzhiyun	Say yes here if you have a storage device that provides the
76*4882a593Smuzhiyun	T10/SCSI Data Integrity Field or the T13/ATA External Path
77*4882a593Smuzhiyun	Protection.  If in doubt, say N.
78*4882a593Smuzhiyun
79*4882a593Smuzhiyunconfig BLK_DEV_INTEGRITY_T10
80*4882a593Smuzhiyun	tristate
81*4882a593Smuzhiyun	depends on BLK_DEV_INTEGRITY
82*4882a593Smuzhiyun	select CRC_T10DIF
83*4882a593Smuzhiyun
84*4882a593Smuzhiyunconfig BLK_DEV_ZONED
85*4882a593Smuzhiyun	bool "Zoned block device support"
86*4882a593Smuzhiyun	select MQ_IOSCHED_DEADLINE
87*4882a593Smuzhiyun	help
88*4882a593Smuzhiyun	Block layer zoned block device support. This option enables
89*4882a593Smuzhiyun	support for ZAC/ZBC/ZNS host-managed and host-aware zoned block
90*4882a593Smuzhiyun	devices.
91*4882a593Smuzhiyun
92*4882a593Smuzhiyun	Say yes here if you have a ZAC, ZBC, or ZNS storage device.
93*4882a593Smuzhiyun
94*4882a593Smuzhiyunconfig BLK_DEV_THROTTLING
95*4882a593Smuzhiyun	bool "Block layer bio throttling support"
96*4882a593Smuzhiyun	depends on BLK_CGROUP=y
97*4882a593Smuzhiyun	select BLK_CGROUP_RWSTAT
98*4882a593Smuzhiyun	help
99*4882a593Smuzhiyun	Block layer bio throttling support. It can be used to limit
100*4882a593Smuzhiyun	the IO rate to a device. IO rate policies are per cgroup and
101*4882a593Smuzhiyun	one needs to mount and use blkio cgroup controller for creating
102*4882a593Smuzhiyun	cgroups and specifying per device IO rate policies.
103*4882a593Smuzhiyun
104*4882a593Smuzhiyun	See Documentation/admin-guide/cgroup-v1/blkio-controller.rst for more information.
105*4882a593Smuzhiyun
106*4882a593Smuzhiyunconfig BLK_DEV_THROTTLING_LOW
107*4882a593Smuzhiyun	bool "Block throttling .low limit interface support (EXPERIMENTAL)"
108*4882a593Smuzhiyun	depends on BLK_DEV_THROTTLING
109*4882a593Smuzhiyun	help
110*4882a593Smuzhiyun	Add .low limit interface for block throttling. The low limit is a best
111*4882a593Smuzhiyun	effort limit to prioritize cgroups. Depending on the setting, the limit
112*4882a593Smuzhiyun	can be used to protect cgroups in terms of bandwidth/iops and better
113*4882a593Smuzhiyun	utilize disk resource.
114*4882a593Smuzhiyun
115*4882a593Smuzhiyun	Note, this is an experimental interface and could be changed someday.
116*4882a593Smuzhiyun
117*4882a593Smuzhiyunconfig BLK_CMDLINE_PARSER
118*4882a593Smuzhiyun	bool "Block device command line partition parser"
119*4882a593Smuzhiyun	help
120*4882a593Smuzhiyun	Enabling this option allows you to specify the partition layout from
121*4882a593Smuzhiyun	the kernel boot args.  This is typically of use for embedded devices
122*4882a593Smuzhiyun	which don't otherwise have any standardized method for listing the
123*4882a593Smuzhiyun	partitions on a block device.
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun	See Documentation/block/cmdline-partition.rst for more information.
126*4882a593Smuzhiyun
127*4882a593Smuzhiyunconfig BLK_WBT
128*4882a593Smuzhiyun	bool "Enable support for block device writeback throttling"
129*4882a593Smuzhiyun	help
130*4882a593Smuzhiyun	Enabling this option enables the block layer to throttle buffered
131*4882a593Smuzhiyun	background writeback from the VM, making it more smooth and having
132*4882a593Smuzhiyun	less impact on foreground operations. The throttling is done
133*4882a593Smuzhiyun	dynamically on an algorithm loosely based on CoDel, factoring in
134*4882a593Smuzhiyun	the realtime performance of the disk.
135*4882a593Smuzhiyun
136*4882a593Smuzhiyunconfig BLK_WBT_MQ
137*4882a593Smuzhiyun	bool "Enable writeback throttling by default"
138*4882a593Smuzhiyun	default y
139*4882a593Smuzhiyun	depends on BLK_WBT
140*4882a593Smuzhiyun	help
141*4882a593Smuzhiyun	Enable writeback throttling by default for request-based block devices.
142*4882a593Smuzhiyun
143*4882a593Smuzhiyunconfig BLK_CGROUP_IOLATENCY
144*4882a593Smuzhiyun	bool "Enable support for latency based cgroup IO protection"
145*4882a593Smuzhiyun	depends on BLK_CGROUP=y
146*4882a593Smuzhiyun	help
147*4882a593Smuzhiyun	Enabling this option enables the .latency interface for IO throttling.
148*4882a593Smuzhiyun	The IO controller will attempt to maintain average IO latencies below
149*4882a593Smuzhiyun	the configured latency target, throttling anybody with a higher latency
150*4882a593Smuzhiyun	target than the victimized group.
151*4882a593Smuzhiyun
152*4882a593Smuzhiyun	Note, this is an experimental interface and could be changed someday.
153*4882a593Smuzhiyun
154*4882a593Smuzhiyunconfig BLK_CGROUP_IOCOST
155*4882a593Smuzhiyun	bool "Enable support for cost model based cgroup IO controller"
156*4882a593Smuzhiyun	depends on BLK_CGROUP=y
157*4882a593Smuzhiyun	select BLK_RQ_IO_DATA_LEN
158*4882a593Smuzhiyun	select BLK_RQ_ALLOC_TIME
159*4882a593Smuzhiyun	help
160*4882a593Smuzhiyun	Enabling this option enables the .weight interface for cost
161*4882a593Smuzhiyun	model based proportional IO control.  The IO controller
162*4882a593Smuzhiyun	distributes IO capacity between different groups based on
163*4882a593Smuzhiyun	their share of the overall weight distribution.
164*4882a593Smuzhiyun
165*4882a593Smuzhiyunconfig BLK_CGROUP_IOPRIO
166*4882a593Smuzhiyun	bool "Cgroup I/O controller for assigning an I/O priority class"
167*4882a593Smuzhiyun	depends on BLK_CGROUP
168*4882a593Smuzhiyun	help
169*4882a593Smuzhiyun	Enable the .prio interface for assigning an I/O priority class to
170*4882a593Smuzhiyun	requests. The I/O priority class affects the order in which an I/O
171*4882a593Smuzhiyun	scheduler and block devices process requests. Only some I/O schedulers
172*4882a593Smuzhiyun	and some block devices support I/O priorities.
173*4882a593Smuzhiyun
174*4882a593Smuzhiyunconfig BLK_DEBUG_FS
175*4882a593Smuzhiyun	bool "Block layer debugging information in debugfs"
176*4882a593Smuzhiyun	default y
177*4882a593Smuzhiyun	depends on DEBUG_FS
178*4882a593Smuzhiyun	help
179*4882a593Smuzhiyun	Include block layer debugging information in debugfs. This information
180*4882a593Smuzhiyun	is mostly useful for kernel developers, but it doesn't incur any cost
181*4882a593Smuzhiyun	at runtime.
182*4882a593Smuzhiyun
183*4882a593Smuzhiyun	Unless you are building a kernel for a tiny system, you should
184*4882a593Smuzhiyun	say Y here.
185*4882a593Smuzhiyun
186*4882a593Smuzhiyunconfig BLK_DEBUG_FS_ZONED
187*4882a593Smuzhiyun       bool
188*4882a593Smuzhiyun       default BLK_DEBUG_FS && BLK_DEV_ZONED
189*4882a593Smuzhiyun
190*4882a593Smuzhiyunconfig BLK_SED_OPAL
191*4882a593Smuzhiyun	bool "Logic for interfacing with Opal enabled SEDs"
192*4882a593Smuzhiyun	help
193*4882a593Smuzhiyun	Builds Logic for interfacing with Opal enabled controllers.
194*4882a593Smuzhiyun	Enabling this option enables users to setup/unlock/lock
195*4882a593Smuzhiyun	Locking ranges for SED devices using the Opal protocol.
196*4882a593Smuzhiyun
197*4882a593Smuzhiyunconfig BLK_INLINE_ENCRYPTION
198*4882a593Smuzhiyun	bool "Enable inline encryption support in block layer"
199*4882a593Smuzhiyun	help
200*4882a593Smuzhiyun	  Build the blk-crypto subsystem. Enabling this lets the
201*4882a593Smuzhiyun	  block layer handle encryption, so users can take
202*4882a593Smuzhiyun	  advantage of inline encryption hardware if present.
203*4882a593Smuzhiyun
204*4882a593Smuzhiyunconfig BLK_INLINE_ENCRYPTION_FALLBACK
205*4882a593Smuzhiyun	bool "Enable crypto API fallback for blk-crypto"
206*4882a593Smuzhiyun	depends on BLK_INLINE_ENCRYPTION
207*4882a593Smuzhiyun	select CRYPTO
208*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
209*4882a593Smuzhiyun	help
210*4882a593Smuzhiyun	  Enabling this lets the block layer handle inline encryption
211*4882a593Smuzhiyun	  by falling back to the kernel crypto API when inline
212*4882a593Smuzhiyun	  encryption hardware is not present.
213*4882a593Smuzhiyun
214*4882a593Smuzhiyunmenu "Partition Types"
215*4882a593Smuzhiyun
216*4882a593Smuzhiyunsource "block/partitions/Kconfig"
217*4882a593Smuzhiyun
218*4882a593Smuzhiyunendmenu
219*4882a593Smuzhiyun
220*4882a593Smuzhiyunendif # BLOCK
221*4882a593Smuzhiyun
222*4882a593Smuzhiyunconfig BLOCK_COMPAT
223*4882a593Smuzhiyun	bool
224*4882a593Smuzhiyun	depends on BLOCK && COMPAT
225*4882a593Smuzhiyun	default y
226*4882a593Smuzhiyun
227*4882a593Smuzhiyunconfig BLK_MQ_PCI
228*4882a593Smuzhiyun	bool
229*4882a593Smuzhiyun	depends on BLOCK && PCI
230*4882a593Smuzhiyun	default y
231*4882a593Smuzhiyun
232*4882a593Smuzhiyunconfig BLK_MQ_VIRTIO
233*4882a593Smuzhiyun	tristate
234*4882a593Smuzhiyun	depends on BLOCK && VIRTIO
235*4882a593Smuzhiyun	default y
236*4882a593Smuzhiyun
237*4882a593Smuzhiyunconfig BLK_MQ_RDMA
238*4882a593Smuzhiyun	bool
239*4882a593Smuzhiyun	depends on BLOCK && INFINIBAND
240*4882a593Smuzhiyun	default y
241*4882a593Smuzhiyun
242*4882a593Smuzhiyunconfig BLK_PM
243*4882a593Smuzhiyun	def_bool BLOCK && PM
244*4882a593Smuzhiyun
245*4882a593Smuzhiyunsource "block/Kconfig.iosched"
246