diff options
author | Antonio Russo <[email protected]> | 2017-10-30 16:18:26 -0400 |
---|---|---|
committer | Tony Hutter <[email protected]> | 2017-11-20 16:20:08 -0600 |
commit | 1c4f5e7d92b1fbd65413ddf34e5b9fbf7414309f (patch) | |
tree | fc99ed04c4e618b83fe568debe31e98aefeaca91 | |
parent | 246e515cf8e0be011a1466c54890a31a87a953e1 (diff) |
systemd zfs-import.target and documentation
zfs-import-{cache,scan}.service must complete before any mounting of
filesystems can occur. To simplify this dependency, create a target
that is reached After (in the systemd sense) the pool is imported.
Additionally, recommend that legacy zfs mounts use the option
x-systemd.requires=zfs-import.target
to codify this requirement.
Reviewed-by: Fabian Grünbichler <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Reviewed-by: Giuseppe Di Natale <[email protected]>
Signed-off-by: Antonio Russo <[email protected]>
Closes #6764
-rw-r--r-- | etc/systemd/system/Makefile.am | 2 | ||||
-rw-r--r-- | etc/systemd/system/zfs-import-cache.service.in | 4 | ||||
-rw-r--r-- | etc/systemd/system/zfs-import-scan.service.in | 4 | ||||
-rw-r--r-- | etc/systemd/system/zfs-import.target.in | 6 | ||||
-rw-r--r-- | etc/systemd/system/zfs-mount.service.in | 3 | ||||
-rw-r--r-- | man/man8/zfs.8 | 11 |
6 files changed, 23 insertions, 7 deletions
diff --git a/etc/systemd/system/Makefile.am b/etc/systemd/system/Makefile.am index b097497e0..1586209ca 100644 --- a/etc/systemd/system/Makefile.am +++ b/etc/systemd/system/Makefile.am @@ -7,6 +7,7 @@ systemdunit_DATA = \ zfs-import-scan.service \ zfs-mount.service \ zfs-share.service \ + zfs-import.target \ zfs.target EXTRA_DIST = \ @@ -15,6 +16,7 @@ EXTRA_DIST = \ $(top_srcdir)/etc/systemd/system/zfs-import-scan.service.in \ $(top_srcdir)/etc/systemd/system/zfs-mount.service.in \ $(top_srcdir)/etc/systemd/system/zfs-share.service.in \ + $(top_srcdir)/etc/systemd/system/zfs-import.target.in \ $(top_srcdir)/etc/systemd/system/zfs.target.in \ $(top_srcdir)/etc/systemd/system/50-zfs.preset.in diff --git a/etc/systemd/system/zfs-import-cache.service.in b/etc/systemd/system/zfs-import-cache.service.in index 02184a602..9d677f8dd 100644 --- a/etc/systemd/system/zfs-import-cache.service.in +++ b/etc/systemd/system/zfs-import-cache.service.in @@ -6,6 +6,7 @@ After=systemd-udev-settle.service After=cryptsetup.target After=systemd-remount-fs.service Before=dracut-mount.service +Before=zfs-import.target ConditionPathExists=@sysconfdir@/zfs/zpool.cache [Service] @@ -15,5 +16,4 @@ ExecStartPre=/sbin/modprobe zfs ExecStart=@sbindir@/zpool import -c @sysconfdir@/zfs/zpool.cache -aN [Install] -WantedBy=zfs-mount.service -WantedBy=zfs.target +WantedBy=zfs-import.target diff --git a/etc/systemd/system/zfs-import-scan.service.in b/etc/systemd/system/zfs-import-scan.service.in index 625f3a955..227f5b74f 100644 --- a/etc/systemd/system/zfs-import-scan.service.in +++ b/etc/systemd/system/zfs-import-scan.service.in @@ -5,6 +5,7 @@ Requires=systemd-udev-settle.service After=systemd-udev-settle.service After=cryptsetup.target Before=dracut-mount.service +Before=zfs-import.target ConditionPathExists=!@sysconfdir@/zfs/zpool.cache [Service] @@ -14,5 +15,4 @@ ExecStartPre=/sbin/modprobe zfs ExecStart=@sbindir@/zpool import -aN -o cachefile=none [Install] -WantedBy=zfs-mount.service -WantedBy=zfs.target +WantedBy=zfs-import.target diff --git a/etc/systemd/system/zfs-import.target.in b/etc/systemd/system/zfs-import.target.in new file mode 100644 index 000000000..ef25679ab --- /dev/null +++ b/etc/systemd/system/zfs-import.target.in @@ -0,0 +1,6 @@ +[Unit] +Description=ZFS pool import target + +[Install] +WantedBy=zfs-mount.service +WantedBy=zfs.target diff --git a/etc/systemd/system/zfs-mount.service.in b/etc/systemd/system/zfs-mount.service.in index 0664fd9e7..728fc630c 100644 --- a/etc/systemd/system/zfs-mount.service.in +++ b/etc/systemd/system/zfs-mount.service.in @@ -2,8 +2,7 @@ Description=Mount ZFS filesystems DefaultDependencies=no After=systemd-udev-settle.service -After=zfs-import-cache.service -After=zfs-import-scan.service +After=zfs-import.target After=systemd-remount-fs.service Before=local-fs.target diff --git a/man/man8/zfs.8 b/man/man8/zfs.8 index 44180d603..48a5e6ea7 100644 --- a/man/man8/zfs.8 +++ b/man/man8/zfs.8 @@ -440,7 +440,16 @@ If needed, ZFS file systems can also be managed with traditional tools If a file system's mount point is set to .Sy legacy , ZFS makes no attempt to manage the file system, and the administrator is -responsible for mounting and unmounting the file system. +responsible for mounting and unmounting the file system. Because pools must +be imported before a legacy mount can succeed, administrators should ensure +that legacy mounts are only attempted after the zpool import process +finishes at boot time. For example, on machines using systemd, the mount +option +.Pp +.Nm x-systemd.requires=zfs-import.target +.Pp +will ensure that the zfs-import completes before systemd attempts mounting +the filesystem. See systemd.mount(5) for details. .Ss Deduplication Deduplication is the process for removing redundant data at the block level, reducing the total amount of data stored. If a file system has the |