mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-11-27 00:33:30 +00:00
libzfs: Fix mounting datasets under thread limit pressure
During parallel zpool import, /sbin/zpool will create a separate thread pool for each pool, used to mount that pool's datasets. If the total thread count exceed's the system's limit on threads per process, then tpool_dispatch may fail. If it does, directly execute the mount operation instead. Sponsored by: Axcient Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: George Wilson <gwilson@delphix.com> Signed-off-by: Alan Somers <asomers@FreeBSD.org> Closes #16178 Fixes #16172
This commit is contained in:
parent
f625d038d2
commit
eced2e2f1e
@ -1098,7 +1098,10 @@ zfs_dispatch_mount(libzfs_handle_t *hdl, zfs_handle_t **handles,
|
|||||||
mnt_param->mnt_func = func;
|
mnt_param->mnt_func = func;
|
||||||
mnt_param->mnt_data = data;
|
mnt_param->mnt_data = data;
|
||||||
|
|
||||||
(void) tpool_dispatch(tp, zfs_mount_task, (void*)mnt_param);
|
if (tpool_dispatch(tp, zfs_mount_task, (void*)mnt_param)) {
|
||||||
|
/* Could not dispatch to thread pool; execute directly */
|
||||||
|
zfs_mount_task((void*)mnt_param);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user