diff --git a/guix/store.scm b/guix/store.scm
index 689a94c6360279e92a9f9b06e4681eac4dc7e3f8..a669011f3a075506bef03d4ef7f1573151b4b0be 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -470,7 +470,8 @@ (define %stderr-error #x63787470)          ; "cxtp", error reporting
            ;; Write a byte stream to USER-PORT.
            (let* ((len (read-int p))
                   (m   (modulo len 8)))
-             (dump-port p user-port len)
+             (dump-port p user-port len
+                        #:buffer-size (if (<= len 16384) 16384 65536))
              (unless (zero? m)
                ;; Consume padding, as for strings.
                (get-bytevector-n p (- 8 m))))