mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-11-18 10:21:01 +03:00
Improve ZTS block_device_wait debugging
The udevadm settle timeout can be 120 or 180 seconds by default for some distributions. If a long delay is experienced, it could be due to some strangeness in a malfunctioning device that isn't related to the devices under test. To help debug this condition, a notice is given if settle takes too long. Arguments can now be passed to block_device_wait. The expected arguments are block device pathnames. Reviewed by: John Kennedy <john.kennedy@delphix.com> Reviewed-by: Giuseppe Di Natale <guss80@gmail.com> Reviewed-by: Tony Hutter <hutter2@llnl.gov> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Richard Elling <Richard.Elling@RichardElling.com> Closes #8839
This commit is contained in:
parent
fb52bf9b1d
commit
4be4dedb9f
@ -18,6 +18,7 @@
|
||||
# Copyright (c) 2017 Lawrence Livermore National Security, LLC.
|
||||
# Copyright (c) 2017 Datto Inc.
|
||||
# Copyright (c) 2017 Open-E, Inc. All Rights Reserved.
|
||||
# Copyright 2019 Richard Elling
|
||||
#
|
||||
|
||||
#
|
||||
@ -55,6 +56,16 @@ function scan_scsi_hosts
|
||||
|
||||
#
|
||||
# Wait for newly created block devices to have their minors created.
|
||||
# Additional arguments can be passed to udevadm trigger, with the expected
|
||||
# arguments to typically be a block device pathname. This is useful when
|
||||
# checking waiting on a specific device to settle rather than triggering
|
||||
# all devices and waiting for them all to settle.
|
||||
#
|
||||
# The udevadm settle timeout can be 120 or 180 seconds by default for
|
||||
# some distros. If a long delay is experienced, it could be due to some
|
||||
# strangeness in a malfunctioning device that isn't related to the devices
|
||||
# under test. To help debug this condition, a notice is given if settle takes
|
||||
# too long.
|
||||
#
|
||||
# Note: there is no meaningful return code if udevadm fails. Consumers
|
||||
# should not expect a return code (do not call as argument to log_must)
|
||||
@ -62,8 +73,12 @@ function scan_scsi_hosts
|
||||
function block_device_wait
|
||||
{
|
||||
if is_linux; then
|
||||
udevadm trigger
|
||||
udevadm trigger $*
|
||||
typeset local start=$SECONDS
|
||||
udevadm settle
|
||||
typeset local elapsed=$((SECONDS - start))
|
||||
[[ $elapsed > 60 ]] && \
|
||||
log_note udevadm settle time too long: $elapsed
|
||||
fi
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user