Permalink
Browse files

Disable mount(8) canonical paths in do_mount()

By default the mount(8) command, as invoked by 'zfs mount', will try
to resolve any path parameter in its canonical form: this could lead
to mount failures when the cwd contains a symlink having the same name
of the dataset being mounted.

Fix this by explicitly disabling mount(8) path canonicalization.

Reviewed-by: George Melikov <mail@gmelikov.ru>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
Closes #1791 
Closes #6429 
Closes #6437
  • Loading branch information...
loli10K authored and tonyhutter committed Aug 21, 2017
1 parent ae5b4a0 commit 4810a108e889cf18ee7151d99e63644a2d330d0a
Showing with 2 additions and 2 deletions.
  1. +0 −1 etc/systemd/system/zfs-mount.service.in
  2. +2 −1 lib/libzfs/libzfs_mount.c
@@ -11,7 +11,6 @@ Before=local-fs.target
Type=oneshot
RemainAfterExit=yes
ExecStart=@sbindir@/zfs mount -a
WorkingDirectory=-/sbin/

[Install]
WantedBy=zfs-share.service
@@ -344,8 +344,9 @@ zfs_is_mountable(zfs_handle_t *zhp, char *buf, size_t buflen,
static int
do_mount(const char *src, const char *mntpt, char *opts)
{
char *argv[8] = {
char *argv[9] = {
"/bin/mount",
"--no-canonicalize",
"-t", MNTTYPE_ZFS,
"-o", opts,
(char *)src,

0 comments on commit 4810a10

Please sign in to comment.