Windows întârzie să scrie tabelul FAT pe o unitate USB mică, în ciuda „Eliminării rapide” - Super User
Văd scrieri întârziate pe FAT pe o unitate flash USB formatată cu capacitate mică FAT (FAT12), chiar dacă politica pentru unitate este setată la „Eliminare rapidă”. (Cred că acest lucru înseamnă că semnalizatorul SurpriseRemovalOK este setat). Am capturat comenzile SCSI trimise pe unitate prin USB: scrierile trunchierii de fișiere se întâmplă imediat, întregul fișier (lung de 2 sectoare de 512 octeți) este scris imediat după aceea, dar există o întârziere de 20-90 secunde înainte de FAT este actualizat pentru a reflecta scrierea fișierului.
Dimensiunea unității este semnificativă. Am testat și am văzut probleme pe sistemele de fișiere FAT de dimensiune 15MB sau mai mică. La 16 MB și mai mult, scrierile nu sunt întârziate. 16MB este punctul de întrerupere pe care îl văd între utilizarea FAT12 și FAT16 atunci când formatez o unitate în Windows. (Notă adăugată mai târziu: Dar punctul de întrerupere FAT12/FAT16 depinde de numărul de clustere, nu de dimensiunea absolută a sistemului de fișiere).
Pe 16 MB și mai mari, Windows trimite comenzile SCSI Prevent/Allow Medium Removal înainte de a scrie, cerând ca dispozitivul să nu fie eliminat. Stick-ul USB întoarce de fapt eșecul la aceste cereri (deoarece nu poate garanta nicio eliminare), dar Windows încearcă oricum. Urmele de 15 MB și cele mai mici nu prezintă comenzi Prevenire/Permitere eliminare medie.
(Am descoperit această problemă în timp ce foloseam o placă de microcontroler care acceptă un mic sistem de fișiere FAT care conține cod Python. Când microcontrolerul detectează o scriere în sistemul de fișiere, așteaptă puțin până la finalizarea scrierii și apoi repornește automat și rulează codul Python nou scris Dar microcontrolerul a văzut codul corupt sau un sistem de fișiere corupt din cauza scrierii întârziate.)