zfs/cmd
Tony Hutter 90abfdf8ee zed: Misc multipath autoreplace fixes
We recently had a case where our operators replaced a bad
multipathed disk, only to see it fail to autoreplace.  The
zed logs showed that the multipath replacement disk did not pass
the 'is_dm' test in zfs_process_add() even though it should have.
is_dm is set if there exists a sysfs entry for to the
underlying /dev/sd* paths for the multipath disk.  It's
possible this path didn't exist due to a race condition where
the sysfs paths weren't created at the time the udev event came
in to zed, but this was never verified.

This patch updates the check to look for udev properties that
indicate if the new autoreplace disk is an empty multipath disk,
rather than looking for the underlying sysfs entries. It also
adds in additional logging, and fixes a bug where zed allowed
you to use an already zfs-formatted disk from another pool
as a multipath auto-replacement disk.

Furthermore, while testing this patch, I also ran across a case
where a force-faulted disk did not have a ZPOOL_CONFIG_PHYS_PATH
entry in its config.  This prevented it from being autoreplaced.
I added additional logic to derive the PHYS_PATH from the PATH if
the PATH was a /dev/disk/by-vdev/ path.  For example, if PATH
was /dev/disk/by-vdev/L28, then PHYS_PATH would be L28.  This is
safe since by-vdev paths represent physical locations and do not
change between boots.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tony Hutter <hutter2@llnl.gov>
Closes #13023
2022-03-18 06:54:48 -07:00
..
arc_summary Added another missed case to arc_summary3 2021-06-09 13:05:34 -07:00
arcstat FreeBSD: Update usage of py-sysctl 2020-12-10 15:28:31 -08:00
dbufstat dbufstat: Fix warnings with Python 3.8 2020-12-23 15:10:35 -08:00
fsck_zfs Turn shellcheck into a normal make target. Fix new files it caught 2021-06-09 13:05:34 -07:00
mount_zfs `mount.zfs -o zfsutil` leverages `zfs_mount_at()` 2022-02-16 17:58:55 -08:00
raidz_test Removed duplicated includes 2021-03-22 12:34:58 -07:00
vdev_id Remove basename(1). Clean up/shorten some coreutils pipelines 2022-02-16 17:58:55 -08:00
zdb Update `checkstyle` workflow env to ubuntu-20.04 2021-12-08 13:27:56 -08:00
zed zed: Misc multipath autoreplace fixes 2022-03-18 06:54:48 -07:00
zfs Use fallthrough macro 2021-11-02 09:50:30 -07:00
zfs_ids_to_path zfs_ids_to_path: print correct wrong values 2021-04-14 13:19:50 -07:00
zgenhostid zgenhostid: use argument path directly 2021-06-08 14:47:05 -07:00
zhack cppcheck: integrete cppcheck 2021-01-26 16:12:26 -08:00
zinject cppcheck: integrete cppcheck 2021-01-26 16:12:26 -08:00
zpool Remove basename(1). Clean up/shorten some coreutils pipelines 2022-02-16 17:58:55 -08:00
zpool_influxdb Use fallthrough macro 2021-11-02 09:50:30 -07:00
zstream Fix erroneous zstreamdump warning 2022-03-01 09:45:48 -08:00
ztest Annotated dprintf as printf-like 2021-06-24 13:12:36 -07:00
zvol_id Use substantially more robust program exit status logic in zvol_id 2021-09-14 12:23:38 -07:00
zvol_wait Turn shellcheck into a normal make target. Fix new files it caught 2021-06-09 13:05:34 -07:00
Makefile.am Turn shellcheck into a normal make target. Fix new files it caught 2021-06-09 13:05:34 -07:00