Lines Matching +full:burst +full:- +full:write
1 // SPDX-License-Identifier: CDDL-1.0
10 * or https://opensource.org/licenses/CDDL-1.0.
33 * burst: Number to allow in an interval before rate limiting
37 zfs_ratelimit_init(zfs_ratelimit_t *rl, unsigned int *burst, in zfs_ratelimit_init() argument
40 rl->count = 0; in zfs_ratelimit_init()
41 rl->start = 0; in zfs_ratelimit_init()
42 rl->interval = interval; in zfs_ratelimit_init()
43 rl->burst = burst; in zfs_ratelimit_init()
44 mutex_init(&rl->lock, NULL, MUTEX_DEFAULT, NULL); in zfs_ratelimit_init()
55 mutex_destroy(&rl->lock); in zfs_ratelimit_fini()
59 * Re-implementation of the kernel's __ratelimit() function
61 * We had to write our own rate limiter because the kernel's __ratelimit()
83 mutex_enter(&rl->lock); in zfs_ratelimit()
86 elapsed = now - rl->start; in zfs_ratelimit()
88 rl->count++; in zfs_ratelimit()
89 if (NSEC2SEC(elapsed) >= rl->interval) { in zfs_ratelimit()
90 rl->start = now; in zfs_ratelimit()
91 rl->count = 0; in zfs_ratelimit()
93 if (rl->count >= *rl->burst) { in zfs_ratelimit()
97 mutex_exit(&rl->lock); in zfs_ratelimit()