Linux kernel Inode到设备信息

Linux kernel Inode到设备信息,linux-kernel,Linux Kernel,我有3个问题: 我想找出一个文件是否属于给定文件索引节点的USB设备。通过查看LXR上的最新内核源代码(2.6.33),我认为可以通过以下指针找到这些信息: inode->super\u block->block\u device->backing\u dev\u info->device->device\u driver(或device\u type)。 但是,我正在使用的内核-2.6.22.14在backing_dev_info对象中没有struct device指针。那么,我如何从inod

我有3个问题:

  • 我想找出一个文件是否属于给定文件索引节点的USB设备。通过查看LXR上的最新内核源代码(2.6.33),我认为可以通过以下指针找到这些信息: inode->super\u block->block\u device->backing\u dev\u info->device->device\u driver(或device\u type)。 但是,我正在使用的内核-2.6.22.14在backing_dev_info对象中没有struct device指针。那么,我如何从inode判断文件属于哪个设备呢? 我看到inode、super_块和block_设备中的每一个都包含一个“dev_t”类型的对象。但即使在搜索了很多之后,我仍然无法找到如何将“dev\u t”转换为struct device*。有没有办法得到那个信息

  • 我尝试使用imajor(inode)和iminor(inode)打印设备的主次号。然而,对于每个属于hdd或usb的文件,它总是将主数字和次数字打印为零。为什么会这样

  • 我在网上搜索USB的主要号码,发现USB的主要号码是180。然而,在多台机器上,它向我显示了与usbdev关联的主要编号为253

  • $ls-ltr/dev/usb*

    crw rw----1根根253,4 2010-04-13 17:20/dev/usbmon4

    crw rw----1根根253,3 2010-04-13 17:20/dev/usbmon3

    crw rw----1根根253,8 2010-04-13 17:20/dev/usbmon8

    crw rw----1根根253,5 2010-04-13 17:20/dev/usbmon5

    crw rw----1根根253,1 2010-04-13 17:20/dev/usbmon1

    crw rw----1根根253,7 2010-04-13 17:20/dev/usbmon7


    为什么会这样?

    我不认为你可以从一个inode编号到一个设备。inode是每个设备上文件数据的唯一标识符。换句话说,您可以将inode 72设置为/dev/usbstick和/dev/sda。如果你对文件执行
    df-k
    ,它会告诉你它所在的设备。好的..可能是我不清楚。我的意思是我有一个struct inode指针,我想从linux内核模块中找到struct device*指针。如果该文件位于RAID
    md
    设备上(该设备本身由USB支持),会发生什么?或者是指USB上的文件的环回设备?这可以嵌套任意深。