mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-27 11:29:36 +03:00
OpenZFS 9682 - page fault in dsl_async_clone_destroy() while opening pool
Authored by: Serapheim Dimitropoulos <serapheim@delphix.com> Reviewed by: Brad Lewis <brad.lewis@delphix.com> Reviewed by: Matt Ahrens <matt@delphix.com> Reviewed by: Sara Hartse <sara.hartse@delphix.com> Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov> Approved by: Robert Mustacchi <rm@joyent.com> Ported-by: George Melikov <mail@gmelikov.ru> OpenZFS-issue: https://www.illumos.org/issues/9682 OpenZFS-commit: https://github.com/openzfs/openzfs/commit/ade2c82828 Closes #8037
This commit is contained in:
parent
ee900344f2
commit
9b2266e3d8
@ -2453,10 +2453,11 @@ dump_dir(objset_t *os)
|
|||||||
dmu_objset_name(os, osname);
|
dmu_objset_name(os, osname);
|
||||||
|
|
||||||
(void) printf("Dataset %s [%s], ID %llu, cr_txg %llu, "
|
(void) printf("Dataset %s [%s], ID %llu, cr_txg %llu, "
|
||||||
"%s, %llu objects%s\n",
|
"%s, %llu objects%s%s\n",
|
||||||
osname, type, (u_longlong_t)dmu_objset_id(os),
|
osname, type, (u_longlong_t)dmu_objset_id(os),
|
||||||
(u_longlong_t)dds.dds_creation_txg,
|
(u_longlong_t)dds.dds_creation_txg,
|
||||||
numbuf, (u_longlong_t)usedobjs, blkbuf);
|
numbuf, (u_longlong_t)usedobjs, blkbuf,
|
||||||
|
(dds.dds_inconsistent) ? " (inconsistent)" : "");
|
||||||
|
|
||||||
if (zopt_objects != 0) {
|
if (zopt_objects != 0) {
|
||||||
for (i = 0; i < zopt_objects; i++)
|
for (i = 0; i < zopt_objects; i++)
|
||||||
|
@ -4226,8 +4226,17 @@ spa_load_impl(spa_t *spa, spa_import_type_t type, char **ereport)
|
|||||||
*/
|
*/
|
||||||
spa_history_log_version(spa, "open", NULL);
|
spa_history_log_version(spa, "open", NULL);
|
||||||
|
|
||||||
|
spa_restart_removal(spa);
|
||||||
|
spa_spawn_aux_threads(spa);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Delete any inconsistent datasets.
|
* Delete any inconsistent datasets.
|
||||||
|
*
|
||||||
|
* Note:
|
||||||
|
* Since we may be issuing deletes for clones here,
|
||||||
|
* we make sure to do so after we've spawned all the
|
||||||
|
* auxiliary threads above (from which the livelist
|
||||||
|
* deletion zthr is part of).
|
||||||
*/
|
*/
|
||||||
(void) dmu_objset_find(spa_name(spa),
|
(void) dmu_objset_find(spa_name(spa),
|
||||||
dsl_destroy_inconsistent, NULL, DS_FIND_CHILDREN);
|
dsl_destroy_inconsistent, NULL, DS_FIND_CHILDREN);
|
||||||
@ -4237,9 +4246,6 @@ spa_load_impl(spa_t *spa, spa_import_type_t type, char **ereport)
|
|||||||
*/
|
*/
|
||||||
dsl_pool_clean_tmp_userrefs(spa->spa_dsl_pool);
|
dsl_pool_clean_tmp_userrefs(spa->spa_dsl_pool);
|
||||||
|
|
||||||
spa_restart_removal(spa);
|
|
||||||
|
|
||||||
spa_spawn_aux_threads(spa);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
spa_load_note(spa, "LOADED");
|
spa_load_note(spa, "LOADED");
|
||||||
|
Loading…
Reference in New Issue
Block a user