Various operations not supported when stored in a FUSE filesystem
- Dominant language
- C++
- Stars
- 39.4k
- Forks
- 8.2k
- PR merge metrics
- No merged PRs in 30d
Description
I mentioned this in https://github.com/google/leveldb/issues/211#issuecomment-863091440, but I thought it's worth pulling out into a separate issue if only to confirm that it is intended (or undefined) behaviour that LevelDB doesn't (may not) work in a FUSE filesystem.
I haven't used LevelDB, so please forgive me that this is from an end-user (of an application that uses it) perspective, but what I see are errors like (Spotify):
```
09:21:29.248 E [f:130 ] Failed to open database: IO error: ~/.cache/spotify/Users/[...]/primary.ldb: Operation not supported
09:21:29.248 E [f:92 ] Could not read from database: IO error: ~/.cache/spotify/Users/[...]/primary.ldb: Operation not supported
```
and (Keybase):
```
▶ ERROR sync ~/.local/share/keybase/keybase.leveldb: operation not supported
```
In both cases this seems to be caused by my home directory (and thus those `.ldb`/`.leveldb` files) being a FUSE mountpoint; if I symlink those containing directories to outside of my home, the applications start OK.
I reported this to keybase/client#24544 (before I found the cause) but Spotify is closed source and frankly I don't have the energy for non-technical customer support suggestions! I'm sure it affects all sorts of things I don't use, or that I do but haven't noticed since it doesn't prevent them operating anyway.
Essentially I'm interested in whether this is to be considered a bug, or merely a known limitation? If the latter it's quite a 'gotcha' for FUSE homes (which might sound really oddball, but for me it arises from encrypting it at rest, and the provider I chose happens to be implemented with FUSE, I don't _think_ that's as niche as it might at first sound), I can cope with a couple of symlinks, but it wouldn't be many before I felt I had to give in and do something differently. Especially worrying in a way is everything that might be using LevelDB but just non-critically, and that might change, or I might try to use the functionality that requires it, etc.
Thanks.
Contributor guide
Assessment
This issue has not been assessed yet.