On Sat, Feb 19, 2005 at 12:06:35AM +0300, dm wrote: > Система -- master 2.4, ядро 2.4.26-std-up-alt9, > обновления из updates поставлены. > > Имею две разные флэшки: одна EasyDisk на 128М, > вторая -- Transcend на 256М. > > Обнаружилось, что флэшки не живут вместе. То есть если только > одна из них подмонтированна, после этого вторая категорически > не хочет опознаваться. При монтировании в лог пишется много > страшных слов типа: > > Feb 18 23:53:32 localhost kernel: sda: Unit Not Ready, sense: > Feb 18 23:53:32 localhost kernel: Info fld=0xa00 (nonstd), Current 00:00: sense key Not Ready > Feb 18 23:53:32 localhost kernel: sda : READ CAPACITY failed. > Feb 18 23:53:32 localhost kernel: sda : status = 1, message = 00, host = 0, driver = 08 > Feb 18 23:53:32 localhost kernel: Info fld=0xa00 (nonstd), Current sd00:00: sense key Not Ready > Feb 18 23:53:32 localhost kernel: sda : block size assumed to be 512 bytes, disk size 1GB. > Feb 18 23:53:32 localhost kernel: sda: test WP failed, assume Write Enabled > Feb 18 23:53:32 localhost kernel: sda: I/O error: dev 08:00, sector 0 > Feb 18 23:53:32 localhost kernel: I/O error: dev 08:00, sector 0 > Feb 18 23:53:32 localhost kernel: ldm_validate_partition_table(): Disk read failed. > Feb 18 23:53:32 localhost kernel: I/O error: dev 08:00, sector 0 > Feb 18 23:53:32 localhost kernel: unable to read partition table > > Добиться включения второй флэшки после первой смог только посредством > > rmmod usb-storage > insmod usb-storage > > Кто-нибудь знает, в чём тут дело и как можно решить проблему? В ядрах 2.4.x модуль usb-storage при отключении устройства не удаляет созданный для него виртуальный SCSI-адаптер и SCSI-устройства - они остаются зарегистрированными в системе, но при обращении к ним возвращается ошибка "устройство не готово". Приведённые выше сообщения как раз и возникают в результате возврата этой ошибки. При повторном подключении USB-устройства для него будут выделены те же SCSI-устройства, которые использовались для него ранее. При подключении нового устройства для него будет создан новый виртуальный SCSI-адаптер и новые SCSI-устройства. Таким образом, в случае с двумя флэшками для первой вставленной флэшки будет использоваться /dev/sda, для второй - /dev/sdb (если на машине не было других SCSI-устройств). При выгрузке модуля usb-storage все виртуальные устройства удаляются, и потом опять назначаются начиная с первого свободного. В ядрах 2.6.x поддержка hotplug существенно улучшена - там виртуальные SCSI-адаптеры и устройства, созданные usb-storage, удаляются сразу после отключения USB-устройств.