Changeset 37a9c1e in mainline
- Timestamp:
- 2024-12-23T11:06:35Z (5 months ago)
- Children:
- 8137d36
- Parents:
- 6784abc
- Location:
- uspace
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/device/include/hr.h
r6784abc r37a9c1e 109 109 size_t bsize; 110 110 hr_vol_status_t status; 111 uint8_t RLQ;111 uint8_t layout; 112 112 } hr_vol_info_t; 113 113 -
uspace/lib/device/src/hr.c
r6784abc r37a9c1e 134 134 if (vol_info->level == HR_LVL_4 || vol_info->level == HR_LVL_5) { 135 135 printf("layout: %s\n", 136 hr_get_layout_str(vol_info->level, vol_info-> RLQ));136 hr_get_layout_str(vol_info->level, vol_info->layout)); 137 137 } 138 138 if (vol_info->level == HR_LVL_0 || vol_info->level == HR_LVL_4) { … … 163 163 } 164 164 if (vol_info->level == HR_LVL_4) { 165 if ((i == 0 && vol_info-> RLQ== HR_RLQ_RAID4_0) ||165 if ((i == 0 && vol_info->layout == HR_RLQ_RAID4_0) || 166 166 (i == vol_info->extent_no - 1 && 167 vol_info-> RLQ== HR_RLQ_RAID4_N))167 vol_info->layout == HR_RLQ_RAID4_N)) 168 168 printf(" P %s %zu %s\n", hr_get_ext_status_msg(ext->status), i, devname); 169 169 else … … 350 350 } 351 351 352 const char *hr_get_layout_str(hr_level_t level, uint8_t RLQ)352 const char *hr_get_layout_str(hr_level_t level, uint8_t layout) 353 353 { 354 354 switch (level) { 355 355 case HR_LVL_4: 356 switch ( RLQ) {356 switch (layout) { 357 357 case HR_RLQ_RAID4_0: 358 358 return "RAID-4 Non-Rotating Parity 0"; … … 363 363 } 364 364 case HR_LVL_5: 365 switch ( RLQ) {365 switch (layout) { 366 366 case HR_RLQ_RAID5_0R: 367 367 return "RAID-5 Rotating Parity 0 with Data Restart"; -
uspace/srv/bd/hr/hr.c
r6784abc r37a9c1e 189 189 case HR_LVL_1: 190 190 if (!assemble) 191 new_volume-> RLQ= 0x00; /* XXX: yet unused */191 new_volume->layout = 0x00; /* XXX: yet unused */ 192 192 new_volume->hr_ops.create = hr_raid1_create; 193 193 new_volume->hr_ops.init = hr_raid1_init; … … 197 197 case HR_LVL_0: 198 198 if (!assemble) 199 new_volume-> RLQ= 0x00;199 new_volume->layout = 0x00; 200 200 new_volume->hr_ops.create = hr_raid0_create; 201 201 new_volume->hr_ops.init = hr_raid0_init; … … 204 204 case HR_LVL_4: 205 205 if (!assemble) 206 new_volume-> RLQ= HR_RLQ_RAID4_N;206 new_volume->layout = HR_RLQ_RAID4_N; 207 207 new_volume->hr_ops.create = hr_raid5_create; 208 208 new_volume->hr_ops.init = hr_raid5_init; … … 212 212 case HR_LVL_5: 213 213 if (!assemble) 214 new_volume-> RLQ= HR_RLQ_RAID5_NR;214 new_volume->layout = HR_RLQ_RAID5_NR; 215 215 new_volume->hr_ops.create = hr_raid5_create; 216 216 new_volume->hr_ops.init = hr_raid5_init; … … 373 373 info.bsize = vol->bsize; 374 374 info.status = vol->status; 375 info. RLQ = vol->RLQ;375 info.layout = vol->layout; 376 376 377 377 if (!async_data_read_receive(&call, &size)) { -
uspace/srv/bd/hr/raid5.c
r6784abc r37a9c1e 533 533 return rc; 534 534 535 uint8_t RLQ = vol->RLQ;535 uint8_t layout = vol->layout; 536 536 hr_level_t level = vol->level; 537 537 … … 541 541 /* parity extent */ 542 542 uint64_t p_extent; 543 if (level == HR_LVL_4 && RLQ== HR_RLQ_RAID4_0) {543 if (level == HR_LVL_4 && layout == HR_RLQ_RAID4_0) { 544 544 p_extent = 0; 545 } else if (level == HR_LVL_4 && RLQ== HR_RLQ_RAID4_N) {545 } else if (level == HR_LVL_4 && layout == HR_RLQ_RAID4_N) { 546 546 p_extent = vol->extent_no - 1; 547 } else if (level == HR_LVL_5 && RLQ== HR_RLQ_RAID5_0R) {547 } else if (level == HR_LVL_5 && layout == HR_RLQ_RAID5_0R) { 548 548 p_extent = (stripe / (vol->extent_no - 1)) % vol->extent_no; 549 549 } else if (level == HR_LVL_5 && 550 ( RLQ == HR_RLQ_RAID5_NR || RLQ== HR_RLQ_RAID5_NC)) {550 (layout == HR_RLQ_RAID5_NR || layout == HR_RLQ_RAID5_NC)) { 551 551 p_extent = (vol->extent_no - 1) - 552 552 (stripe / (vol->extent_no - 1)) % vol->extent_no; … … 556 556 557 557 uint64_t extent; 558 if (level == HR_LVL_4 && RLQ== HR_RLQ_RAID4_0) {558 if (level == HR_LVL_4 && layout == HR_RLQ_RAID4_0) { 559 559 extent = (stripe % (vol->extent_no - 1)) + 1; 560 } else if (level == HR_LVL_4 && RLQ== HR_RLQ_RAID4_N) {560 } else if (level == HR_LVL_4 && layout == HR_RLQ_RAID4_N) { 561 561 extent = stripe % (vol->extent_no - 1); 562 562 } else if (level == HR_LVL_5 && 563 ( RLQ == HR_RLQ_RAID5_0R || RLQ== HR_RLQ_RAID5_NR)) {563 (layout == HR_RLQ_RAID5_0R || layout == HR_RLQ_RAID5_NR)) { 564 564 if ((stripe % (vol->extent_no - 1)) < p_extent) 565 565 extent = stripe % (vol->extent_no - 1); 566 566 else 567 567 extent = (stripe % (vol->extent_no - 1)) + 1; 568 } else if (level == HR_LVL_5 && RLQ== HR_RLQ_RAID5_NC) {568 } else if (level == HR_LVL_5 && layout == HR_RLQ_RAID5_NC) { 569 569 extent = ((stripe % (vol->extent_no - 1)) + p_extent + 1) % vol->extent_no; 570 570 } else { … … 654 654 ext_stripe = stripe / (vol->extent_no - 1); /* stripe level */ 655 655 656 if (level == HR_LVL_5 && RLQ== HR_RLQ_RAID5_0R) {656 if (level == HR_LVL_5 && layout == HR_RLQ_RAID5_0R) { 657 657 p_extent = (stripe / (vol->extent_no - 1)) % vol->extent_no; 658 658 } else if (level == HR_LVL_5 && 659 ( RLQ == HR_RLQ_RAID5_NR || RLQ== HR_RLQ_RAID5_NC)) {659 (layout == HR_RLQ_RAID5_NR || layout == HR_RLQ_RAID5_NC)) { 660 660 p_extent = (vol->extent_no - 1) - 661 661 (stripe / (vol->extent_no - 1)) % vol->extent_no; 662 662 } 663 663 664 if (level == HR_LVL_4 && RLQ== HR_RLQ_RAID4_0) {664 if (level == HR_LVL_4 && layout == HR_RLQ_RAID4_0) { 665 665 extent = (stripe % (vol->extent_no - 1)) + 1; 666 } else if (level == HR_LVL_4 && RLQ== HR_RLQ_RAID4_N) {666 } else if (level == HR_LVL_4 && layout == HR_RLQ_RAID4_N) { 667 667 extent = stripe % (vol->extent_no - 1); 668 668 } else if (level == HR_LVL_5 && 669 ( RLQ == HR_RLQ_RAID5_0R || RLQ== HR_RLQ_RAID5_NR)) {669 (layout == HR_RLQ_RAID5_0R || layout == HR_RLQ_RAID5_NR)) { 670 670 if ((stripe % (vol->extent_no - 1)) < p_extent) 671 671 extent = stripe % (vol->extent_no - 1); 672 672 else 673 673 extent = (stripe % (vol->extent_no - 1)) + 1; 674 } else if (level == HR_LVL_5 && RLQ== HR_RLQ_RAID5_NC) {674 } else if (level == HR_LVL_5 && layout == HR_RLQ_RAID5_NC) { 675 675 extent = ((stripe % (vol->extent_no - 1)) + p_extent + 1) % vol->extent_no; 676 676 } -
uspace/srv/bd/hr/superblock.c
r6784abc r37a9c1e 157 157 /* index filled separately for each extent */ 158 158 metadata->level = host2uint32_t_le(vol->level); 159 metadata->layout = host2uint32_t_le(vol-> RLQ);159 metadata->layout = host2uint32_t_le(vol->layout); 160 160 metadata->strip_size = host2uint32_t_le(vol->strip_size); 161 161 metadata->nblocks = host2uint64_t_le(vol->nblocks); … … 237 237 /* TODO: handle version */ 238 238 vol->level = uint32_t_le2host(metadata->level); 239 vol-> RLQ= (uint8_t)uint32_t_le2host(metadata->layout);239 vol->layout = (uint8_t)uint32_t_le2host(metadata->layout); 240 240 vol->strip_size = uint32_t_le2host(metadata->strip_size); 241 241 vol->nblocks = uint64_t_le2host(metadata->nblocks); -
uspace/srv/bd/hr/var.h
r6784abc r37a9c1e 85 85 hr_vol_status_t status; 86 86 hr_level_t level; 87 uint8_t RLQ; /* RAID Level Qualifier */87 uint8_t layout; /* RAID Level Qualifier */ 88 88 char devname[HR_DEVNAME_LEN]; 89 89 } hr_volume_t;
Note:
See TracChangeset
for help on using the changeset viewer.