获取设备标志的设备名称
问题描述:
希望你能帮助我: 我试图确定设备是否可移动或不是,我拥有的是设备名称(/ dev/sdc)。实际上,我需要通过此文件的完整路径来确定何时可移动介质上的文件或本地磁盘上的文件。获取设备标志的设备名称
我tryed在 电流 - > FS-> PWD 搜索和所有我能找到的是一组标志的位置: *电流 - > FS-> pwd.mnt-> mnt_sb- > s_bdev-> bd_disk->标志* 其中用于移动设备
但我总是设置相同的标志(据我所知,s_bdev总是指向相同的设备(/ dev/sda上))GENHD_FL_REMOVABLE集。
因此,现在我通过解析mtab获取包含我的文件的设备名称(/ dev/sdc),但仍然找不到,可以移除它。
有没有可能通过设备名获得block_device结构? (例如, “文件” 结构可通过调用 FD =打开( “名称”) FL = fged(FD) 获得其中f1点为 “文件” 的结构)
答
您可以使用class_dev_iter_init
和class_dev_iter_next
迭代块设备。请参阅block/genhd.c
blk_lookup_devt
中的代码以了解使用方法。
一旦你有了设备,你可以使用dev_to_disk
得到一个struct gendisk *
,你可以在其中检查可移动标志。
谢谢,似乎它解决了我的问题 – Makc
因此,如何使用这种方式,我可以确定哪个块设备包含我打开的文件,如果我只有完整的路径这个文件。 – Makc
@Makc:我认为你可以使用'vfs_stat',它会给你一个'struct kstat',你可以在其中将'dev_t'与块设备进行比较。 – Hasturkun