MCPcopy Create free account
hub / github.com/F-Stack/f-stack / vdev_top_transfer

Function vdev_top_transfer

freebsd/contrib/openzfs/module/zfs/vdev.c:1078–1180  ·  view source on GitHub ↗

* Transfer top-level vdev state from svd to tvd. */

Source from the content-addressed store, hash-verified

1076 * Transfer top-level vdev state from svd to tvd.
1077 */
1078static void
1079vdev_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);

Callers 2

vdev_add_parentFunction · 0.85
vdev_remove_parentFunction · 0.85

Calls 10

range_tree_swapFunction · 0.85
txg_list_removeFunction · 0.85
txg_list_addFunction · 0.85
txg_list_remove_thisFunction · 0.85
vdev_config_cleanFunction · 0.85
vdev_config_dirtyFunction · 0.85
vdev_state_cleanFunction · 0.85
vdev_state_dirtyFunction · 0.85
list_link_activeFunction · 0.50

Tested by

no test coverage detected