Я столкнулся с проблемой в моей системе Ubuntu, так как она предназначена для тестирования, я обычно выдаю команду:
echo "scsi add-single-device 0 0 0 0" > /proc/scsi/scsi
Я просто использую порт ata1
.
Когда я заканчиваю тесты, я просто выдаю:
echo "scsi remove-single-device 0 0 0 0" > /proc/scsi/scsi
Но, поскольку я начал использовать команды ata, этот процесс больше не работает, так как он подключен к системе.
Например,
До:
Эта команда всегда возвращала /dev/sdb
подключенным, а другая команда просто отключала накопитель, не подключая это в систему.
Сейчас:
Кажется, что упомянутые мной команды работают, но продолжают заполнять кэш следующей буквой для каждого тестируемого диска, скажем:
Первый тест: /dev/sdb
Второй тест: /dev/sdc
и так далее, пока у меня не закончатся буквы, потому что система не может выдать после dev/sdz
Can кто-нибудь подскажет, как очистить кэш или как обойти эту проблему?
Я ДЕЙСТВИТЕЛЬНО буду признателен за любую помощь.
Я обнаружил проблему с настоящим «кэшем».
У меня был фрагмент кода, который позволял открывать файловый дескриптор в каждом тесте диска, пока программа не заполнила все оставшиеся места для выделения fd. Ошибка была в вызове python open()
, поскольку он открывал его с аргументом os.O_RDWR
, а не os.O_RDONLY.
os.O_RDWR
разрешал открывать все файловые дескрипторы после выполнения команды ATA. После изменения его на os.O_RDONLY
буфер памяти стал читаемым, а дескриптор файла был правильно закрыт.
Надеюсь, что это поможет любому в крайнем случае.