mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-10-28 19:34:43 +01: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 <[email protected]> Reviewed-by: George Wilson <[email protected]> Signed-off-by: Alan Somers <[email protected]> Closes #16178 Fixes #16172
This commit is contained in:
1 parent
f625d038d2
commit
eced2e2f1e
1 file changed
+4
-1
@@ -1098,7 +1098,10 @@ zfs_dispatch_mount(libzfs_handle_t *hdl, zfs_handle_t **handles,
|
||||
mnt_param->mnt_func = func;
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in new issue
Block a user