Currently, 'zfs mount -a' will always attempt to parallelize
work related to mounting as best it can. Unfortunately, when
the user passes the '-l' option to load keys, this causes
all threads to prompt the user for their keys at once,
resulting in a confusing and racy user experience. This patch
simply disables parallel mounting when using the '-l' flag.
Reviewed by: Sebastien Roy <sebastien.roy@delphix.com>
Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tom Caputi <tcaputi@datto.com>
Closes #8762
Closes #8811
/*
* libshare isn't mt-safe, so only do the operation in parallel
- * if we're mounting.
+ * if we're mounting. Additionally, the key-loading option must
+ * be serialized so that we can prompt the user for their keys
+ * in a consistent manner.
*/
zfs_foreach_mountpoint(g_zfs, cb.cb_handles, cb.cb_used,
- share_mount_one_cb, &share_mount_state, op == OP_MOUNT);
+ share_mount_one_cb, &share_mount_state,
+ op == OP_MOUNT && !(flags & MS_CRYPT));
ret = share_mount_state.sm_status;
for (int i = 0; i < cb.cb_used; i++)