* Transfer top-level vdev state from svd to tvd. */
| 1076 | * Transfer top-level vdev state from svd to tvd. |
| 1077 | */ |
| 1078 | static void |
| 1079 | vdev_top_transfer(vdev_t *svd, vdev_t *tvd) |
| 1080 | { |
| 1081 | spa_t *spa = svd->vdev_spa; |
| 1082 | metaslab_t *msp; |
| 1083 | vdev_t *vd; |
| 1084 | int t; |
| 1085 | |
| 1086 | ASSERT(tvd == tvd->vdev_top); |
| 1087 | |
| 1088 | tvd->vdev_pending_fastwrite = svd->vdev_pending_fastwrite; |
| 1089 | tvd->vdev_ms_array = svd->vdev_ms_array; |
| 1090 | tvd->vdev_ms_shift = svd->vdev_ms_shift; |
| 1091 | tvd->vdev_ms_count = svd->vdev_ms_count; |
| 1092 | tvd->vdev_top_zap = svd->vdev_top_zap; |
| 1093 | |
| 1094 | svd->vdev_ms_array = 0; |
| 1095 | svd->vdev_ms_shift = 0; |
| 1096 | svd->vdev_ms_count = 0; |
| 1097 | svd->vdev_top_zap = 0; |
| 1098 | |
| 1099 | if (tvd->vdev_mg) |
| 1100 | ASSERT3P(tvd->vdev_mg, ==, svd->vdev_mg); |
| 1101 | tvd->vdev_mg = svd->vdev_mg; |
| 1102 | tvd->vdev_ms = svd->vdev_ms; |
| 1103 | |
| 1104 | svd->vdev_mg = NULL; |
| 1105 | svd->vdev_ms = NULL; |
| 1106 | |
| 1107 | if (tvd->vdev_mg != NULL) |
| 1108 | tvd->vdev_mg->mg_vd = tvd; |
| 1109 | |
| 1110 | tvd->vdev_checkpoint_sm = svd->vdev_checkpoint_sm; |
| 1111 | svd->vdev_checkpoint_sm = NULL; |
| 1112 | |
| 1113 | tvd->vdev_alloc_bias = svd->vdev_alloc_bias; |
| 1114 | svd->vdev_alloc_bias = VDEV_BIAS_NONE; |
| 1115 | |
| 1116 | tvd->vdev_stat.vs_alloc = svd->vdev_stat.vs_alloc; |
| 1117 | tvd->vdev_stat.vs_space = svd->vdev_stat.vs_space; |
| 1118 | tvd->vdev_stat.vs_dspace = svd->vdev_stat.vs_dspace; |
| 1119 | |
| 1120 | svd->vdev_stat.vs_alloc = 0; |
| 1121 | svd->vdev_stat.vs_space = 0; |
| 1122 | svd->vdev_stat.vs_dspace = 0; |
| 1123 | |
| 1124 | /* |
| 1125 | * State which may be set on a top-level vdev that's in the |
| 1126 | * process of being removed. |
| 1127 | */ |
| 1128 | ASSERT0(tvd->vdev_indirect_config.vic_births_object); |
| 1129 | ASSERT0(tvd->vdev_indirect_config.vic_mapping_object); |
| 1130 | ASSERT3U(tvd->vdev_indirect_config.vic_prev_indirect_vdev, ==, -1ULL); |
| 1131 | ASSERT3P(tvd->vdev_indirect_mapping, ==, NULL); |
| 1132 | ASSERT3P(tvd->vdev_indirect_births, ==, NULL); |
| 1133 | ASSERT3P(tvd->vdev_obsolete_sm, ==, NULL); |
| 1134 | ASSERT0(tvd->vdev_removing); |
| 1135 | ASSERT0(tvd->vdev_rebuilding); |
no test coverage detected