I'm currently using multiple SdFat instances in my code to interact with a single SD card. I use it for logging (SdCardLogHandlerRK) and for saving states of my application locally.
However, I recently noticed that the filesystem is getting corrupted.
If SdFat supports only one instance, can I share the object?
I suspect SdFat is probably not multi-thread safe, but I do not know that for sure.
However, SdCardLogHandlerRK only writes to the SD card when the loop() function in the library is called, which you normally do only from loop().
As long as you don't call SdFat from a worker thread of your own, or from a software timer, you should be able to use SdFat from your code. You don't want to create a second instance because that would be far worse.
You can use pass a reference or pointer to a single instance SdFat. If you are using it in multiple threads, you'll want to lock the associated SPI object since SdFat is not thread safe.