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