superfly / litefs

FUSE-based file system for replicating SQLite databases across a cluster of machines
Apache License 2.0
3.78k stars 89 forks source link

Support subdirectories #372

Open mildred opened 11 months ago

mildred commented 11 months ago

I have an app that will create a separate sqlite database for every user in the system. I'd like to have them organised in a tree structure for better organization but currently, mkdir does not seems to be permitted within the litefs mount

2874de4c016738:/# mount | grep litefs
/dev/vdb on /var/lib/litefs type ext4 (rw,relatime,stripe=64)
litefs on /var/lib/sqlemail type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0)
2874de4c016738:/# mkdir /var/lib/sqlemail/users
mkdir: can't create directory '/var/lib/sqlemail/users': Operation not permitted

By the way, congratulation for the great work and thanks to LiteFS I discovered Fly.io which seems to be really awesome.

benbjohnson commented 11 months ago

Thanks for the bug report (and the nice words!) Adding support for subdirectories adds a surprising amount of complexity to LiteFS so I held off on it. I'll mark this as a possible enhancement but also a documentation issue since we should call it out better.

mildred commented 11 months ago

It's easy to workaround this, so I suppose this is not going to be top priority, and if it adds complexity, perhaps it's best to leave it out. It's easy to just prefix our filename instead and if I truly have too many files around, perhaps I should have multiple litefs instances then.