Changeset 65706f1 in mainline for uspace/srv/bd/hr/raid5.c


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

hr: rename dev_no → extent_no in hr_volume_t

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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;
Note: See TracChangeset for help on using the changeset viewer.