-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Add knob to disable slow io notifications #17477
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
Introduce a new vdev property `VDEV_PROP_SLOW_IO_REPORTING` that allows users to disable notifications for slow devices. This prevents ZED and/or ZFSD from degrading the pool due to slow I/O. Signed-off-by: Mariusz Zaborski <[email protected]>
@@ -45,7 +45,7 @@ section, below. | |||
Every vdev has a set of properties that export statistics about the vdev | |||
as well as control various behaviors. | |||
Properties are not inherited from top-level vdevs, with the exception of | |||
checksum_n, checksum_t, io_n, io_t, slow_io_n, and slow_io_t. | |||
checksum_n, checksum_t, io_n, io_t, slow_io_downgrade, slow_io_n, and slow_io_t. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should here and below be slow_io_reporting
instead of slow_io_downgrade
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
slow_io_reporting
doesn't seem quite right since we're still counting slow I/Os and reporting them in zpool status -s
. Maybe slow_io_events
? Although, I don't love that either.
uint64_t ivalue; | ||
|
||
err = vdev_prop_get_int(vd, prop, &ivalue); | ||
*bvalue = ivalue & 1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should it be & 1
or != 0
?
I wonder if this feature partially duplicates |
@@ -45,7 +45,7 @@ section, below. | |||
Every vdev has a set of properties that export statistics about the vdev | |||
as well as control various behaviors. | |||
Properties are not inherited from top-level vdevs, with the exception of | |||
checksum_n, checksum_t, io_n, io_t, slow_io_n, and slow_io_t. | |||
checksum_n, checksum_t, io_n, io_t, slow_io_downgrade, slow_io_n, and slow_io_t. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree
} else if (vd->vdev_leaf_zap != 0) { | ||
objid = vd->vdev_leaf_zap; | ||
} else { | ||
if (vdev_prop_get_objid(vd, &objid) != 0) | ||
panic("unexpected vdev type"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would it make sense to move the panic()
into vdev_prop_get_objid()
to save having to test it everywhere it is used?
Motivation and Context
Adding a knob allows disabling the slow_io check on a single vdev. Some users have reported that it breaks their enterprise configuration when one or more vdevs are using fiber channels with redundancy. Another reason to disable the check might be when a vdev is damaged, but we still want to force some resilvering from it.
Description
Add a knob to disable slow I/O event generation for a single vdev.
How Has This Been Tested?
New test has been added.
Types of changes
Checklist:
Signed-off-by
.