Проблема с SSD-накопителями Samsung оказалась в ядре Linux

Инженеры из компании Samsung выяснили, что обсуждаемая несколько месяцев проблема с потерей данных на SSD-накопителях Samsung серии 8xx связана не с дефектом в накопителях, а вызвана ошибкой в ядре Linux. Для решения проблемы представлен патч. После испытания патча, ранее внесённый в ядро черный список SSD-накопителей, для которых запрещено выполнять операцию TRIM, скорее всего будет отменён.

Потеря данных наблюдалась при использовании SATA SSD-накопителей в составе программных RAID 0 и RAID 10 и проявлялась при выполнении команд trim/discard. Конфигурации с RAID 1 проблеме не подвержены. Проблема была вызвана некорректным построением взаимодействия драйвера md raid с драйвером scsi/ata. MD RAID при обработке последовательных операций чтения и записи на разных накопителях создаёт отдельные буферы для каждой операции, в то время как при выполнении TRIM в scsi/ata используется один общий буфер.

В теории такой метод работает, но на практике при определённом стечении обстоятельств возникает состояние гонки — когда в очереди в определённом порядке появляется несколько команд TRIM, после выполнения последней команды в очереди общий буфер очищается, в то время как предыдущая команда может ещё не успеть завершить своё выполнение, что приведёт к записи на накопитель блока нулевых данных.

©  OpenNet