如何将驱动器号分配给USB / HDD驱动器?我的意思是在代码级别。我看了一下代码,发现gendisk struct
有了disk_name。这给了sda/sdb/sdc....etc
。但是如果磁盘被检测为sda1, sdc1...
那么这些名称可以从结构/代码中获得?
答案 0 :(得分:1)
sda / sdb等是代表整个驱动器的块设备。当驱动器被分区时,您将看到sda1,sdc1等。这些块设备仅用于访问该分区。
我对这段代码并不熟悉,但希望这有助于指明你的方向。
答案 1 :(得分:0)
一个有用的调查起点代码是函数disk_name()
,在 block/partition-generic.c
中定义:
/*
* disk_name() is used by partition check code and the genhd driver.
* It formats the devicename of the indicated disk into
* the supplied buffer (of size at least 32), and returns
* a pointer to that same buffer (for convenience).
*/
char *disk_name(struct gendisk *hd, int partno, char *buf)
{
if (!partno)
snprintf(buf, BDEVNAME_SIZE, "%s", hd->disk_name);
else if (isdigit(hd->disk_name[strlen(hd->disk_name)-1]))
snprintf(buf, BDEVNAME_SIZE, "%sp%d", hd->disk_name, partno);
else
snprintf(buf, BDEVNAME_SIZE, "%s%d", hd->disk_name, partno);
return buf;
}