块设备功能标志的含义是什么?

块设备功能标志的含义是什么?

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_INFOGENHD_FL_NO_PART_SCAN。用于多路径设备。

其中大部分已被移除或转移到更合适的位置;GENHD_FL_REMOVABLE,GENHD_FL_HIDDENGENHD_FL_NO_PART保持GENHD_FL_NO_PART_SCAN已重命名为GENHD_FL_NO_PART,表示该设备不支持分区)。

相关内容