]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
initramfs: use `mount.zfs` instead of `mount`
authorDamian Szuberski <szuberskidamian@gmail.com>
Mon, 11 Apr 2022 22:51:23 +0000 (00:51 +0200)
committerGitHub <noreply@github.com>
Mon, 11 Apr 2022 22:51:23 +0000 (15:51 -0700)
commit35d81a75a8c13e011e19fd12cf553d9c5849386e
tree0b2bd3b62a0c72a97fca719a16e14b527fc5e2c0
parented715283de8e65a30d777e9576399ab75014b6fe
initramfs: use `mount.zfs` instead of `mount`

A followup to d7a67402a85252e163aa8a9b69e7eda499db8c61

For `mount -t zfs -o opts ds mp` command line
some implementations of `mount(8)`, e. g. Busybox in Debian
work as follows:

```
newfstatat(AT_FDCWD, "ds", 0x7fff826f4ab0, 0) = -1
mount("ds", "mp", "zfs", MS_SILENT, NULL) = 0
```

The logic above skips completely `mount.zfs` and prevents us
from reading filesystem properties and applying mount options.

For comparison, the coreutils `mount(8)` implementation does:

```
openat(AT_FDCWD, "/proc/filesystems", O_RDONLY|O_CLOEXEC) = 3
// figure out that zfs is a `nodev` filesystem and look for a helper
newfstatat(AT_FDCWD, "/sbin/mount.zfs" ...) = 0
execve("/sbin/mount.zfs" ...) = 0
```

Using `mount.zfs` in initramfs would help circumvent deficiencies
of some of `mount(8)` implementations. `mount -t zfs` translates
to `mount.zfs` invocation, except for cases when explicitly disabled
by `-i`.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: szubersk <szuberskidamian@gmail.com>
Closes #13305
contrib/initramfs/scripts/zfs