diff options
author | Ludovic Courtès <ludo@gnu.org> | 2019-01-23 22:27:29 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2019-01-23 23:35:12 +0100 |
commit | ba5e89be8cfa3428d7b41954df8af792986eb5ee (patch) | |
tree | 7130e8a8968d1201a25be04913d175a4190d2e7f /guix/store | |
parent | 1d209d06edef7b2dfd744862add66aa3fe61f952 (diff) |
deduplication: Ignore EMLINK.
Until now 'guix offload' would fail (transient failure) upon EMLINK.
* guix/store/deduplication.scm (replace-with-link)
(deduplicate): Ignore EMLINK.
Diffstat (limited to 'guix/store')
-rw-r--r-- | guix/store/deduplication.scm | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/guix/store/deduplication.scm b/guix/store/deduplication.scm index a777940f86..8ca16a4cd8 100644 --- a/guix/store/deduplication.scm +++ b/guix/store/deduplication.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 Caleb Ristvedt <caleb.ristvedt@cune.org> -;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -109,8 +109,9 @@ Note: TARGET, TO-REPLACE, and SWAP-DIRECTORY must be on the same file system." (get-temp-link target swap-directory)) (lambda args ;; We get ENOSPC when we can't fit an additional entry in - ;; SWAP-DIRECTORY. - (if (= ENOSPC (system-error-errno args)) + ;; SWAP-DIRECTORY. If it's EMLINK, then TARGET has reached its + ;; maximum number of links. + (if (memv (system-error-errno args) `(,ENOSPC ,EMLINK)) #f (apply throw args))))) @@ -169,4 +170,8 @@ under STORE." ;; more entries in .links, but that's fine: we can ;; just stop. #f) + ((= errno EMLINK) + ;; PATH has reached the maximum number of links, but + ;; that's OK: we just can't deduplicate it more. + #f) (else (apply throw args)))))))))) |