Нет ничего проще, чем вы могли бы надеяться.
В функции do_sys_open()
непосредственно перед return fd;
, struct file *f
указывает на законный, открытый, struct file
.
struct file
содержит struct path f_path
.
struct path
содержит struct vfsmount *mnt
. struct vfsmount
представляет каждую смонтированную файловую систему в системе.
struct vfsmount
содержит struct super_block *mnt_sb
.
struct super_block
содержит struct block_device *s_bdev
.
struct block_device
содержит struct hd_struct *bd_part
.
struct hd_struct
содержит struct device __dev
и int partno
. Вместе эти два определяют, на каком разделе находится ваш файл.
Обновление
Изначально я перестал искать, когда нашел ссылки на номера устройств и разделов, так как предполагал, что это все, что нужно для того, чтобы собрать понятную человеку строку. Но когда я снова смотрю свежими глазами, я вижу, что есть еще:
* struct hd_struct
содержит struct partition_meta_info *info
.
struct partition_meta_info
содержит поле:
u8 volname[PARTITION_META_INFO_VOLNAMELTH];
Это поле является именем устройства, которое вы ищете.