Changeset 5b320ac in mainline for uspace/lib/device/src


Ignore:
Timestamp:
2024-11-22T18:38:49Z (14 months ago)
Author:
Miroslav Cimerman <mc@…>
Children:
d0f0744
Parents:
06f2762
Message:

hr: hotspares + RAID1 rebuild

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/device/src/hr.c

    r06f2762 r5b320ac  
    166166                        printf("          %s    %zu       %s\n", hr_get_ext_status_msg(ext->status), i, devname);
    167167        }
     168
     169        if (vol_info->hotspare_no == 0)
     170                return EOK;
     171
     172        printf("hotspares: [status] [index] [devname]\n");
     173        for (i = 0; i < vol_info->hotspare_no; i++) {
     174                ext = &vol_info->hotspares[i];
     175                if (ext->status == HR_EXT_MISSING) {
     176                        devname = (char *) "MISSING-devname";
     177                } else {
     178                        rc = loc_service_get_name(ext->svc_id, &devname);
     179                        if (rc != EOK)
     180                                return rc;
     181                }
     182                printf("            %s   %zu     %s\n",
     183                    hr_get_ext_status_msg(ext->status), i, devname);
     184        }
     185
    168186        return EOK;
    169187}
     
    194212        if (rc != EOK)
    195213                goto error;
     214error:
     215        hr_sess_destroy(hr);
     216        return rc;
     217}
     218
     219errno_t hr_add_hotspare(service_id_t vol_svc_id, service_id_t hs_svc_id)
     220{
     221        hr_t *hr;
     222        errno_t rc;
     223        async_exch_t *exch;
     224
     225        rc = hr_sess_init(&hr);
     226        if (rc != EOK)
     227                return rc;
     228
     229        exch = async_exchange_begin(hr->sess);
     230        if (exch == NULL) {
     231                rc = EINVAL;
     232                goto error;
     233        }
     234
     235        rc = async_req_2_0(exch, HR_ADD_HOTSPARE, vol_svc_id, hs_svc_id);
     236        async_exchange_end(exch);
    196237error:
    197238        hr_sess_destroy(hr);
     
    277318        case HR_VOL_DEGRADED:
    278319                return "DEGRADED";
     320        case HR_VOL_REBUILD:
     321                return "REBUILD";
    279322        default:
    280323                return "UNKNOWN";
     
    291334        case HR_EXT_FAILED:
    292335                return "FAILED";
     336        case HR_EXT_REBUILD:
     337                return "REBUILD";
     338        case HR_EXT_HOTSPARE:
     339                return "HOTSPARE";
    293340        default:
    294341                return "UNKNOWN";
Note: See TracChangeset for help on using the changeset viewer.