mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-25 11:47:43 +03:00
Revert "Illumos 3749 - zfs event processing should work on R/O root filesystems"
This reverts commit b47637ecdc which
introduced a regression in ztest.
$ ./cmd/ztest/ztest -V
5 vdevs, 7 datasets, 23 threads, 300 seconds...
*** Error in `/rpool/home/behlendo/src/git/zfs/cmd/ztest/.libs/lt-ztest':
double free or corruption (fasttop): 0x0000000000d339f0 ***
This commit is contained in:
+2
-29
@@ -82,12 +82,6 @@
|
||||
#include "zfs_prop.h"
|
||||
#include "zfs_comutil.h"
|
||||
|
||||
/*
|
||||
* The interval, in seconds, at which failed configuration cache file writes
|
||||
* should be retried.
|
||||
*/
|
||||
static int zfs_ccw_retry_interval = 300;
|
||||
|
||||
typedef enum zti_modes {
|
||||
ZTI_MODE_FIXED, /* value is # of threads (min 1) */
|
||||
ZTI_MODE_BATCH, /* cpu-intensive; value is ignored */
|
||||
@@ -5918,34 +5912,13 @@ spa_async_resume(spa_t *spa)
|
||||
mutex_exit(&spa->spa_async_lock);
|
||||
}
|
||||
|
||||
static boolean_t
|
||||
spa_async_tasks_pending(spa_t *spa)
|
||||
{
|
||||
uint_t non_config_tasks;
|
||||
uint_t config_task;
|
||||
boolean_t config_task_suspended;
|
||||
|
||||
non_config_tasks = spa->spa_async_tasks & ~SPA_ASYNC_CONFIG_UPDATE;
|
||||
config_task = spa->spa_async_tasks & SPA_ASYNC_CONFIG_UPDATE;
|
||||
if (spa->spa_ccw_fail_time == 0) {
|
||||
config_task_suspended = B_FALSE;
|
||||
} else {
|
||||
config_task_suspended =
|
||||
(gethrtime() - spa->spa_ccw_fail_time) <
|
||||
(zfs_ccw_retry_interval * NANOSEC);
|
||||
}
|
||||
|
||||
return (non_config_tasks || (config_task && !config_task_suspended));
|
||||
}
|
||||
|
||||
static void
|
||||
spa_async_dispatch(spa_t *spa)
|
||||
{
|
||||
mutex_enter(&spa->spa_async_lock);
|
||||
if (spa_async_tasks_pending(spa) &&
|
||||
!spa->spa_async_suspended &&
|
||||
if (spa->spa_async_tasks && !spa->spa_async_suspended &&
|
||||
spa->spa_async_thread == NULL &&
|
||||
rootdir != NULL)
|
||||
rootdir != NULL && !vn_is_readonly(rootdir))
|
||||
spa->spa_async_thread = thread_create(NULL, 0,
|
||||
spa_async_thread, spa, 0, &p0, TS_RUN, maxclsyspri);
|
||||
mutex_exit(&spa->spa_async_lock);
|
||||
|
||||
Reference in New Issue
Block a user