store: Update to the new daemon protocol.

* guix/store.scm (%protocol-version): Set minor to 14.
(open-connection): Add 'cpu-affinity' parameter and honor it.
This commit is contained in:
Ludovic Courtès 2015-12-03 18:53:01 +02:00
parent df7393b93c
commit d203d3d4cb
1 changed files with 13 additions and 7 deletions

View File

@ -129,7 +129,7 @@
direct-store-path direct-store-path
log-file)) log-file))
(define %protocol-version #x10c) (define %protocol-version #x10e)
(define %worker-magic-1 #x6e697863) ; "nixc" (define %worker-magic-1 #x6e697863) ; "nixc"
(define %worker-magic-2 #x6478696f) ; "dxio" (define %worker-magic-2 #x6478696f) ; "dxio"
@ -328,11 +328,13 @@
(status nix-protocol-error-status)) (status nix-protocol-error-status))
(define* (open-connection #:optional (file (%daemon-socket-file)) (define* (open-connection #:optional (file (%daemon-socket-file))
#:key (reserve-space? #t)) #:key (reserve-space? #t) cpu-affinity)
"Connect to the daemon over the Unix-domain socket at FILE. When "Connect to the daemon over the Unix-domain socket at FILE. When
RESERVE-SPACE? is true, instruct it to reserve a little bit of extra RESERVE-SPACE? is true, instruct it to reserve a little bit of extra space on
space on the file system so that the garbage collector can still the file system so that the garbage collector can still operate, should the
operate, should the disk become full. Return a server object." disk become full. When CPU-AFFINITY is true, it must be an integer
corresponding to an OS-level CPU number to which the daemon's worker process
for this connection will be pinned. Return a server object."
(let ((s (with-fluids ((%default-port-encoding #f)) (let ((s (with-fluids ((%default-port-encoding #f))
;; This trick allows use of the `scm_c_read' optimization. ;; This trick allows use of the `scm_c_read' optimization.
(socket PF_UNIX SOCK_STREAM 0))) (socket PF_UNIX SOCK_STREAM 0)))
@ -355,7 +357,11 @@ operate, should the disk become full. Return a server object."
(protocol-major v)) (protocol-major v))
(begin (begin
(write-int %protocol-version s) (write-int %protocol-version s)
(if (>= (protocol-minor v) 11) (when (>= (protocol-minor v) 14)
(write-int (if cpu-affinity 1 0) s)
(when cpu-affinity
(write-int cpu-affinity s)))
(when (>= (protocol-minor v) 11)
(write-int (if reserve-space? 1 0) s)) (write-int (if reserve-space? 1 0) s))
(let ((s (%make-nix-server s (let ((s (%make-nix-server s
(protocol-major v) (protocol-major v)