Windows затримує запис таблиці FAT на невеликому USB-накопичувачі, незважаючи на "Швидке видалення" - Super User
Я бачу затримку записів у FAT на відформатованому флеш-накопичувачі FAT (FAT12) невеликої ємності, хоча політика для приводу встановлена на "Швидке видалення". (Я вважаю, що це означає, що встановлено прапор SurpriseRemovalOK). Я захопив команди SCSI, надіслані на накопичувач через USB: запис усічення файлів відбувається негайно, весь файл (довжиною 2 512-байтові сектори) записується відразу після цього, але тоді є 20-90 секунд затримки перед FAT оновлюється для відображення файлу запису.
Розмір накопичувача значний. Я протестував і бачу проблеми з файловими системами FAT розміром 15 МБ і менше. На 16 МБ і вище запис не затримується. 16 МБ - це точка зупинку, яку я бачу між використанням FAT12 та FAT16, коли форматую диск у Windows. (Примітка додана пізніше: Але точка зупинку FAT12/FAT16 залежить від кількості кластерів, а не від абсолютного розміру файлової системи).
На 16 МБ і більше Windows надсилає команди SCSI Prevent/Allow Medium Removal перед записом із проханням не видаляти пристрій. USB-накопичувач фактично повертає збій у цих запитах (оскільки він не може гарантувати відсутність видалення), але Windows все одно намагається. Траси розміром 15 МБ та менші не показують команд «Запобігти/дозволити видалення середнього середовища».
(Я виявив цю проблему під час використання плати мікроконтролера, яка підтримує крихітну файлову систему FAT, що містить код Python. Коли мікроконтролер виявляє запис у файлову систему, він трохи чекає завершення запису, а потім автоматично перезапускається та запускає щойно написаний код Python Але мікроконтролер бачив пошкоджений код або пошкоджену файлову систему через затримку запису.)