Mak*_*akc 7 c linux kernel block-device
希望你能帮助我:我正在尝试确定设备是否可移动,我所拥有的只是设备名称(/ dev/sdc).实际上,我需要通过此文件的完整路径确定可移动媒体上的文件或本地磁盘上的文件.
我试着在current-> fs-> pwd中搜索, 我在这里找到的是一组标志:*current-> fs-> pwd.mnt-> mnt_sb-> frostdev-> bd_disk-> flags*其中GENHD_FL_REMOVABLE设置为可移动设备
但我总是得到相同的标志集(据我所知,greasedev总是指向同一个设备(/ dev/sda)).
所以现在我通过解析mtab得到包含我的文件的设备名称(/ dev/sdc),但仍然找不到,可以删除它.
是否有可能通过设备名称获取block_device结构?(例如,"file"结构可以通过调用fd = open("name")fl = fged(fd)获得,其中fl指向"file"结构)
class_dev_iter_init您可以使用和迭代块设备class_dev_iter_next。block/genhd.c blk_lookup_devt使用方法请参阅 中的代码。
拥有设备后,您可以使用dev_to_disk来获取struct gendisk *,您可以在其中检查可移动标志。