7

希望你能帮助我:我正在尝试确定设备是否可移动,我所拥有的只是设备名称(/dev/sdc)。实际上,我需要通过该文件的完整路径来确定该文件何时在可移动媒体或本地磁盘上。

我尝试在 current->fs->pwd中搜索,但 我只能在这里找到一组标志:*current->fs->pwd.mnt->mnt_sb->s_bdev->bd_disk->flags*其中 GENHD_FL_REMOVABLE 设置为可移动设备

但是我总是设置相同的标志(据我所知,s_bdev 总是指向同一个设备(/dev/sda))。

所以现在我通过解析 mtab 获得了包含我的文件的设备名称(/dev/sdc),但仍然无法找到,是否可以删除它。

是否有可能通过设备名称获取 block_device 结构?(例如,可以通过调用 fd = open("name") fl = fged(fd) 获得“file”结构,其中 fl 指向“file”结构)

4

2 回答 2

2

class_dev_iter_init您可以使用和遍历块设备class_dev_iter_next。用法见中的代码block/genhd.c blk_lookup_devt

拥有设备后,您可以使用dev_to_disk获取struct gendisk *,您可以在其中检查可移动标志。

于 2011-10-02T11:19:39.783 回答
1

读取 /sys/block/dev-name/removable 因为如果设备是可移动的,它应该包含 1 或如果不是,它应该包含 0。(dev-name = 设备名称:sda, hda, fd0, ...)

于 2011-10-02T11:07:06.147 回答