emacs-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#43219: closed ([PATCH] gnu: Handle nfs-root device strings.)


From: GNU bug Tracking System
Subject: bug#43219: closed ([PATCH] gnu: Handle nfs-root device strings.)
Date: Mon, 05 Oct 2020 16:32:02 +0000

Your message dated Mon, 5 Oct 2020 18:31:18 +0200
with message-id <831B1B07-F59A-4636-A57A-F8EBB1C6D5B6@vodafonemail.de>
and subject line Re: [bug#43219] [PATCH] gnu: Handle nfs-root device strings.
has caused the debbugs.gnu.org bug report #43219,
regarding [PATCH] gnu: Handle nfs-root device strings.
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs@gnu.org.)


-- 
43219: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=43219
GNU Bug Tracking System
Contact help-debbugs@gnu.org with problems
--- Begin Message --- Subject: [PATCH] gnu: Handle nfs-root device strings. Date: Sat, 5 Sep 2020 13:26:25 +0200
* gnu/bootloader/grub.scm (grub-root-search): Suppor nfs-root device strings to
set the root to tftp.
* gnu/build/file-systems.scm (canonicalize-device-spec): Support nfs-root device
strings.
* gnu/build/linux-boot.scm (device-string->file-system-device): Support nfs-root
device strings.
* gnu/machine/ssh.scm (machine-check-file-system-availability): Avoid checking
of nfs file systems as in guix/scripts/system.scm.
* gnu/system.scm (read-boot-parameters, device-sexp->device): Support nfs-root
device strings.

---
gnu/bootloader/grub.scm    |  3 +++
gnu/build/file-systems.scm |  3 ++-
gnu/build/linux-boot.scm   |  5 +++--
gnu/machine/ssh.scm        |  2 ++
gnu/system.scm             | 12 +++++++-----
5 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm
index b905ae360c..b3efcfa1db 100644
--- a/gnu/bootloader/grub.scm
+++ b/gnu/bootloader/grub.scm
@@ -295,6 +295,9 @@ code."
        ((? file-system-label? label)
         (format #f "search --label --set ~a"
                 (file-system-label->string label)))
+        ((? (lambda (device)
+              (and (string? device) (string-contains device ":/"))) nfs-uri)
+         "set root=(tftp)")
        ((or #f (? string?))
         #~(format #f "search --file --set ~a" #$file)))))

diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm
index 4ba1503b9f..734d648575 100644
--- a/gnu/build/file-systems.scm
+++ b/gnu/build/file-systems.scm
@@ -675,7 +675,8 @@ were found."
^L
(define (canonicalize-device-spec spec)
  "Return the device name corresponding to SPEC, which can be a <uuid>, a
-<file-system-label>, or a string (typically a /dev file name)."
+<file-system-label>, or a string (typically a /dev file name or an nfs-root
+containing ':/')."
  (define max-trials
    ;; Number of times we retry partition label resolution, 1 second per
    ;; trial.  Note: somebody reported a delay of 16 seconds (!) before their
diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm
index 80fe0cfb9d..32e3536039 100644
--- a/gnu/build/linux-boot.scm
+++ b/gnu/build/linux-boot.scm
@@ -469,9 +469,10 @@ upon error."

  (define (device-string->file-system-device device-string)
    ;; The "--root=SPEC" kernel command-line option always provides a
-    ;; string, but the string can represent a device, a UUID, or a
-    ;; label.  So check for all three.
+    ;; string, but the string can represent a device, an nfs-root, a UUID, or a
+    ;; label.  So check for all four.
    (cond ((string-prefix? "/" device-string) device-string)
+          ((string-contains device-string ":/") device-string) ; nfs-root
          ((uuid device-string) => identity)
          (else (file-system-label device-string))))

diff --git a/gnu/machine/ssh.scm b/gnu/machine/ssh.scm
index 4e31baa4b9..35b42add48 100644
--- a/gnu/machine/ssh.scm
+++ b/gnu/machine/ssh.scm
@@ -172,6 +172,8 @@ exist on the machine."
              (and (file-system-mount? fs)
                   (not (member (file-system-type fs)
                                %pseudo-file-system-types))
+                   ;; Don't try to validate network file systems.
+                   (not (string-prefix? "nfs" (file-system-type fs)))
                   (not (memq 'bind-mount (file-system-flags fs)))))
            (operating-system-file-systems (machine-operating-system machine))))

diff --git a/gnu/system.scm b/gnu/system.scm
index f092df56ce..bdb696fe2e 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -316,11 +316,13 @@ file system labels."
      ((? bytevector? bv)                         ;old format
       (bytevector->uuid bv 'dce))
      ((? string? device)
-       ;; It used to be that we would not distinguish between labels and
-       ;; device names.  Try to infer the right thing here.
-       (if (string-prefix? "/dev/" device)
-           device
-           (file-system-label device)))))
+       (if (string-contains device ":/")
+           device ; nfs-root
+           ;; It used to be that we would not distinguish between labels and
+           ;; device names.  Try to infer the right thing here.
+           (if (string-prefix? "/" device)
+               device
+               (file-system-label device))))))

  (match (read port)
    (('boot-parameters ('version 0)
-- 
2.26.0




--- End Message ---
--- Begin Message --- Subject: Re: [bug#43219] [PATCH] gnu: Handle nfs-root device strings. Date: Mon, 5 Oct 2020 18:31:18 +0200
Hi Ludo!

> Danny, Stefan: what’s the status of this patch?
> 
>  https://issues.guix.gnu.org/43219

It got committed in two chunks:

1c3b709edb8e6248a9a84dde57b27f3fdc997f21
8c4f1aa85f3844fc8c989e74cef9d269dd30889c

Closing. Thanks for the reminder.


Bye

Stefan

--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]