Changeset e0695ce in mainline for uspace/srv/bd/hr/metadata/native.c
- Timestamp:
- 2025-06-23T16:50:43Z (9 months ago)
- Children:
- 6a8c1569
- Parents:
- f18e36e
- git-author:
- Miroslav Cimerman <mc@…> (2025-06-23 16:47:52)
- git-committer:
- Miroslav Cimerman <mc@…> (2025-06-23 16:50:43)
- File:
-
- 1 edited
-
uspace/srv/bd/hr/metadata/native.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/hr/metadata/native.c
rf18e36e re0695ce 171 171 iter->fini = false; 172 172 173 if (iter_meta->counter == max_counter_val) 174 vol->extents[iter_meta->index].state = HR_EXT_ONLINE; 175 else 176 vol->extents[iter_meta->index].state = HR_EXT_INVALID; 173 hr_ext_state_t final_ext_state = HR_EXT_INVALID; 174 if (iter_meta->counter == max_counter_val) { 175 if (iter_meta->rebuild_pos > 0) { 176 final_ext_state = HR_EXT_REBUILD; 177 vol->rebuild_blk = iter_meta->rebuild_pos; 178 printf("REBUILD SHOULD RESUME at %lu\n", 179 vol->rebuild_blk); 180 } else { 181 final_ext_state = HR_EXT_ONLINE; 182 } 183 } 184 185 vol->extents[iter_meta->index].state = final_ext_state; 177 186 } 178 187 … … 206 215 scratch_md.data_offset = host2uint64_t_le(metadata->data_offset); 207 216 scratch_md.counter = host2uint64_t_le(metadata->counter); 217 scratch_md.rebuild_pos = host2uint64_t_le(metadata->rebuild_pos); 208 218 scratch_md.version = host2uint32_t_le(metadata->version); 209 219 scratch_md.extent_no = host2uint32_t_le(metadata->extent_no); … … 240 250 metadata->data_offset = uint64_t_le2host(scratch_md.data_offset); 241 251 metadata->counter = uint64_t_le2host(scratch_md.counter); 252 metadata->rebuild_pos = uint64_t_le2host(scratch_md.rebuild_pos); 242 253 metadata->version = uint32_t_le2host(scratch_md.version); 243 254 metadata->extent_no = uint32_t_le2host(scratch_md.extent_no); … … 249 260 memcpy(metadata->devname, scratch_md.devname, HR_DEVNAME_LEN); 250 261 262 if (metadata->version != 1) 263 return EINVAL; 264 251 265 return EOK; 252 266 } … … 394 408 395 409 fibril_rwlock_read_lock(&vol->states_lock); 396 397 /* TODO: special case for REBUILD */ 398 if ( ext->state != HR_EXT_ONLINE) {410 hr_ext_state_t s = ext->state; 411 412 if (s != HR_EXT_ONLINE && s != HR_EXT_REBUILD) { 399 413 fibril_rwlock_read_unlock(&vol->states_lock); 400 414 continue; … … 404 418 405 419 md->index = i; 420 if (s == HR_EXT_REBUILD) 421 md->rebuild_pos = vol->rebuild_blk; 422 else 423 md->rebuild_pos = 0; 406 424 meta_native_encode(md, md_block); 407 425 rc = meta_native_write_block(ext->svc_id, md_block);
Note:
See TracChangeset
for help on using the changeset viewer.
