I'm not sure what you mean by flush, fprint is synchronous. I could retry the write if you like, though there's not much likelyhood that it would work the second time if it didn't the first, there's no lock on .longnames, it's append only, so a failure is probably the fs or someone having removed the file. .longnames is also written before the file is created, so the name should be there should you find the hashed file when reading the dir. However, in rreaddir, I don't reread the file while translating the short names to long ones. Someone could create a file while I'm busy converting the dir. There's plenty of window there for someone to sneak through.