Fix zfs_txg_timeout module parameter
Allow the zfs_txg_timeout variable to be dynamically tuned at run time. By pulling it down out of the variable declaration it will be evaluted each time through the loop. The zfs_txg_timeout variable is now declared extern in a the common sys/txg.h header rather than locally in dsl_scan.c. This prevents potential type mismatches if the global variable needs to be used elsewhere. Move the module_param() code in to the same source file where zfs_txg_timeout is declared. This is the most logical location. Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
This commit is contained in:
parent
7df05a4266
commit
87d98efe9e
|
@ -130,6 +130,9 @@ extern int txg_list_member(txg_list_t *tl, void *p, uint64_t txg);
|
||||||
extern void *txg_list_head(txg_list_t *tl, uint64_t txg);
|
extern void *txg_list_head(txg_list_t *tl, uint64_t txg);
|
||||||
extern void *txg_list_next(txg_list_t *tl, void *p, uint64_t txg);
|
extern void *txg_list_next(txg_list_t *tl, void *p, uint64_t txg);
|
||||||
|
|
||||||
|
/* Global tuning */
|
||||||
|
extern int zfs_txg_timeout;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -71,8 +71,6 @@ int dsl_scan_delay_completion = B_FALSE; /* set to delay scan completion */
|
||||||
((scn)->scn_phys.scn_func == POOL_SCAN_SCRUB || \
|
((scn)->scn_phys.scn_func == POOL_SCAN_SCRUB || \
|
||||||
(scn)->scn_phys.scn_func == POOL_SCAN_RESILVER)
|
(scn)->scn_phys.scn_func == POOL_SCAN_RESILVER)
|
||||||
|
|
||||||
extern int zfs_txg_timeout;
|
|
||||||
|
|
||||||
/* the order has to match pool_scan_type */
|
/* the order has to match pool_scan_type */
|
||||||
static scan_cb_t *scan_funcs[POOL_SCAN_FUNCS] = {
|
static scan_cb_t *scan_funcs[POOL_SCAN_FUNCS] = {
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -1813,7 +1811,4 @@ MODULE_PARM_DESC(zfs_no_scrub_io, "Set to disable scrub I/O");
|
||||||
|
|
||||||
module_param(zfs_no_scrub_prefetch, int, 0644);
|
module_param(zfs_no_scrub_prefetch, int, 0644);
|
||||||
MODULE_PARM_DESC(zfs_no_scrub_prefetch, "Set to disable scrub prefetching");
|
MODULE_PARM_DESC(zfs_no_scrub_prefetch, "Set to disable scrub prefetching");
|
||||||
|
|
||||||
module_param(zfs_txg_timeout, int, 0644);
|
|
||||||
MODULE_PARM_DESC(zfs_txg_timeout, "Max seconds worth of delta per txg");
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -395,9 +395,11 @@ txg_sync_thread(dsl_pool_t *dp)
|
||||||
|
|
||||||
start = delta = 0;
|
start = delta = 0;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
uint64_t timer, timeout = zfs_txg_timeout * hz;
|
uint64_t timer, timeout;
|
||||||
uint64_t txg;
|
uint64_t txg;
|
||||||
|
|
||||||
|
timeout = zfs_txg_timeout * hz;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We sync when we're scanning, there's someone waiting
|
* We sync when we're scanning, there's someone waiting
|
||||||
* on us, or the quiesce thread has handed off a txg to
|
* on us, or the quiesce thread has handed off a txg to
|
||||||
|
@ -773,4 +775,7 @@ EXPORT_SYMBOL(txg_wait_open);
|
||||||
EXPORT_SYMBOL(txg_wait_callbacks);
|
EXPORT_SYMBOL(txg_wait_callbacks);
|
||||||
EXPORT_SYMBOL(txg_stalled);
|
EXPORT_SYMBOL(txg_stalled);
|
||||||
EXPORT_SYMBOL(txg_sync_waiting);
|
EXPORT_SYMBOL(txg_sync_waiting);
|
||||||
|
|
||||||
|
module_param(zfs_txg_timeout, int, 0644);
|
||||||
|
MODULE_PARM_DESC(zfs_txg_timeout, "Max seconds worth of delta per txg");
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue