sysfs 中的 Linux 块设备有一个capability
文件,部分记录这里。嗯,其中一个已记录在案。
正如genhd.h
它所暗示的那样,还有其他的。有没有关于它们的任何文档,或者有人知道它们的含义吗?
为方便起见,在此列出:
- GENHD_FL_可移除
- GENHD_FL_CD
- GENHD_FL_UP
- GENHD_FL_SUPPRESS_PARTITION_INFO
- GENHD_FL_EXT_DEVT
- GENHD_FL_NATIVE_CAPACITY
- GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE
- GENHD_FL_NO_PART_SCAN
- GENHD_FL_HIDDEN
进一步来说,
可拆卸的?喜欢可移动 USB 驱动器?与 /sys/block/*/removable 的关系?多余的?
什么是扩展开发?
抑制分区?
没有零件扫描?与抑制分区不同?
向上?
光盘?比如“这是一个 CD 驱动器”?为什么?还意味着别的什么吗?
原生能力?
答案1
从内核 6.3 开始,这capability
文件已被弃用并始终指示 0。
在提出问题时,唯一记录的标志不再使用!其他的含义如下:
GENHD_FL_REMOVABLE
:块设备提供对可移动媒体的访问。块设备不会根据媒体的可用性而出现或消失。例如,这适用于 CD-ROM 驱动器(块设备始终存在),但不适用于行为类似于 USB 存储的设备(其中块设备仅在驱动器连接时才存在)。GENHD_FL_CD
:块设备是CD-ROM类型的设备。影响对 的响应CDROM_GET_CAPABILITY
ioctl
。GENHD_FL_UP
:表示块设备处于“up”状态,与网络接口的含义类似。这主要用于与其他块设备子系统同步,以避免删除时的竞争。GENHD_FL_SUPPRESS_PARTITION_INFO
:不要在输出中/proc/partitions
或输出中 包含分区信息printk_all_partitions()
(如内核日志中所示)。用于空块设备和一些MMC设备。GENHD_FL_EXT_DEVT
:驱动程序支持扩展动态dev_t
,即它需要扩展设备号(BLOCK_EXT_MAJOR
,块专业 259)。这会影响最大分区数。GENHD_FL_NATIVE_CAPACITY
:根据分区表中的信息,设备的容量已扩展到其原始容量;IE该设备具有由其中一个分区使用的隐藏容量(这是一个使用的标志,以便本机容量仅解锁一次)。例如,如果驱动器已分区,然后有一个宿主保护区创建覆盖分区的一部分。GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE
:只要写入者持有独占锁,事件轮询就会被阻止。GENHD_FL_NO_PART_SCAN
:分区扫描已禁用。用于默认设置的循环设备和某些 MMC 设备。GENHD_FL_HIDDEN
:块设备被隐藏;它不产生事件,不会出现在 sysfs 中,并且没有关联的bdev
.意味着GENHD_FL_SUPPRESS_PARTITION_INFO
和GENHD_FL_NO_PART_SCAN
。用于多路径设备。
其中大部分已被移除或转移到更合适的位置;仅GENHD_FL_REMOVABLE
,GENHD_FL_HIDDEN
和GENHD_FL_NO_PART
保持(GENHD_FL_NO_PART_SCAN
已重命名为GENHD_FL_NO_PART
,表示该设备不支持分区)。