John Darrington <j...@gnu.org> skribis: > How about this, then? > > > > > > * gnu/build/file-systems.scm (mount-file-system): Append target addr= when > mounting nfs filesystems. > --- > gnu/build/file-systems.scm | 16 +++++++++++++++- > 1 file changed, 15 insertions(+), 1 deletion(-) > > diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm > index 0d55e91..c6fc784 100644 > --- a/gnu/build/file-systems.scm > +++ b/gnu/build/file-systems.scm > @@ -481,7 +481,21 @@ run a file system check." > (call-with-output-file mount-point (const #t))) > (mkdir-p mount-point)) > > - (mount source mount-point type flags options) > + (mount source mount-point type flags > + (cond > + ((string-match "^nfs.*" type) > + (let* ((host (car (string-split source #\:))) > + (aa (car (getaddrinfo host #f))) > + (sa (addrinfo:addr aa)) > + (inet-addr (inet-ntop (sockaddr:fam sa) > + (sockaddr:addr sa)))) > + (string-append "addr=" > + inet-addr > + (if options > + (string-append "," options) > + "")))) > + (else > + options)))
Looking at mount(8), it seems that the normal way is for ‘source’ to be something like “knuth.cwi.nl:/dir”. The kernel then takes care of parsing that and doing name resolution somehow. In that case, we don’t have anything to do, good for us. mount(8) doesn’t mention ‘addr’. Do you have documentation about it? Thanks, Ludo’.