libstore/local-store.cc has the following comment: void LocalStore::registerValidPaths(const ValidPathInfos & infos) { /* SQLite will fsync by default, but the new valid paths may not be fsync-ed. * So some may want to fsync them before registering the validity, at the * expense of some speed of the path registering operation. */ if (settings.syncBeforeRegistering) sync(); [...] } However, currently sync-before-registering is set to 'false' AFAICT. I think this might be the cause of bugs like (‘Can't use "guix pull"’), and maybe (‘failing to boot, probably due to guix gc’). As such, I think we need to set it to 'true' by default instead. Or if that turns out to be too expensive, instead do a recursive 'fsync' on the 'paths' (store items) that are about to be registered (and maybe some other tricks like disabling the 'fsync/sync' for most tests). (Unverified if this solves those issues, just an idea ...) Greetings, Maxime.