Deduplication breaks store item repair

OpenSubmitted by Lars-Dominik Braun.
Details
2 participants
  • Lars-Dominik Braun
  • Ludovic Courtès
Owner
unassigned
Severity
important
L
L
Lars-Dominik Braun wrote on 19 Aug 2021 14:07
(address . bug-guix@gnu.org)
YR5JZWoxDjqdErzs@noor.fritz.box
Hi,

I’ve been having issues with the filesystem that holds /gnu/store
recently, causing corrupted/broken files. When trying to repair these
broken files with `guix gc --verify=repair,contents` it properly detects
that store items’ hashes do not match the ones recorded in the database
and redownloads/rebuilds them. However, the corrupted store items are
never actually repaired – not by `guix gc` and not by `guix build
--repair`. Attached is a testcase showing that deduplication is the
problem, because repairing will just hardlink the (broken) deduplicated
file instead of replacing it with the downloaded/built file. I tried the
daemon’s `--disable-deduplication` too with same results.

Cheers,
Lars
Attachment: testcase.sh
/gnu/store/a462kby1q51ndvxdv3b6p0rsixxrgx1h-hello-2.10/bin/hello 0jxnp4f4rac2scvq9lhcvpr4n4w0zrx5wdhcqml4w7zfybbszswp
-r-xr-xr-x 2 root root 0 19. Aug 13:54 /gnu/store/a462kby1q51ndvxdv3b6p0rsixxrgx1h-hello-2.10/bin/hello
reading the store...
checking path existence...
checking hashes...
path `/gnu/store/a462kby1q51ndvxdv3b6p0rsixxrgx1h-hello-2.10' was modified! expected hash `9c61184c4b1af09639cee8148bc0c3d7aced4a671615a6e0a3e7ccb927848ffa', got `3330b928ba2d3cf6acfdb0ef3a359fb686eac7ee6e9d49a6515ef7b1701537cf'
fetching path `/gnu/store/a462kby1q51ndvxdv3b6p0rsixxrgx1h-hello-2.10'...
hello-2.10 51KiB 528KiB/s 00:00 [##################] 100.0%

-r-xr-xr-x 2 root root 0 1. Jan 1970 /gnu/store/a462kby1q51ndvxdv3b6p0rsixxrgx1h-hello-2.10/bin/hello
path `/gnu/store/a462kby1q51ndvxdv3b6p0rsixxrgx1h-hello-2.10' is corrupted or missing!
Substituiere /gnu/store/a462kby1q51ndvxdv3b6p0rsixxrgx1h-hello-2.10 …
hello-2.10 51KiB 482KiB/s 00:00 [##################] 100.0%

/gnu/store/a462kby1q51ndvxdv3b6p0rsixxrgx1h-hello-2.10
-r-xr-xr-x 2 root root 0 1. Jan 1970 /gnu/store/a462kby1q51ndvxdv3b6p0rsixxrgx1h-hello-2.10/bin/hello
path `/gnu/store/a462kby1q51ndvxdv3b6p0rsixxrgx1h-hello-2.10' is corrupted or missing!
Substituiere /gnu/store/a462kby1q51ndvxdv3b6p0rsixxrgx1h-hello-2.10 …
hello-2.10 51KiB 455KiB/s 00:00 [##################] 100.0%

/gnu/store/a462kby1q51ndvxdv3b6p0rsixxrgx1h-hello-2.10
-r-xr-xr-x 2 root root 37K 1. Jan 1970 /gnu/store/a462kby1q51ndvxdv3b6p0rsixxrgx1h-hello-2.10/bin/hello
L
L
Ludovic Courtès wrote on 25 Jan 23:42 +0100
control message for bug #50121
(address . control@debbugs.gnu.org)
871r0vl9n3.fsf@gnu.org
severity 50121 important
quit
?