usr/src/uts/common/fs/zfs/ddt.c
changeset 13700 2889e2596bd6
parent 12671 2fee57289adb
child 13980 d7059eb1884c
equal deleted inserted replaced
13699:733714f4dc24 13700:2889e2596bd6
    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);