Буква диска для устройства USB и HDD в ядре Linux - PullRequest
1 голос
/ 10 марта 2011

Как буква диска назначается накопителям USB / HDD? Я имел в виду на уровне кода. Я посмотрел на код и заметил, что gendisk struct имеет имя_диска. это дает sda/sdb/sdc....etc. Но если диск определяется как sda1, sdc1..., то где эти имена можно получить из структур / кода?

Ответы [ 2 ]

1 голос
/ 12 мая 2011

sda / sdb и т. Д. - это блочное устройство, представляющее весь диск.Когда диск разбит на разделы, вы увидите sda1, sdc1 и т. Д. Эти блочные устройства используются для доступа только к этому разделу.

Я не знаком с этим кодом конкретно, но, надеюсь, это поможет вам указатьв правильном направлении.

0 голосов
/ 30 декабря 2014

Одной из полезных отправных точек для исследования будет функция 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;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...