From: John Darrington <john@darrington.wattle.id.au>
To: Ludovic Court??s <ludo@gnu.org>
Cc: guix-devel@gnu.org
Subject: mount syscall
Date: Wed, 16 Nov 2016 22:06:01 +0100 [thread overview]
Message-ID: <20161116210601.GA409@jocasta.intra> (raw)
In-Reply-To: <87inrpdnrq.fsf@gnu.org>
[-- Attachment #1: Type: text/plain, Size: 4332 bytes --]
On Tue, Nov 15, 2016 at 11:46:01AM +0100, Ludovic Court??s wrote:
John Darrington <john@darrington.wattle.id.au> skribis:
> On Mon, Nov 14, 2016 at 10:48:18AM +0100, Ludovic Court??s wrote:
>
> The ???mount??? system call; see (gnu build file-systems).
>
> I confess, I have not really thought about this before. But supposing somebody has in their /etc/config.scm:
>
> (file-systems
> (cons*
> (file-system
> (device "my-root")
> (title 'label)
> (mount-point "/")
> (type "ext4"))
> (file-system
> (device "fileserver.example.com:/home")
> (title 'device)
> (mount-point "/home")
> (type "nfs4"))
> %base-file-systems))
>
> Would the /home filesystem then get mounted on boot?
Maybe not. :-)
The man page for mount(2) says:
--8<---------------cut here---------------start------------->8--- Values
for the filesystemtype argument supported by the kernel are listed in
/proc/filesystems (e.g., "btrfs", "ext4", "jfs", "xfs", "vfat", "fuse",
"tmpfs", "cgroup", "proc", "mqueue", "nfs", "cifs", "iso9660"). Further
types may become available when the appropriate modules are loaded.
--8<---------------cut here---------------end--------------->8---
I don???t know what happens with NFS, you???ll have to tell us.
The answer seems to be that it would fail unless we patch our mount syscall
wrapper with something like:
diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm
index 2cee654..3435617 100644
--- a/guix/build/syscalls.scm
+++ b/guix/build/syscalls.scm
@@ -415,17 +415,33 @@ string. When FLAGS contains MS_REMOUNT, SOURCE and TYPE are ignored. When
UPDATE-MTAB? is true, update /etc/mtab. Raise a 'system-error' exception on
error."
(let-values (((ret err)
- (proc (if source
- (string->pointer source)
- %null-pointer)
- (string->pointer target)
- (if type
- (string->pointer type)
- %null-pointer)
- flags
- (if options
- (string->pointer options)
- %null-pointer))))
+ (let ((xoptions
+ (cond
+ ((string-match "^nfs.*" type)
+ (let* ((hosts (string-split source #\:))
+ (aa (car (getaddrinfo (car hosts) #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))))
+ (proc
+ (if source
+ (string->pointer source)
+ %null-pointer)
+ (string->pointer target)
+ (if type
+ (string->pointer type)
+ %null-pointer)
+ flags
+ (if xoptions
+ (string->pointer xoptions)
+ %null-pointer)))))
(unless (zero? ret)
(throw 'system-error "mount" "mount ~S on ~S: ~A"
(list source target (strerror err))
WDYT?
--
Avoid eavesdropping. Send strong encrypted email.
PGP Public key ID: 1024D/2DE827B3
fingerprint = 8797 A26D 0854 2EAB 0285 A290 8A67 719C 2DE8 27B3
See http://sks-keyservers.net or any PGP keyserver for public key.
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]
next prev parent reply other threads:[~2016-11-16 21:06 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-10 21:14 [PATCH 1/4] gnu: Separate util-linux into three packages John Darrington
2016-11-10 21:14 ` [PATCH 2/4] gnu: nfs-utils: Change input from util-linux to util-linux/mount John Darrington
2016-11-10 21:14 ` [PATCH 3/4] gnu: Move util-linux/mount to new file and deal with the effects John Darrington
2016-11-10 21:14 ` [PATCH 4/4] Add fs-search paths to util-linux John Darrington
2016-11-11 14:43 ` [PATCH 1/4] gnu: Separate util-linux into three packages Hartmut Goebel
2016-11-11 16:03 ` John Darrington
2016-11-11 16:40 ` Hartmut Goebel
2016-11-11 19:36 ` John Darrington
2016-11-12 14:53 ` Ludovic Courtès
2016-11-12 15:28 ` John Darrington
2016-11-12 17:09 ` John Darrington
2016-11-12 22:55 ` Ludovic Courtès
2016-11-13 8:21 ` John Darrington
2016-11-13 11:59 ` Ludovic Courtès
2016-11-13 14:06 ` John Darrington
2016-11-14 9:48 ` Ludovic Courtès
2016-11-14 17:46 ` John Darrington
2016-11-15 10:46 ` Ludovic Courtès
2016-11-16 21:06 ` John Darrington [this message]
2016-11-17 9:47 ` mount syscall Ludovic Courtès
2016-11-22 19:15 ` [PATCH] gnu: Allow nfs filesystems to be automatically mounted John Darrington
2016-11-23 22:07 ` Ludovic Courtès
2016-11-23 23:32 ` John Darrington
2016-11-24 16:08 ` Ludovic Courtès
2016-11-26 9:36 ` [PATCH] gnu: Allow nfs file systems " John Darrington
2016-11-26 18:37 ` Ludovic Courtès
2016-11-26 19:33 ` John Darrington
2016-11-28 13:59 ` Ludovic Courtès
2016-11-28 14:07 ` John Darrington
2016-11-28 21:05 ` Ludovic Courtès
2016-11-29 6:27 ` John Darrington
2016-11-29 21:51 ` Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20161116210601.GA409@jocasta.intra \
--to=john@darrington.wattle.id.au \
--cc=guix-devel@gnu.org \
--cc=ludo@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).