https://bugs.kde.org/show_bug.cgi?id=404057

--- Comment #31 from Kai Krakow <k...@kaishome.de> ---
As far as I understand from researching the discussions in phabricator, this
problem won't be easy to fix as it is baked into the design decision that
defined the database scheme.

Based on the fact that the DocId (which is used to find if a file still exists,
or changed, or just moved unmodified) is a 64-bit value which is actually made
of a 32-bit st_dev (device id) and 32-bit ino (inode number), I see two
problems here:

1. btrfs uses 64-bit inode numbers, at some point, numbers will overflow and
the baloo database becomes confused.

2. multi-dev btrfs (and I think you also use that, as I do) may have an
unstable st_dev number across reboots, resulting in changed DocIds every once
in a while after reboot

The phabricator discussions point out that other (primarily network) file
systems suffer the same problem: They have unstable st_dev values maybe even
after reconnect. User space file systems even depend on mount order for the
st_dev value.

Changing this is no easy task, it would require a format change which either
invalidates your DB, or it needs migration. So I'm currently evaluating if it
makes sense to switch to a key/value store that doesn't rely on mmap (as it has
clear downsides on a typical desktop system). This would allow to easily change
the database scheme in the same step as the index would've to be recreated
anyways. I'm currently digging my nose into Facebook's RocksDB, it looks mostly
good except that it was optimized solely around flash-based storage.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to