mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-24 03:08:51 +03:00
Add zfs_prepare_disk script for disk firmware install
Have libzfs call a special `zfs_prepare_disk` script before a disk is included into the pool. The user can edit this script to add things like a disk firmware update or a disk health check. Use of the script is totally optional. See the zfs_prepare_disk manpage for full details. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Tony Hutter <hutter2@llnl.gov> Closes #15243
This commit is contained in:
@@ -62,6 +62,7 @@ dist_man_MANS = \
|
||||
%D%/man8/zfs-userspace.8 \
|
||||
%D%/man8/zfs-wait.8 \
|
||||
%D%/man8/zfs_ids_to_path.8 \
|
||||
%D%/man8/zfs_prepare_disk.8 \
|
||||
%D%/man8/zgenhostid.8 \
|
||||
%D%/man8/zinject.8 \
|
||||
%D%/man8/zpool.8 \
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
/zed.8
|
||||
/zfs-mount-generator.8
|
||||
/zfs_prepare_disk.8
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
.\"
|
||||
.\" Developed at Lawrence Livermore National Laboratory (LLNL-CODE-403049).
|
||||
.\" Copyright (C) 2023 Lawrence Livermore National Security, LLC.
|
||||
.\" Refer to the OpenZFS git commit log for authoritative copyright attribution.
|
||||
.\"
|
||||
.\" The contents of this file are subject to the terms of the
|
||||
.\" Common Development and Distribution License Version 1.0 (CDDL-1.0).
|
||||
.\" You can obtain a copy of the license from the top-level file
|
||||
.\" "OPENSOLARIS.LICENSE" or at <http://opensource.org/licenses/CDDL-1.0>.
|
||||
.\" You may not use this file except in compliance with the license.
|
||||
.\"
|
||||
.\" Developed at Lawrence Livermore National Laboratory (LLNL-CODE-403049)
|
||||
.\"
|
||||
.Dd August 30, 2023
|
||||
.Dt ZFS_PREPARE_DISK 8
|
||||
.Os
|
||||
.
|
||||
.Sh NAME
|
||||
.Nm zfs_prepare_disk
|
||||
.Nd special script that gets run before bringing a disk into a pool
|
||||
.Sh DESCRIPTION
|
||||
.Nm
|
||||
is an optional script that gets called by libzfs before bringing a disk into a
|
||||
pool.
|
||||
It can be modified by the user to run whatever commands are necessary to prepare
|
||||
a disk for inclusion into the pool.
|
||||
For example, users can add lines to
|
||||
.Nm zfs_prepare_disk
|
||||
to do things like update the drive's firmware or check the drive's health.
|
||||
.Nm zfs_prepare_disk
|
||||
is optional and can be removed if not needed.
|
||||
libzfs will look for the script at @zfsexecdir@/zfs_prepare_disk.
|
||||
.
|
||||
.Ss Properties
|
||||
.Nm zfs_prepare_disk
|
||||
will be passed the following environment variables:
|
||||
.sp
|
||||
.Bl -tag -compact -width "VDEV_ENC_SYSFS_PATH"
|
||||
.
|
||||
.It Nm POOL_NAME
|
||||
.No Name of the pool
|
||||
.It Nm VDEV_PATH
|
||||
.No Path to the disk (like /dev/sda)
|
||||
.It Nm VDEV_PREPARE
|
||||
.No Reason why the disk is being prepared for inclusion
|
||||
('create', 'add', 'replace', or 'autoreplace').
|
||||
This can be useful if you only want the script to be run under certain actions.
|
||||
.It Nm VDEV_UPATH
|
||||
.No Path to one of the underlying devices for the
|
||||
disk.
|
||||
For multipath this would return one of the /dev/sd* paths to the disk.
|
||||
If the device is not a device mapper device, then
|
||||
.Nm VDEV_UPATH
|
||||
just returns the same value as
|
||||
.Nm VDEV_PATH
|
||||
.It Nm VDEV_ENC_SYSFS_PATH
|
||||
.No Path to the disk's enclosure sysfs path, if available
|
||||
.El
|
||||
.Pp
|
||||
Note that some of these variables may have a blank value.
|
||||
.Nm POOL_NAME
|
||||
is blank at pool creation time, for example.
|
||||
.Sh ENVIRONMENT
|
||||
.Nm zfs_prepare_disk
|
||||
runs with a limited $PATH.
|
||||
.Sh EXIT STATUS
|
||||
.Nm zfs_prepare_disk
|
||||
should return 0 on success, non-zero otherwise.
|
||||
If non-zero is returned, the disk will not be included in the pool.
|
||||
.
|
||||
Reference in New Issue
Block a user