The problem is that soon after init(), bind() occurs automatically after the USB setup phase. The key would be to delay init() until the backing store is ready. I don't know what the "Linux" way to do such a thing. A direct hack would be to call the File Storage init() from where-ever the SD driver figures out it is mounted. Another direct hack would have File Storage init() spawn a thread that periodically checks the backing store before really starting the real init process. Neither seem particularily elegant. I have no experience with sysfs. Can't comment on that.