Changeset 685c0ab in mainline
- Timestamp:
- 2024-12-30T22:28:13Z (5 months ago)
- Children:
- 7d25273
- Parents:
- 7a3529a8
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/hr/superblock.c
r7a3529a8 r685c0ab 52 52 static errno_t read_metadata(service_id_t, hr_metadata_t *); 53 53 static errno_t hr_fill_meta_from_vol(hr_volume_t *, hr_metadata_t *); 54 static errno_t validate_meta(hr_metadata_t *); 54 55 55 56 errno_t hr_write_meta_to_vol(hr_volume_t *vol) … … 134 135 HR_DEBUG("hr_fill_meta_from_vol()\n"); 135 136 136 size_t meta_blkno; /* blocks needed to write metadata */ 137 138 meta_blkno = (HR_META_OFF + HR_META_SIZE); 137 size_t meta_blkno = HR_META_OFF + HR_META_SIZE; 138 139 139 if (vol->level != HR_LVL_1) 140 140 meta_blkno *= vol->extent_no; … … 189 189 return ENOMEM; 190 190 191 service_id_t cfg_svc_id_order[HR_MAX_EXTENTS] = { 0 };191 service_id_t assembly_svc_id_order[HR_MAX_EXTENTS] = { 0 }; 192 192 for (size_t i = 0; i < vol->extent_no; i++) 193 cfg_svc_id_order[i] = vol->extents[i].svc_id;194 195 int32_t md_order[HR_MAX_EXTENTS] = { 0 };193 assembly_svc_id_order[i] = vol->extents[i].svc_id; 194 195 size_t md_order_indices[HR_MAX_EXTENTS] = { 0 }; 196 196 for (size_t i = 0; i < vol->extent_no; i++) { 197 if (cfg_svc_id_order[i] == 0) { 198 md_order[i] = -1; 197 if (assembly_svc_id_order[i] == 0) { 198 /* set invalid index */ 199 md_order_indices[i] = vol->extent_no; 199 200 continue; 200 201 } 201 rc = read_metadata( cfg_svc_id_order[i], metadata);202 rc = read_metadata(assembly_svc_id_order[i], metadata); 202 203 if (rc != EOK) 203 204 goto end; … … 205 206 if (rc != EOK) 206 207 goto end; 207 md_order [i] = uint32_t_le2host(metadata->index);208 md_order_indices[i] = uint32_t_le2host(metadata->index); 208 209 } 209 210 … … 216 217 for (size_t i = 0; i < vol->extent_no; i++) { 217 218 for (size_t j = 0; j < vol->extent_no; j++) { 218 if (i == (uint32_t)md_order[j]) { 219 vol->extents[i].svc_id = cfg_svc_id_order[j]; 219 if (i == md_order_indices[j]) { 220 vol->extents[i].svc_id = 221 assembly_svc_id_order[j]; 220 222 vol->extents[i].status = HR_EXT_ONLINE; 221 223 } … … 256 258 { 257 259 errno_t rc; 258 size_t bsize;259 260 uint64_t nblocks; 260 261 261 rc = block_get_ bsize(dev, &bsize);262 rc = block_get_nblocks(dev, &nblocks); 262 263 if (rc != EOK) 263 264 return rc; 264 265 265 rc = block_get_nblocks(dev, &nblocks); 266 if (nblocks < HR_META_SIZE + HR_META_OFF) 267 return EINVAL; 268 269 rc = block_read_direct(dev, HR_META_OFF, HR_META_SIZE, metadata); 266 270 if (rc != EOK) 267 271 return rc; 268 272 269 if (nblocks < (HR_META_SIZE + HR_META_OFF) * bsize)270 return EINVAL;271 272 rc = block_read_direct(dev, HR_META_OFF, HR_META_SIZE, metadata);273 if (rc != EOK)274 return rc;275 276 273 return EOK; 277 274 }
Note:
See TracChangeset
for help on using the changeset viewer.