18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci# 38c2ecf20Sopenharmony_ci# Block layer core configuration 48c2ecf20Sopenharmony_ci# 58c2ecf20Sopenharmony_cimenuconfig BLOCK 68c2ecf20Sopenharmony_ci bool "Enable the block layer" if EXPERT 78c2ecf20Sopenharmony_ci default y 88c2ecf20Sopenharmony_ci select SBITMAP 98c2ecf20Sopenharmony_ci select SRCU 108c2ecf20Sopenharmony_ci help 118c2ecf20Sopenharmony_ci Provide block layer support for the kernel. 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci Disable this option to remove the block layer support from the 148c2ecf20Sopenharmony_ci kernel. This may be useful for embedded devices. 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci If this option is disabled: 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci - block device files will become unusable 198c2ecf20Sopenharmony_ci - some filesystems (such as ext3) will become unavailable. 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci Also, SCSI character devices and USB storage will be disabled since 228c2ecf20Sopenharmony_ci they make use of various block layer definitions and facilities. 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci Say Y here unless you know you really don't want to mount disks and 258c2ecf20Sopenharmony_ci suchlike. 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ciif BLOCK 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ciconfig BLK_RQ_ALLOC_TIME 308c2ecf20Sopenharmony_ci bool 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ciconfig BLK_SCSI_REQUEST 338c2ecf20Sopenharmony_ci bool 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ciconfig BLK_CGROUP_RWSTAT 368c2ecf20Sopenharmony_ci bool 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ciconfig BLK_DEV_BSG 398c2ecf20Sopenharmony_ci bool "Block layer SG support v4" 408c2ecf20Sopenharmony_ci default y 418c2ecf20Sopenharmony_ci select BLK_SCSI_REQUEST 428c2ecf20Sopenharmony_ci help 438c2ecf20Sopenharmony_ci Saying Y here will enable generic SG (SCSI generic) v4 support 448c2ecf20Sopenharmony_ci for any block device. 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci Unlike SG v3 (aka block/scsi_ioctl.c drivers/scsi/sg.c), SG v4 478c2ecf20Sopenharmony_ci can handle complicated SCSI commands: tagged variable length cdbs 488c2ecf20Sopenharmony_ci with bidirectional data transfers and generic request/response 498c2ecf20Sopenharmony_ci protocols (e.g. Task Management Functions and SMP in Serial 508c2ecf20Sopenharmony_ci Attached SCSI). 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ci This option is required by recent UDEV versions to properly 538c2ecf20Sopenharmony_ci access device serial numbers, etc. 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_ci If unsure, say Y. 568c2ecf20Sopenharmony_ci 578c2ecf20Sopenharmony_ciconfig BLK_DEV_BSGLIB 588c2ecf20Sopenharmony_ci bool "Block layer SG support v4 helper lib" 598c2ecf20Sopenharmony_ci select BLK_DEV_BSG 608c2ecf20Sopenharmony_ci select BLK_SCSI_REQUEST 618c2ecf20Sopenharmony_ci help 628c2ecf20Sopenharmony_ci Subsystems will normally enable this if needed. Users will not 638c2ecf20Sopenharmony_ci normally need to manually enable this. 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_ci If unsure, say N. 668c2ecf20Sopenharmony_ci 678c2ecf20Sopenharmony_ciconfig BLK_DEV_INTEGRITY 688c2ecf20Sopenharmony_ci bool "Block layer data integrity support" 698c2ecf20Sopenharmony_ci help 708c2ecf20Sopenharmony_ci Some storage devices allow extra information to be 718c2ecf20Sopenharmony_ci stored/retrieved to help protect the data. The block layer 728c2ecf20Sopenharmony_ci data integrity option provides hooks which can be used by 738c2ecf20Sopenharmony_ci filesystems to ensure better data integrity. 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_ci Say yes here if you have a storage device that provides the 768c2ecf20Sopenharmony_ci T10/SCSI Data Integrity Field or the T13/ATA External Path 778c2ecf20Sopenharmony_ci Protection. If in doubt, say N. 788c2ecf20Sopenharmony_ci 798c2ecf20Sopenharmony_ciconfig BLK_DEV_INTEGRITY_T10 808c2ecf20Sopenharmony_ci tristate 818c2ecf20Sopenharmony_ci depends on BLK_DEV_INTEGRITY 828c2ecf20Sopenharmony_ci select CRC_T10DIF 838c2ecf20Sopenharmony_ci 848c2ecf20Sopenharmony_ciconfig BLK_DEV_ZONED 858c2ecf20Sopenharmony_ci bool "Zoned block device support" 868c2ecf20Sopenharmony_ci select MQ_IOSCHED_DEADLINE 878c2ecf20Sopenharmony_ci help 888c2ecf20Sopenharmony_ci Block layer zoned block device support. This option enables 898c2ecf20Sopenharmony_ci support for ZAC/ZBC/ZNS host-managed and host-aware zoned block 908c2ecf20Sopenharmony_ci devices. 918c2ecf20Sopenharmony_ci 928c2ecf20Sopenharmony_ci Say yes here if you have a ZAC, ZBC, or ZNS storage device. 938c2ecf20Sopenharmony_ci 948c2ecf20Sopenharmony_ciconfig BLK_DEV_THROTTLING 958c2ecf20Sopenharmony_ci bool "Block layer bio throttling support" 968c2ecf20Sopenharmony_ci depends on BLK_CGROUP=y 978c2ecf20Sopenharmony_ci select BLK_CGROUP_RWSTAT 988c2ecf20Sopenharmony_ci help 998c2ecf20Sopenharmony_ci Block layer bio throttling support. It can be used to limit 1008c2ecf20Sopenharmony_ci the IO rate to a device. IO rate policies are per cgroup and 1018c2ecf20Sopenharmony_ci one needs to mount and use blkio cgroup controller for creating 1028c2ecf20Sopenharmony_ci cgroups and specifying per device IO rate policies. 1038c2ecf20Sopenharmony_ci 1048c2ecf20Sopenharmony_ci See Documentation/admin-guide/cgroup-v1/blkio-controller.rst for more information. 1058c2ecf20Sopenharmony_ci 1068c2ecf20Sopenharmony_ciconfig BLK_DEV_THROTTLING_LOW 1078c2ecf20Sopenharmony_ci bool "Block throttling .low limit interface support (EXPERIMENTAL)" 1088c2ecf20Sopenharmony_ci depends on BLK_DEV_THROTTLING 1098c2ecf20Sopenharmony_ci help 1108c2ecf20Sopenharmony_ci Add .low limit interface for block throttling. The low limit is a best 1118c2ecf20Sopenharmony_ci effort limit to prioritize cgroups. Depending on the setting, the limit 1128c2ecf20Sopenharmony_ci can be used to protect cgroups in terms of bandwidth/iops and better 1138c2ecf20Sopenharmony_ci utilize disk resource. 1148c2ecf20Sopenharmony_ci 1158c2ecf20Sopenharmony_ci Note, this is an experimental interface and could be changed someday. 1168c2ecf20Sopenharmony_ci 1178c2ecf20Sopenharmony_ciconfig BLK_CMDLINE_PARSER 1188c2ecf20Sopenharmony_ci bool "Block device command line partition parser" 1198c2ecf20Sopenharmony_ci help 1208c2ecf20Sopenharmony_ci Enabling this option allows you to specify the partition layout from 1218c2ecf20Sopenharmony_ci the kernel boot args. This is typically of use for embedded devices 1228c2ecf20Sopenharmony_ci which don't otherwise have any standardized method for listing the 1238c2ecf20Sopenharmony_ci partitions on a block device. 1248c2ecf20Sopenharmony_ci 1258c2ecf20Sopenharmony_ci See Documentation/block/cmdline-partition.rst for more information. 1268c2ecf20Sopenharmony_ci 1278c2ecf20Sopenharmony_ciconfig BLK_WBT 1288c2ecf20Sopenharmony_ci bool "Enable support for block device writeback throttling" 1298c2ecf20Sopenharmony_ci help 1308c2ecf20Sopenharmony_ci Enabling this option enables the block layer to throttle buffered 1318c2ecf20Sopenharmony_ci background writeback from the VM, making it more smooth and having 1328c2ecf20Sopenharmony_ci less impact on foreground operations. The throttling is done 1338c2ecf20Sopenharmony_ci dynamically on an algorithm loosely based on CoDel, factoring in 1348c2ecf20Sopenharmony_ci the realtime performance of the disk. 1358c2ecf20Sopenharmony_ci 1368c2ecf20Sopenharmony_ciconfig BLK_CGROUP_IOLATENCY 1378c2ecf20Sopenharmony_ci bool "Enable support for latency based cgroup IO protection" 1388c2ecf20Sopenharmony_ci depends on BLK_CGROUP=y 1398c2ecf20Sopenharmony_ci help 1408c2ecf20Sopenharmony_ci Enabling this option enables the .latency interface for IO throttling. 1418c2ecf20Sopenharmony_ci The IO controller will attempt to maintain average IO latencies below 1428c2ecf20Sopenharmony_ci the configured latency target, throttling anybody with a higher latency 1438c2ecf20Sopenharmony_ci target than the victimized group. 1448c2ecf20Sopenharmony_ci 1458c2ecf20Sopenharmony_ci Note, this is an experimental interface and could be changed someday. 1468c2ecf20Sopenharmony_ci 1478c2ecf20Sopenharmony_ciconfig BLK_CGROUP_IOCOST 1488c2ecf20Sopenharmony_ci bool "Enable support for cost model based cgroup IO controller" 1498c2ecf20Sopenharmony_ci depends on BLK_CGROUP=y 1508c2ecf20Sopenharmony_ci select BLK_RQ_IO_DATA_LEN 1518c2ecf20Sopenharmony_ci select BLK_RQ_ALLOC_TIME 1528c2ecf20Sopenharmony_ci help 1538c2ecf20Sopenharmony_ci Enabling this option enables the .weight interface for cost 1548c2ecf20Sopenharmony_ci model based proportional IO control. The IO controller 1558c2ecf20Sopenharmony_ci distributes IO capacity between different groups based on 1568c2ecf20Sopenharmony_ci their share of the overall weight distribution. 1578c2ecf20Sopenharmony_ci 1588c2ecf20Sopenharmony_ciconfig BLK_WBT_MQ 1598c2ecf20Sopenharmony_ci bool "Multiqueue writeback throttling" 1608c2ecf20Sopenharmony_ci default y 1618c2ecf20Sopenharmony_ci depends on BLK_WBT 1628c2ecf20Sopenharmony_ci help 1638c2ecf20Sopenharmony_ci Enable writeback throttling by default on multiqueue devices. 1648c2ecf20Sopenharmony_ci 1658c2ecf20Sopenharmony_ciconfig BLK_DEBUG_FS 1668c2ecf20Sopenharmony_ci bool "Block layer debugging information in debugfs" 1678c2ecf20Sopenharmony_ci default y 1688c2ecf20Sopenharmony_ci depends on DEBUG_FS 1698c2ecf20Sopenharmony_ci help 1708c2ecf20Sopenharmony_ci Include block layer debugging information in debugfs. This information 1718c2ecf20Sopenharmony_ci is mostly useful for kernel developers, but it doesn't incur any cost 1728c2ecf20Sopenharmony_ci at runtime. 1738c2ecf20Sopenharmony_ci 1748c2ecf20Sopenharmony_ci Unless you are building a kernel for a tiny system, you should 1758c2ecf20Sopenharmony_ci say Y here. 1768c2ecf20Sopenharmony_ci 1778c2ecf20Sopenharmony_ciconfig BLK_DEBUG_FS_ZONED 1788c2ecf20Sopenharmony_ci bool 1798c2ecf20Sopenharmony_ci default BLK_DEBUG_FS && BLK_DEV_ZONED 1808c2ecf20Sopenharmony_ci 1818c2ecf20Sopenharmony_ciconfig BLK_SED_OPAL 1828c2ecf20Sopenharmony_ci bool "Logic for interfacing with Opal enabled SEDs" 1838c2ecf20Sopenharmony_ci help 1848c2ecf20Sopenharmony_ci Builds Logic for interfacing with Opal enabled controllers. 1858c2ecf20Sopenharmony_ci Enabling this option enables users to setup/unlock/lock 1868c2ecf20Sopenharmony_ci Locking ranges for SED devices using the Opal protocol. 1878c2ecf20Sopenharmony_ci 1888c2ecf20Sopenharmony_ciconfig BLK_INLINE_ENCRYPTION 1898c2ecf20Sopenharmony_ci bool "Enable inline encryption support in block layer" 1908c2ecf20Sopenharmony_ci help 1918c2ecf20Sopenharmony_ci Build the blk-crypto subsystem. Enabling this lets the 1928c2ecf20Sopenharmony_ci block layer handle encryption, so users can take 1938c2ecf20Sopenharmony_ci advantage of inline encryption hardware if present. 1948c2ecf20Sopenharmony_ci 1958c2ecf20Sopenharmony_ciconfig BLK_INLINE_ENCRYPTION_FALLBACK 1968c2ecf20Sopenharmony_ci bool "Enable crypto API fallback for blk-crypto" 1978c2ecf20Sopenharmony_ci depends on BLK_INLINE_ENCRYPTION 1988c2ecf20Sopenharmony_ci select CRYPTO 1998c2ecf20Sopenharmony_ci select CRYPTO_SKCIPHER 2008c2ecf20Sopenharmony_ci help 2018c2ecf20Sopenharmony_ci Enabling this lets the block layer handle inline encryption 2028c2ecf20Sopenharmony_ci by falling back to the kernel crypto API when inline 2038c2ecf20Sopenharmony_ci encryption hardware is not present. 2048c2ecf20Sopenharmony_ci 2058c2ecf20Sopenharmony_cimenu "Partition Types" 2068c2ecf20Sopenharmony_ci 2078c2ecf20Sopenharmony_cisource "block/partitions/Kconfig" 2088c2ecf20Sopenharmony_ci 2098c2ecf20Sopenharmony_ciendmenu 2108c2ecf20Sopenharmony_ci 2118c2ecf20Sopenharmony_ciendif # BLOCK 2128c2ecf20Sopenharmony_ci 2138c2ecf20Sopenharmony_ciconfig BLOCK_COMPAT 2148c2ecf20Sopenharmony_ci bool 2158c2ecf20Sopenharmony_ci depends on BLOCK && COMPAT 2168c2ecf20Sopenharmony_ci default y 2178c2ecf20Sopenharmony_ci 2188c2ecf20Sopenharmony_ciconfig BLK_MQ_PCI 2198c2ecf20Sopenharmony_ci bool 2208c2ecf20Sopenharmony_ci depends on BLOCK && PCI 2218c2ecf20Sopenharmony_ci default y 2228c2ecf20Sopenharmony_ci 2238c2ecf20Sopenharmony_ciconfig BLK_MQ_VIRTIO 2248c2ecf20Sopenharmony_ci bool 2258c2ecf20Sopenharmony_ci depends on BLOCK && VIRTIO 2268c2ecf20Sopenharmony_ci default y 2278c2ecf20Sopenharmony_ci 2288c2ecf20Sopenharmony_ciconfig BLK_MQ_RDMA 2298c2ecf20Sopenharmony_ci bool 2308c2ecf20Sopenharmony_ci depends on BLOCK && INFINIBAND 2318c2ecf20Sopenharmony_ci default y 2328c2ecf20Sopenharmony_ci 2338c2ecf20Sopenharmony_ciconfig BLK_PM 2348c2ecf20Sopenharmony_ci def_bool BLOCK && PM 2358c2ecf20Sopenharmony_ci 2368c2ecf20Sopenharmony_cisource "block/Kconfig.iosched" 237