Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: GPL-2.0
0002 #
0003 # Block layer core configuration
0004 #
0005 menuconfig BLOCK
0006        bool "Enable the block layer" if EXPERT
0007        default y
0008        select SBITMAP
0009        select SRCU
0010        help
0011          Provide block layer support for the kernel.
0012 
0013          Disable this option to remove the block layer support from the
0014          kernel. This may be useful for embedded devices.
0015 
0016          If this option is disabled:
0017 
0018            - block device files will become unusable
0019            - some filesystems (such as ext3) will become unavailable.
0020 
0021          Also, SCSI character devices and USB storage will be disabled since
0022          they make use of various block layer definitions and facilities.
0023 
0024          Say Y here unless you know you really don't want to mount disks and
0025          suchlike.
0026 
0027 if BLOCK
0028 
0029 config BLOCK_LEGACY_AUTOLOAD
0030         bool "Legacy autoloading support"
0031         default y
0032         help
0033           Enable loading modules and creating block device instances based on
0034           accesses through their device special file.  This is a historic Linux
0035           feature and makes no sense in a udev world where device files are
0036           created on demand, but scripts that manually create device nodes and
0037           then call losetup might rely on this behavior.
0038 
0039 config BLK_RQ_ALLOC_TIME
0040         bool
0041 
0042 config BLK_CGROUP_RWSTAT
0043         bool
0044 
0045 config BLK_DEV_BSG_COMMON
0046         tristate
0047 
0048 config BLK_ICQ
0049         bool
0050 
0051 config BLK_DEV_BSGLIB
0052         bool "Block layer SG support v4 helper lib"
0053         select BLK_DEV_BSG_COMMON
0054         help
0055           Subsystems will normally enable this if needed. Users will not
0056           normally need to manually enable this.
0057 
0058           If unsure, say N.
0059 
0060 config BLK_DEV_INTEGRITY
0061         bool "Block layer data integrity support"
0062         help
0063         Some storage devices allow extra information to be
0064         stored/retrieved to help protect the data.  The block layer
0065         data integrity option provides hooks which can be used by
0066         filesystems to ensure better data integrity.
0067 
0068         Say yes here if you have a storage device that provides the
0069         T10/SCSI Data Integrity Field or the T13/ATA External Path
0070         Protection.  If in doubt, say N.
0071 
0072 config BLK_DEV_INTEGRITY_T10
0073         tristate
0074         depends on BLK_DEV_INTEGRITY
0075         select CRC_T10DIF
0076         select CRC64_ROCKSOFT
0077 
0078 config BLK_DEV_ZONED
0079         bool "Zoned block device support"
0080         select MQ_IOSCHED_DEADLINE
0081         help
0082         Block layer zoned block device support. This option enables
0083         support for ZAC/ZBC/ZNS host-managed and host-aware zoned block
0084         devices.
0085 
0086         Say yes here if you have a ZAC, ZBC, or ZNS storage device.
0087 
0088 config BLK_DEV_THROTTLING
0089         bool "Block layer bio throttling support"
0090         depends on BLK_CGROUP
0091         select BLK_CGROUP_RWSTAT
0092         help
0093         Block layer bio throttling support. It can be used to limit
0094         the IO rate to a device. IO rate policies are per cgroup and
0095         one needs to mount and use blkio cgroup controller for creating
0096         cgroups and specifying per device IO rate policies.
0097 
0098         See Documentation/admin-guide/cgroup-v1/blkio-controller.rst for more information.
0099 
0100 config BLK_DEV_THROTTLING_LOW
0101         bool "Block throttling .low limit interface support (EXPERIMENTAL)"
0102         depends on BLK_DEV_THROTTLING
0103         help
0104         Add .low limit interface for block throttling. The low limit is a best
0105         effort limit to prioritize cgroups. Depending on the setting, the limit
0106         can be used to protect cgroups in terms of bandwidth/iops and better
0107         utilize disk resource.
0108 
0109         Note, this is an experimental interface and could be changed someday.
0110 
0111 config BLK_WBT
0112         bool "Enable support for block device writeback throttling"
0113         help
0114         Enabling this option enables the block layer to throttle buffered
0115         background writeback from the VM, making it more smooth and having
0116         less impact on foreground operations. The throttling is done
0117         dynamically on an algorithm loosely based on CoDel, factoring in
0118         the realtime performance of the disk.
0119 
0120 config BLK_WBT_MQ
0121         bool "Enable writeback throttling by default"
0122         default y
0123         depends on BLK_WBT
0124         help
0125         Enable writeback throttling by default for request-based block devices.
0126 
0127 config BLK_CGROUP_IOLATENCY
0128         bool "Enable support for latency based cgroup IO protection"
0129         depends on BLK_CGROUP
0130         help
0131         Enabling this option enables the .latency interface for IO throttling.
0132         The IO controller will attempt to maintain average IO latencies below
0133         the configured latency target, throttling anybody with a higher latency
0134         target than the victimized group.
0135 
0136         Note, this is an experimental interface and could be changed someday.
0137 
0138 config BLK_CGROUP_FC_APPID
0139         bool "Enable support to track FC I/O Traffic across cgroup applications"
0140         depends on BLK_CGROUP && NVME_FC
0141         help
0142           Enabling this option enables the support to track FC I/O traffic across
0143           cgroup applications. It enables the Fabric and the storage targets to
0144           identify, monitor, and handle FC traffic based on VM tags by inserting
0145           application specific identification into the FC frame.
0146 
0147 config BLK_CGROUP_IOCOST
0148         bool "Enable support for cost model based cgroup IO controller"
0149         depends on BLK_CGROUP
0150         select BLK_RQ_ALLOC_TIME
0151         help
0152         Enabling this option enables the .weight interface for cost
0153         model based proportional IO control.  The IO controller
0154         distributes IO capacity between different groups based on
0155         their share of the overall weight distribution.
0156 
0157 config BLK_CGROUP_IOPRIO
0158         bool "Cgroup I/O controller for assigning an I/O priority class"
0159         depends on BLK_CGROUP
0160         help
0161         Enable the .prio interface for assigning an I/O priority class to
0162         requests. The I/O priority class affects the order in which an I/O
0163         scheduler and block devices process requests. Only some I/O schedulers
0164         and some block devices support I/O priorities.
0165 
0166 config BLK_DEBUG_FS
0167         bool "Block layer debugging information in debugfs"
0168         default y
0169         depends on DEBUG_FS
0170         help
0171         Include block layer debugging information in debugfs. This information
0172         is mostly useful for kernel developers, but it doesn't incur any cost
0173         at runtime.
0174 
0175         Unless you are building a kernel for a tiny system, you should
0176         say Y here.
0177 
0178 config BLK_DEBUG_FS_ZONED
0179        bool
0180        default BLK_DEBUG_FS && BLK_DEV_ZONED
0181 
0182 config BLK_SED_OPAL
0183         bool "Logic for interfacing with Opal enabled SEDs"
0184         help
0185         Builds Logic for interfacing with Opal enabled controllers.
0186         Enabling this option enables users to setup/unlock/lock
0187         Locking ranges for SED devices using the Opal protocol.
0188 
0189 config BLK_INLINE_ENCRYPTION
0190         bool "Enable inline encryption support in block layer"
0191         help
0192           Build the blk-crypto subsystem. Enabling this lets the
0193           block layer handle encryption, so users can take
0194           advantage of inline encryption hardware if present.
0195 
0196 config BLK_INLINE_ENCRYPTION_FALLBACK
0197         bool "Enable crypto API fallback for blk-crypto"
0198         depends on BLK_INLINE_ENCRYPTION
0199         select CRYPTO
0200         select CRYPTO_SKCIPHER
0201         help
0202           Enabling this lets the block layer handle inline encryption
0203           by falling back to the kernel crypto API when inline
0204           encryption hardware is not present.
0205 
0206 source "block/partitions/Kconfig"
0207 
0208 config BLOCK_COMPAT
0209         def_bool COMPAT
0210 
0211 config BLK_MQ_PCI
0212         def_bool PCI
0213 
0214 config BLK_MQ_VIRTIO
0215         bool
0216         depends on VIRTIO
0217         default y
0218 
0219 config BLK_MQ_RDMA
0220         bool
0221         depends on INFINIBAND
0222         default y
0223 
0224 config BLK_PM
0225         def_bool PM
0226 
0227 # do not use in new code
0228 config BLOCK_HOLDER_DEPRECATED
0229         bool
0230 
0231 config BLK_MQ_STACKING
0232         bool
0233 
0234 source "block/Kconfig.iosched"
0235 
0236 endif # BLOCK