When the cache has a value greater than 1, then the FAT table doesn't get written to the disk. When the file is closed (even with the previous patch relating to flushing).
That patch works great and fixes the caching mechanism, for example mkdir will suceed when the cache is greater than 0.
I'm not sure if this is the best fix, but for now it solves the problem.
On each fclose, I flush the entire cache to the SDCARD. I'm not too sure how this will affect multiple file-opens.
I have included my patch below regarding file.c in the 0.2.8 version of EFSL.
email: james at worm dot me dot uk