Skip to content

Commit

Permalink
Fix zfs_txg_timeout module parameter
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
behlendorf committed Oct 11, 2012
1 parent 7df05a4 commit 87d98ef
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 6 deletions.
3 changes: 3 additions & 0 deletions include/sys/txg.h
Original file line number Diff line number Diff line change
Expand Up @@ -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_next(txg_list_t *tl, void *p, uint64_t txg);

/* Global tuning */
extern int zfs_txg_timeout;

#ifdef __cplusplus
}
#endif
Expand Down
5 changes: 0 additions & 5 deletions module/zfs/dsl_scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -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_RESILVER)

extern int zfs_txg_timeout;

/* the order has to match pool_scan_type */
static scan_cb_t *scan_funcs[POOL_SCAN_FUNCS] = {
NULL,
Expand Down Expand Up @@ -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_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
7 changes: 6 additions & 1 deletion module/zfs/txg.c
Original file line number Diff line number Diff line change
Expand Up @@ -395,9 +395,11 @@ txg_sync_thread(dsl_pool_t *dp)

start = delta = 0;
for (;;) {
uint64_t timer, timeout = zfs_txg_timeout * hz;
uint64_t timer, timeout;
uint64_t txg;

timeout = zfs_txg_timeout * hz;

/*
* We sync when we're scanning, there's someone waiting
* on us, or the quiesce thread has handed off a txg to
Expand Down Expand Up @@ -773,4 +775,7 @@ EXPORT_SYMBOL(txg_wait_open);
EXPORT_SYMBOL(txg_wait_callbacks);
EXPORT_SYMBOL(txg_stalled);
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

0 comments on commit 87d98ef

Please sign in to comment.