aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/sys/spa_impl.h2
-rw-r--r--module/os/linux/zfs/spa_misc_os.c18
-rw-r--r--module/zfs/spa_misc.c32
3 files changed, 33 insertions, 19 deletions
diff --git a/include/sys/spa_impl.h b/include/sys/spa_impl.h
index 9ee04eb25..02cb48057 100644
--- a/include/sys/spa_impl.h
+++ b/include/sys/spa_impl.h
@@ -445,6 +445,8 @@ extern sysevent_t *spa_event_create(spa_t *spa, vdev_t *vd, nvlist_t *hist_nvl,
const char *name);
extern void spa_event_post(sysevent_t *ev);
extern int param_set_deadman_failmode_common(const char *val);
+extern void spa_set_deadman_synctime(hrtime_t ns);
+extern void spa_set_deadman_ziotime(hrtime_t ns);
#ifdef __cplusplus
}
diff --git a/module/os/linux/zfs/spa_misc_os.c b/module/os/linux/zfs/spa_misc_os.c
index 33ff6c082..85de10d40 100644
--- a/module/os/linux/zfs/spa_misc_os.c
+++ b/module/os/linux/zfs/spa_misc_os.c
@@ -58,20 +58,13 @@ param_set_deadman_failmode(const char *val, zfs_kernel_param_t *kp)
int
param_set_deadman_ziotime(const char *val, zfs_kernel_param_t *kp)
{
- spa_t *spa = NULL;
int error;
error = param_set_ulong(val, kp);
if (error < 0)
return (SET_ERROR(error));
- if (spa_mode_global != SPA_MODE_UNINIT) {
- mutex_enter(&spa_namespace_lock);
- while ((spa = spa_next(spa)) != NULL)
- spa->spa_deadman_ziotime =
- MSEC2NSEC(zfs_deadman_ziotime_ms);
- mutex_exit(&spa_namespace_lock);
- }
+ spa_set_deadman_ziotime(MSEC2NSEC(zfs_deadman_ziotime_ms));
return (0);
}
@@ -79,20 +72,13 @@ param_set_deadman_ziotime(const char *val, zfs_kernel_param_t *kp)
int
param_set_deadman_synctime(const char *val, zfs_kernel_param_t *kp)
{
- spa_t *spa = NULL;
int error;
error = param_set_ulong(val, kp);
if (error < 0)
return (SET_ERROR(error));
- if (spa_mode_global != SPA_MODE_UNINIT) {
- mutex_enter(&spa_namespace_lock);
- while ((spa = spa_next(spa)) != NULL)
- spa->spa_deadman_synctime =
- MSEC2NSEC(zfs_deadman_synctime_ms);
- mutex_exit(&spa_namespace_lock);
- }
+ spa_set_deadman_synctime(MSEC2NSEC(zfs_deadman_synctime_ms));
return (0);
}
diff --git a/module/zfs/spa_misc.c b/module/zfs/spa_misc.c
index fe086d7b3..6f0783468 100644
--- a/module/zfs/spa_misc.c
+++ b/module/zfs/spa_misc.c
@@ -303,20 +303,20 @@ int zfs_free_leak_on_eio = B_FALSE;
* has not completed in zfs_deadman_synctime_ms is considered "hung" resulting
* in one of three behaviors controlled by zfs_deadman_failmode.
*/
-unsigned long zfs_deadman_synctime_ms = 600000ULL;
+unsigned long zfs_deadman_synctime_ms = 600000UL;
/*
* This value controls the maximum amount of time zio_wait() will block for an
* outstanding IO. By default this is 300 seconds at which point the "hung"
* behavior will be applied as described for zfs_deadman_synctime_ms.
*/
-unsigned long zfs_deadman_ziotime_ms = 300000ULL;
+unsigned long zfs_deadman_ziotime_ms = 300000UL;
/*
* Check time in milliseconds. This defines the frequency at which we check
* for hung I/O.
*/
-unsigned long zfs_deadman_checktime_ms = 60000ULL;
+unsigned long zfs_deadman_checktime_ms = 60000UL;
/*
* By default the deadman is enabled.
@@ -1999,6 +1999,32 @@ spa_set_deadman_failmode(spa_t *spa, const char *failmode)
spa->spa_deadman_failmode = ZIO_FAILURE_MODE_WAIT;
}
+void
+spa_set_deadman_ziotime(hrtime_t ns)
+{
+ spa_t *spa = NULL;
+
+ if (spa_mode_global != SPA_MODE_UNINIT) {
+ mutex_enter(&spa_namespace_lock);
+ while ((spa = spa_next(spa)) != NULL)
+ spa->spa_deadman_ziotime = ns;
+ mutex_exit(&spa_namespace_lock);
+ }
+}
+
+void
+spa_set_deadman_synctime(hrtime_t ns)
+{
+ spa_t *spa = NULL;
+
+ if (spa_mode_global != SPA_MODE_UNINIT) {
+ mutex_enter(&spa_namespace_lock);
+ while ((spa = spa_next(spa)) != NULL)
+ spa->spa_deadman_synctime = ns;
+ mutex_exit(&spa_namespace_lock);
+ }
+}
+
uint64_t
dva_get_dsize_sync(spa_t *spa, const dva_t *dva)
{