Changeset 066fed9 in mainline
- Timestamp:
- 2024-10-28T18:10:45Z (7 months ago)
- Children:
- e47a032
- Parents:
- b422718
- Location:
- uspace/srv/bd/hr
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/hr/hr.c
rb422718 r066fed9 168 168 goto error; 169 169 170 rc = hr_ get_vol_from_meta(cfg,new_volume);170 rc = hr_fill_vol_from_meta(new_volume); 171 171 if (rc != EOK) 172 172 goto error; -
uspace/srv/bd/hr/superblock.c
rb422718 r066fed9 122 122 123 123 124 errno_t hr_ get_vol_from_meta(hr_config_t *cfg, hr_volume_t *new_volume)124 errno_t hr_fill_vol_from_meta(hr_volume_t *vol) 125 125 { 126 126 log_msg(LOG_DEFAULT, LVL_NOTE, "hr_get_vol_from_meta()"); … … 129 129 hr_metadata_t *metadata; 130 130 131 metadata = calloc(1, HR_META_SIZE * new_volume->bsize);131 metadata = calloc(1, HR_META_SIZE * vol->bsize); 132 132 if (metadata == NULL) 133 133 return ENOMEM; 134 134 135 service_id_t cfg_svc_id_order[HR_MAXDEVS] = { 0 }; 136 for (size_t i = 0; i < vol->dev_no; i++) 137 cfg_svc_id_order[i] = vol->extents[i].svc_id; 138 139 135 140 uint32_t md_order[HR_MAXDEVS] = { 0 }; 136 for (size_t i = 0; i < cfg->dev_no; i++) {137 rc = read_metadata(cfg ->devs[i], metadata);141 for (size_t i = 0; i < vol->dev_no; i++) { 142 rc = read_metadata(cfg_svc_id_order[i], metadata); 138 143 if (rc != EOK) 139 144 goto end; … … 144 149 } 145 150 146 for (size_t i = 0; i < cfg->dev_no; i++)147 for (size_t j = 0; j < cfg->dev_no; j++)151 for (size_t i = 0; i < vol->dev_no; i++) 152 for (size_t j = 0; j < vol->dev_no; j++) 148 153 if (i == md_order[j]) 149 new_volume->extents[i].svc_id = cfg->devs[j];154 vol->extents[i].svc_id = cfg_svc_id_order[j]; 150 155 151 156 /* … … 153 158 */ 154 159 155 new_volume->level = uint32_t_le2host(metadata->level); 156 new_volume->dev_no = uint32_t_le2host(metadata->extent_no); 157 new_volume->nblocks = uint64_t_le2host(metadata->nblocks); 158 new_volume->data_blkno = uint64_t_le2host(metadata->data_blkno); 159 new_volume->data_offset = uint32_t_le2host(metadata->data_offset); 160 new_volume->strip_size = uint32_t_le2host(metadata->strip_size); 161 162 if (new_volume->dev_no != cfg->dev_no) { 160 if (vol->dev_no != uint32_t_le2host(metadata->extent_no)) { 163 161 log_msg(LOG_DEFAULT, LVL_ERROR, 164 "number of divices in array differ: specified %zu, metadata states % zu",165 cfg->dev_no, new_volume->dev_no);162 "number of divices in array differ: specified %zu, metadata states %u", 163 vol->dev_no, uint32_t_le2host(metadata->extent_no)); 166 164 rc = EINVAL; 167 165 goto end; 168 166 } 169 167 170 if (str_cmp(metadata->devname, new_volume->devname) != 0) { 168 vol->level = uint32_t_le2host(metadata->level); 169 vol->nblocks = uint64_t_le2host(metadata->nblocks); 170 vol->data_blkno = uint64_t_le2host(metadata->data_blkno); 171 vol->data_offset = uint32_t_le2host(metadata->data_offset); 172 vol->strip_size = uint32_t_le2host(metadata->strip_size); 173 174 if (str_cmp(metadata->devname, vol->devname) != 0) { 171 175 log_msg(LOG_DEFAULT, LVL_NOTE, 172 176 "devname on metadata (%s) and config (%s) differ, using config", 173 metadata->devname, new_volume->devname);177 metadata->devname, vol->devname); 174 178 } 175 179 end: -
uspace/srv/bd/hr/superblock.h
rb422718 r066fed9 61 61 62 62 extern errno_t hr_write_meta_to_vol(hr_volume_t *); 63 extern errno_t hr_ get_vol_from_meta(hr_config_t *,hr_volume_t *);63 extern errno_t hr_fill_vol_from_meta(hr_volume_t *); 64 64 65 65 #endif
Note:
See TracChangeset
for help on using the changeset viewer.