equal
deleted
inserted
replaced
19 * CDDL HEADER END |
19 * CDDL HEADER END |
20 */ |
20 */ |
21 |
21 |
22 /* |
22 /* |
23 * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. |
23 * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. |
|
24 * Copyright (c) 2012 by Delphix. All rights reserved. |
24 */ |
25 */ |
25 |
26 |
26 #include <sys/zfs_context.h> |
27 #include <sys/zfs_context.h> |
27 #include <sys/spa.h> |
28 #include <sys/spa.h> |
28 #include <sys/spa_impl.h> |
29 #include <sys/spa_impl.h> |
1059 return; |
1060 return; |
1060 |
1061 |
1061 ASSERT(spa->spa_uberblock.ub_version >= SPA_VERSION_DEDUP); |
1062 ASSERT(spa->spa_uberblock.ub_version >= SPA_VERSION_DEDUP); |
1062 |
1063 |
1063 if (spa->spa_ddt_stat_object == 0) { |
1064 if (spa->spa_ddt_stat_object == 0) { |
1064 spa->spa_ddt_stat_object = zap_create(ddt->ddt_os, |
1065 spa->spa_ddt_stat_object = zap_create_link(ddt->ddt_os, |
1065 DMU_OT_DDT_STATS, DMU_OT_NONE, 0, tx); |
1066 DMU_OT_DDT_STATS, DMU_POOL_DIRECTORY_OBJECT, |
1066 VERIFY(zap_add(ddt->ddt_os, DMU_POOL_DIRECTORY_OBJECT, |
1067 DMU_POOL_DDT_STATS, tx); |
1067 DMU_POOL_DDT_STATS, sizeof (uint64_t), 1, |
|
1068 &spa->spa_ddt_stat_object, tx) == 0); |
|
1069 } |
1068 } |
1070 |
1069 |
1071 while ((dde = avl_destroy_nodes(&ddt->ddt_tree, &cookie)) != NULL) { |
1070 while ((dde = avl_destroy_nodes(&ddt->ddt_tree, &cookie)) != NULL) { |
1072 ddt_sync_entry(ddt, dde, tx, txg); |
1071 ddt_sync_entry(ddt, dde, tx, txg); |
1073 ddt_free(dde); |
1072 ddt_free(dde); |