mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-10-28 19:34:43 +01:00
zfs_debug: Restore log size limit for userspace
For some reason it was dropped when split from kernel, that makes raidz_test to accumulate in RAM up to 100GB of logs we don't need. Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: Igor Kozhukhov <[email protected]> Reviewed-by: Rob Norris <[email protected]> Reviewed-by: Tino Reichardt <[email protected]> Signed-off-by: Alexander Motin <[email protected]> Sponsored by: iXsystems, Inc. Closes #16492 Closes #16566 Closes #16664
This commit is contained in:
1 parent
b85c564161
commit
fba6a90696
1 file changed
+18
@@ -35,9 +35,25 @@ typedef struct zfs_dbgmsg {
|
||||
|
||||
static list_t zfs_dbgmsgs;
|
||||
static kmutex_t zfs_dbgmsgs_lock;
|
||||
static uint_t zfs_dbgmsg_size = 0;
|
||||
static uint_t zfs_dbgmsg_maxsize = 4<<20; /* 4MB */
|
||||
|
||||
int zfs_dbgmsg_enable = B_TRUE;
|
||||
|
||||
static void
|
||||
zfs_dbgmsg_purge(uint_t max_size)
|
||||
{
|
||||
while (zfs_dbgmsg_size > max_size) {
|
||||
zfs_dbgmsg_t *zdm = list_remove_head(&zfs_dbgmsgs);
|
||||
if (zdm == NULL)
|
||||
return;
|
||||
|
||||
uint_t size = zdm->zdm_size;
|
||||
kmem_free(zdm, size);
|
||||
zfs_dbgmsg_size -= size;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
zfs_dbgmsg_init(void)
|
||||
{
|
||||
@@ -74,6 +90,8 @@ __zfs_dbgmsg(char *buf)
|
||||
|
||||
mutex_enter(&zfs_dbgmsgs_lock);
|
||||
list_insert_tail(&zfs_dbgmsgs, zdm);
|
||||
zfs_dbgmsg_size += size;
|
||||
zfs_dbgmsg_purge(zfs_dbgmsg_maxsize);
|
||||
mutex_exit(&zfs_dbgmsgs_lock);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user