Changeset dcdb990 in mainline
- Timestamp:
- 2025-06-30T17:14:01Z (3 weeks ago)
- Children:
- 996d31ac
- Parents:
- d04a350
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/hr/metadata/foreign/md/hr_md.c
rd04a350 rdcdb990 194 194 return ENOMEM; 195 195 196 bool rebuild_set = false; 196 197 size_t i = 0; 197 198 list_foreach(*list, link, struct dev_list_member, iter) { … … 208 209 209 210 bool invalidate = false; 211 bool rebuild_this_ext = false; 210 212 211 213 if (iter_meta->events != max_events) 212 214 invalidate = true; 213 215 214 if (iter_meta->feature_map & MD_DISK_SYNC) 215 invalidate = true; 216 217 if (!invalidate) 216 if (iter_meta->feature_map & MD_DISK_SYNC && !invalidate) { 217 if (rebuild_set) { 218 HR_DEBUG("only 1 rebuilt extent allowed"); 219 rc = EINVAL; 220 goto error; 221 } 222 rebuild_set = true; 223 rebuild_this_ext = true; 224 vol->rebuild_blk = iter_meta->resync_offset; 225 } 226 227 if (!rebuild_this_ext && !invalidate) 218 228 vol->extents[index].state = HR_EXT_ONLINE; 229 else if (rebuild_this_ext && !invalidate) 230 vol->extents[index].state = HR_EXT_REBUILD; 219 231 else 220 232 vol->extents[index].state = HR_EXT_INVALID; … … 230 242 } 231 243 244 error: 232 245 return rc; 233 246 } … … 506 519 507 520 md->feature_map = uint32_t_le2host(md->feature_map); 508 /* XXX: do not even support MD_DISK_SYNC here */ 509 if (md->feature_map != 0x0) { 521 if (md->feature_map != 0x0 && md->feature_map != MD_DISK_SYNC) { 510 522 HR_DEBUG("unsupported feature map bits\n"); 511 523 rc = EINVAL;
Note:
See TracChangeset
for help on using the changeset viewer.