fs->FirstClusterCurrentDir field never gets updated by anything!
ls_opendir() should open a directory specified by its entire path, but it doesn't!
That means that fs_findFile() cannot open directories that don't reside in the root directory.
Its pointless fixing this bug, because its 100% not thread safe! It would be impossible to ls through directories by setting this value correctly somewhere in a multi-user or multi-threaded environment.
The only proper way around this is to make sure fs_findFile() interprets the entire directory path.