Changeset 65706f1 in mainline


Ignore:
Timestamp:
2024-11-27T14:06:41Z (7 months ago)
Author:
Miroslav Cimerman <mc@…>
Children:
a0c3080
Parents:
40bf2c6
Message:

hr: rename dev_no → extent_no in hr_volume_t

Location:
uspace/srv/bd/hr
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/bd/hr/hr.c

    r40bf2c6 r65706f1  
    159159                new_volume->extents[i].svc_id = cfg->devs[i];
    160160        new_volume->level = cfg->level;
    161         new_volume->dev_no = cfg->dev_no;
     161        new_volume->extent_no = cfg->dev_no;
    162162
    163163        if (assemble) {
     
    354354                    sizeof(hr_extent_t) * HR_MAX_HOTSPARES);
    355355                info.svc_id = vol->svc_id;
    356                 info.extent_no = vol->dev_no;
     356                info.extent_no = vol->extent_no;
    357357                info.hotspare_no = vol->hotspare_no;
    358358                info.level = vol->level;
  • uspace/srv/bd/hr/raid0.c

    r40bf2c6 r65706f1  
    8686        assert(new_volume->level == HR_LVL_0);
    8787
    88         if (new_volume->dev_no < 2) {
     88        if (new_volume->extent_no < 2) {
    8989                HR_ERROR("RAID 0 array needs at least 2 devices\n");
    9090                return EINVAL;
     
    119119        vol->bsize = bsize;
    120120        vol->data_offset = HR_DATA_OFF;
    121         vol->data_blkno = vol->nblocks - (vol->data_offset * vol->dev_no);
     121        vol->data_blkno = vol->nblocks - (vol->data_offset * vol->extent_no);
    122122        vol->strip_size = HR_STRIP_SIZE;
    123123
     
    190190static errno_t hr_raid0_update_vol_status(hr_volume_t *vol)
    191191{
    192         for (size_t i = 0; i < vol->dev_no; i++) {
     192        for (size_t i = 0; i < vol->extent_no; i++) {
    193193                if (vol->extents[i].status != HR_EXT_ONLINE) {
    194194                        HR_WARN("RAID 0 needs all extents to be ONLINE, "
     
    231231        uint64_t strip_size = vol->strip_size / vol->bsize; /* in blocks */
    232232        uint64_t stripe = ba / strip_size; /* stripe number */
    233         uint64_t extent = stripe % vol->dev_no;
    234         uint64_t ext_stripe = stripe / vol->dev_no; /* stripe level */
     233        uint64_t extent = stripe % vol->extent_no;
     234        uint64_t ext_stripe = stripe / vol->extent_no; /* stripe level */
    235235        uint64_t strip_off = ba % strip_size; /* strip offset */
    236236
     
    284284                strip_off = 0;
    285285                extent++;
    286                 if (extent >= vol->dev_no) {
     286                if (extent >= vol->extent_no) {
    287287                        ext_stripe++;
    288288                        extent = 0;
  • uspace/srv/bd/hr/raid1.c

    r40bf2c6 r65706f1  
    8787        assert(new_volume->level == HR_LVL_1);
    8888
    89         if (new_volume->dev_no < 2) {
     89        if (new_volume->extent_no < 2) {
    9090                HR_ERROR("RAID 1 array needs at least 2 devices\n");
    9191                return EINVAL;
     
    117117                return rc;
    118118
    119         vol->nblocks = total_blkno / vol->dev_no;
     119        vol->nblocks = total_blkno / vol->extent_no;
    120120        vol->bsize = bsize;
    121121        vol->data_offset = HR_DATA_OFF;
     
    239239                }
    240240                return EINVAL;
    241         } else if (healthy < vol->dev_no) {
     241        } else if (healthy < vol->extent_no) {
    242242                if (old_state != HR_VOL_DEGRADED &&
    243243                    old_state != HR_VOL_REBUILD) {
     
    305305        switch (type) {
    306306        case HR_BD_SYNC:
    307                 for (i = 0; i < vol->dev_no; i++) {
     307                for (i = 0; i < vol->extent_no; i++) {
    308308                        if (vol->extents[i].status != HR_EXT_ONLINE)
    309309                                continue;
     
    316316                break;
    317317        case HR_BD_READ:
    318                 for (i = 0; i < vol->dev_no; i++) {
     318                for (i = 0; i < vol->extent_no; i++) {
    319319                        if (vol->extents[i].status != HR_EXT_ONLINE)
    320320                                continue;
     
    330330                break;
    331331        case HR_BD_WRITE:
    332                 for (i = 0; i < vol->dev_no; i++) {
     332                for (i = 0; i < vol->extent_no; i++) {
    333333                        if (vol->extents[i].status != HR_EXT_ONLINE ||
    334334                            (vol->extents[i].status == HR_EXT_REBUILD &&
     
    385385        }
    386386
    387         size_t bad = vol->dev_no;
    388         for (size_t i = 0; i < vol->dev_no; i++) {
     387        size_t bad = vol->extent_no;
     388        for (size_t i = 0; i < vol->extent_no; i++) {
    389389                if (vol->extents[i].status == HR_EXT_FAILED) {
    390390                        bad = i;
     
    393393        }
    394394
    395         if (bad == vol->dev_no) {
     395        if (bad == vol->extent_no) {
    396396                HR_WARN("hr_raid1_rebuild(): no bad extent on \"%s\", "
    397397                    "aborting rebuild\n", vol->devname);
     
    441441                vol->rebuild_blk = ba;
    442442                cnt = min(max_blks, left);
    443                 for (size_t i = 0; i < vol->dev_no; i++) {
     443                for (size_t i = 0; i < vol->extent_no; i++) {
    444444                        ext = &vol->extents[i];
    445445                        if (ext->status == HR_EXT_ONLINE) {
     
    448448                                if (rc != EOK) {
    449449                                        hr_raid1_handle_extent_error(vol, i, rc);
    450                                         if (i + 1 < vol->dev_no) {
     450                                        if (i + 1 < vol->extent_no) {
    451451                                                /* still might have one ONLINE */
    452452                                                continue;
  • uspace/srv/bd/hr/raid4.c

    r40bf2c6 r65706f1  
    100100        assert(new_volume->level == HR_LVL_4);
    101101
    102         if (new_volume->dev_no < 3) {
     102        if (new_volume->extent_no < 3) {
    103103                HR_ERROR("RAID 4 array needs at least 3 devices\n");
    104104                return EINVAL;
     
    133133        vol->bsize = bsize;
    134134        vol->data_offset = HR_DATA_OFF;
    135         vol->data_blkno = vol->nblocks - (vol->data_offset * vol->dev_no) -
    136             (vol->nblocks / vol->dev_no);
     135        vol->data_blkno = vol->nblocks - (vol->data_offset * vol->extent_no) -
     136            (vol->nblocks / vol->extent_no);
    137137        vol->strip_size = HR_STRIP_SIZE;
    138138
     
    242242static ssize_t hr_raid4_get_bad_ext(hr_volume_t *vol)
    243243{
    244         for (size_t i = 0; i < vol->dev_no; i++)
     244        for (size_t i = 0; i < vol->extent_no; i++)
    245245                if (vol->extents[i].status != HR_EXT_ONLINE)
    246246                        return i;
     
    252252        hr_vol_status_t old_state = vol->status;
    253253        size_t bad = 0;
    254         for (size_t i = 0; i < vol->dev_no; i++)
     254        for (size_t i = 0; i < vol->extent_no; i++)
    255255                if (vol->extents[i].status != HR_EXT_ONLINE)
    256256                        bad++;
     
    334334        /* read all other extents in the stripe */
    335335        bool first = true;
    336         for (i = 0; i < vol->dev_no; i++) {
     336        for (i = 0; i < vol->extent_no; i++) {
    337337                if (i == bad)
    338338                        continue;
     
    404404                 */
    405405                bool first = true;
    406                 for (i = 1; i < vol->dev_no; i++) {
     406                for (i = 1; i < vol->extent_no; i++) {
    407407                        if (i == (size_t)bad)
    408408                                continue;
     
    487487         */
    488488        bool first = true;
    489         for (i = 1; i < vol->dev_no; i++) {
     489        for (i = 1; i < vol->extent_no; i++) {
    490490                if (first) {
    491491                        if (i == extent) {
     
    547547        uint64_t strip_size = vol->strip_size / vol->bsize; /* in blocks */
    548548        uint64_t stripe = (ba / strip_size); /* stripe number */
    549         uint64_t extent = (stripe % (vol->dev_no - 1)) + 1;
    550         uint64_t ext_stripe = stripe / (vol->dev_no - 1); /* stripe level */
     549        uint64_t extent = (stripe % (vol->extent_no - 1)) + 1;
     550        uint64_t ext_stripe = stripe / (vol->extent_no - 1); /* stripe level */
    551551        uint64_t strip_off = ba % strip_size; /* strip offset */
    552552
     
    626626                strip_off = 0;
    627627                extent++;
    628                 if (extent >= vol->dev_no) {
     628                if (extent >= vol->extent_no) {
    629629                        ext_stripe++;
    630630                        extent = 1;
     
    655655        }
    656656
    657         size_t bad = vol->dev_no;
    658         for (size_t i = 0; i < vol->dev_no; i++) {
     657        size_t bad = vol->extent_no;
     658        for (size_t i = 0; i < vol->extent_no; i++) {
    659659                if (vol->extents[i].status == HR_EXT_FAILED) {
    660660                        bad = i;
     
    663663        }
    664664
    665         if (bad == vol->dev_no) {
     665        if (bad == vol->extent_no) {
    666666                HR_WARN("hr_raid4_rebuild(): no bad extent on \"%s\", "
    667667                    "aborting rebuild\n", vol->devname);
     
    699699
    700700        uint64_t max_blks = DATA_XFER_LIMIT / vol->bsize;
    701         uint64_t left = vol->data_blkno / (vol->dev_no - 1);
     701        uint64_t left = vol->data_blkno / (vol->extent_no - 1);
    702702        buf = malloc(max_blks * vol->bsize);
    703703        xorbuf = malloc(max_blks * vol->bsize);
     
    714714                 */
    715715                bool first = true;
    716                 for (size_t i = 0; i < vol->dev_no; i++) {
     716                for (size_t i = 0; i < vol->extent_no; i++) {
    717717                        if (i == bad)
    718718                                continue;
  • uspace/srv/bd/hr/raid5.c

    r40bf2c6 r65706f1  
    9797        assert(new_volume->level == HR_LVL_5);
    9898
    99         if (new_volume->dev_no < 3) {
     99        if (new_volume->extent_no < 3) {
    100100                HR_ERROR("RAID 5 array needs at least 3 devices\n");
    101101                return EINVAL;
     
    130130        vol->bsize = bsize;
    131131        vol->data_offset = HR_DATA_OFF;
    132         vol->data_blkno = vol->nblocks - (vol->data_offset * vol->dev_no) -
    133             (vol->nblocks / vol->dev_no);
     132        vol->data_blkno = vol->nblocks - (vol->data_offset * vol->extent_no) -
     133            (vol->nblocks / vol->extent_no);
    134134        vol->strip_size = HR_STRIP_SIZE;
    135135
     
    239239static ssize_t hr_raid5_get_bad_ext(hr_volume_t *vol)
    240240{
    241         for (size_t i = 0; i < vol->dev_no; i++)
     241        for (size_t i = 0; i < vol->extent_no; i++)
    242242                if (vol->extents[i].status != HR_EXT_ONLINE)
    243243                        return i;
     
    249249        hr_vol_status_t old_state = vol->status;
    250250        size_t bad = 0;
    251         for (size_t i = 0; i < vol->dev_no; i++)
     251        for (size_t i = 0; i < vol->extent_no; i++)
    252252                if (vol->extents[i].status != HR_EXT_ONLINE)
    253253                        bad++;
     
    331331        /* read all other extents in the stripe */
    332332        bool first = true;
    333         for (i = 0; i < vol->dev_no; i++) {
     333        for (i = 0; i < vol->extent_no; i++) {
    334334                if (i == bad)
    335335                        continue;
     
    401401                 */
    402402                bool first = true;
    403                 for (i = 1; i < vol->dev_no; i++) {
     403                for (i = 1; i < vol->extent_no; i++) {
    404404                        if (i == (size_t)bad)
    405405                                continue;
     
    478478
    479479        bool first = true;
    480         for (i = 0; i < vol->dev_no; i++) {
     480        for (i = 0; i < vol->extent_no; i++) {
    481481                if (i == p_extent)
    482482                        continue;
     
    542542        uint64_t strip_size = vol->strip_size / vol->bsize; /* in blocks */
    543543        uint64_t stripe = (ba / strip_size); /* stripe number */
    544         uint64_t p_extent = (stripe / (vol->dev_no - 1)) % vol->dev_no; /* parity extent */
     544        uint64_t p_extent = (stripe / (vol->extent_no - 1)) % vol->extent_no; /* parity extent */
    545545        uint64_t extent;
    546         if ((stripe % (vol->dev_no - 1)) < p_extent)
    547                 extent = (stripe % (vol->dev_no - 1));
     546        if ((stripe % (vol->extent_no - 1)) < p_extent)
     547                extent = (stripe % (vol->extent_no - 1));
    548548        else
    549                 extent = ((stripe % (vol->dev_no - 1)) + 1);
    550         uint64_t ext_stripe = stripe / (vol->dev_no - 1); /* stripe level */
     549                extent = ((stripe % (vol->extent_no - 1)) + 1);
     550        uint64_t ext_stripe = stripe / (vol->extent_no - 1); /* stripe level */
    551551        uint64_t strip_off = ba % strip_size; /* strip offset */
    552552
     
    625625                left -= cnt;
    626626                strip_off = 0;
    627                 if (extent + 1 >= vol->dev_no ||
    628                     (extent + 1 == p_extent && p_extent + 1 >= vol->dev_no))
     627                if (extent + 1 >= vol->extent_no ||
     628                    (extent + 1 == p_extent && p_extent + 1 >= vol->extent_no))
    629629                        ext_stripe++;
    630630                stripe++;
    631                 p_extent = (stripe / (vol->dev_no - 1)) % vol->dev_no; /* parity extent */
    632                 if ((stripe % (vol->dev_no - 1)) < p_extent)
    633                         extent = (stripe % (vol->dev_no - 1));
     631                p_extent = (stripe / (vol->extent_no - 1)) % vol->extent_no; /* parity extent */
     632                if ((stripe % (vol->extent_no - 1)) < p_extent)
     633                        extent = (stripe % (vol->extent_no - 1));
    634634                else
    635                         extent = ((stripe % (vol->dev_no - 1)) + 1);
     635                        extent = ((stripe % (vol->extent_no - 1)) + 1);
    636636        }
    637637
     
    659659        }
    660660
    661         size_t bad = vol->dev_no;
    662         for (size_t i = 0; i < vol->dev_no; i++) {
     661        size_t bad = vol->extent_no;
     662        for (size_t i = 0; i < vol->extent_no; i++) {
    663663                if (vol->extents[i].status == HR_EXT_FAILED) {
    664664                        bad = i;
     
    667667        }
    668668
    669         if (bad == vol->dev_no) {
     669        if (bad == vol->extent_no) {
    670670                HR_WARN("hr_raid5_rebuild(): no bad extent on \"%s\", "
    671671                    "aborting rebuild\n", vol->devname);
     
    703703
    704704        uint64_t max_blks = DATA_XFER_LIMIT / vol->bsize;
    705         uint64_t left = vol->data_blkno / (vol->dev_no - 1);
     705        uint64_t left = vol->data_blkno / (vol->extent_no - 1);
    706706        buf = malloc(max_blks * vol->bsize);
    707707        xorbuf = malloc(max_blks * vol->bsize);
     
    718718                 */
    719719                bool first = true;
    720                 for (size_t i = 0; i < vol->dev_no; i++) {
     720                for (size_t i = 0; i < vol->extent_no; i++) {
    721721                        if (i == bad)
    722722                                continue;
  • uspace/srv/bd/hr/superblock.c

    r40bf2c6 r65706f1  
    7070                goto error;
    7171
    72         for (i = 0; i < vol->dev_no; i++) {
     72        for (i = 0; i < vol->extent_no; i++) {
    7373                metadata->index = host2uint32_t_le(i);
    7474
     
    138138        meta_blkno = (HR_META_OFF + HR_META_SIZE);
    139139        if (vol->level != HR_LVL_1)
    140                 meta_blkno *= vol->dev_no;
     140                meta_blkno *= vol->extent_no;
    141141
    142142        if (vol->nblocks < meta_blkno) {
     
    153153
    154154        metadata->magic = host2uint64_t_le(HR_MAGIC);
    155         metadata->extent_no = host2uint32_t_le(vol->dev_no);
     155        metadata->extent_no = host2uint32_t_le(vol->extent_no);
    156156        metadata->level = host2uint32_t_le(vol->level);
    157157        metadata->nblocks = host2uint64_t_le(vol->nblocks);
     
    186186
    187187        service_id_t cfg_svc_id_order[HR_MAX_EXTENTS] = { 0 };
    188         for (size_t i = 0; i < vol->dev_no; i++)
     188        for (size_t i = 0; i < vol->extent_no; i++)
    189189                cfg_svc_id_order[i] = vol->extents[i].svc_id;
    190190
    191191        int32_t md_order[HR_MAX_EXTENTS] = { 0 };
    192         for (size_t i = 0; i < vol->dev_no; i++) {
     192        for (size_t i = 0; i < vol->extent_no; i++) {
    193193                if (cfg_svc_id_order[i] == 0) {
    194194                        md_order[i] = -1;
     
    204204        }
    205205
    206         for (size_t i = 0; i < vol->dev_no; i++) {
     206        for (size_t i = 0; i < vol->extent_no; i++) {
    207207                vol->extents[i].svc_id = 0;
    208208                vol->extents[i].status = HR_EXT_MISSING;
     
    210210
    211211        /* sort */
    212         for (size_t i = 0; i < vol->dev_no; i++) {
    213                 for (size_t j = 0; j < vol->dev_no; j++) {
     212        for (size_t i = 0; i < vol->extent_no; i++) {
     213                for (size_t j = 0; j < vol->extent_no; j++) {
    214214                        if (i == (uint32_t)md_order[j]) {
    215215                                vol->extents[i].svc_id = cfg_svc_id_order[j];
     
    223223         */
    224224
    225         if (vol->dev_no != uint32_t_le2host(metadata->extent_no)) {
     225        if (vol->extent_no != uint32_t_le2host(metadata->extent_no)) {
    226226                HR_ERROR("number of divices in array differ: specified %zu, "
    227227                    "metadata states %u",
    228                     vol->dev_no, uint32_t_le2host(metadata->extent_no));
     228                    vol->extent_no, uint32_t_le2host(metadata->extent_no));
    229229                rc = EINVAL;
    230230                goto end;
  • uspace/srv/bd/hr/util.c

    r40bf2c6 r65706f1  
    5656        hr_extent_t *extent;
    5757
    58         for (i = 0; i < vol->dev_no; i++) {
     58        for (i = 0; i < vol->extent_no; i++) {
    5959                extent = &vol->extents[i];
    6060                if (extent->svc_id == 0) {
     
    8484        size_t i;
    8585
    86         for (i = 0; i < vol->dev_no; i++) {
     86        for (i = 0; i < vol->extent_no; i++) {
    8787                if (vol->extents[i].status != HR_EXT_MISSING) {
    8888                        HR_DEBUG("hr_fini_devs(): block_fini() on (%lu)\n",
     
    146146        hr_extent_t *extent;
    147147
    148         for (i = 0; i < vol->dev_no; i++) {
     148        for (i = 0; i < vol->extent_no; i++) {
    149149                extent = &vol->extents[i];
    150150                if (extent->status == HR_EXT_MISSING)
     
    163163        }
    164164
    165         for (i = 0; i < vol->dev_no; i++) {
     165        for (i = 0; i < vol->extent_no; i++) {
    166166                extent = &vol->extents[i];
    167167                if (extent->status == HR_EXT_MISSING)
     
    223223
    224224        fibril_mutex_lock(&vol->lock);
    225         for (size_t i = 0; i < vol->dev_no; i++) {
     225        for (size_t i = 0; i < vol->extent_no; i++) {
    226226                if (vol->extents[i].status != HR_EXT_ONLINE)
    227227                        continue;
     
    240240{
    241241        size_t count = 0;
    242         for (size_t i = 0; i < vol->dev_no; i++) {
     242        for (size_t i = 0; i < vol->extent_no; i++) {
    243243                if (vol->extents[i].status == status)
    244244                        count++;
  • uspace/srv/bd/hr/var.h

    r40bf2c6 r65706f1  
    6161        fibril_mutex_t lock;
    6262
    63         size_t dev_no;
     63        size_t extent_no;
    6464        hr_extent_t extents[HR_MAX_EXTENTS];
    6565
Note: See TracChangeset for help on using the changeset viewer.