Changeset b127da2f in mainline


Ignore:
Timestamp:
2025-07-11T19:48:47Z (2 weeks ago)
Author:
Miroslav Cimerman <mc@…>
Children:
ca212a51
Parents:
9c3369b
Message:

hr: careful assembly

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

Legend:

Unmodified
Added
Removed
  • uspace/srv/bd/hr/metadata/foreign/geom/hr_g_mirror.c

    r9c3369b rb127da2f  
    189189
    190190                vol->extents[index].svc_id = iter->svc_id;
    191                 iter->fini = false;
    192191
    193192                bool invalidate = false;
  • uspace/srv/bd/hr/metadata/foreign/geom/hr_g_stripe.c

    r9c3369b rb127da2f  
    189189
    190190                vol->extents[index].svc_id = iter->svc_id;
    191                 iter->fini = false;
    192191
    193192                vol->extents[index].state = HR_EXT_ONLINE;
  • uspace/srv/bd/hr/metadata/foreign/md/hr_md.c

    r9c3369b rb127da2f  
    206206
    207207                vol->extents[index].svc_id = iter->svc_id;
    208                 iter->fini = false;
    209208
    210209                bool invalidate = false;
  • uspace/srv/bd/hr/metadata/foreign/softraid/hr_softraid.c

    r9c3369b rb127da2f  
    189189
    190190                vol->extents[index].svc_id = iter->svc_id;
    191                 iter->fini = false;
    192191
    193192                struct sr_meta_chunk *mc =
  • uspace/srv/bd/hr/metadata/native.c

    r9c3369b rb127da2f  
    204204
    205205                vol->extents[iter_meta->index].svc_id = iter->svc_id;
    206                 iter->fini = false;
    207206
    208207                hr_ext_state_t final_ext_state = HR_EXT_INVALID;
  • uspace/srv/bd/hr/util.c

    r9c3369b rb127da2f  
    621621        to_add->svc_id = svc_id;
    622622        to_add->inited = inited;
     623        to_add->fini = true;
    623624
    624625        if (md != NULL) {
     
    858859                goto error;
    859860
     861        for (size_t e = 0; e < vol->extent_no; e++) {
     862                if (vol->extents[e].svc_id == 0)
     863                        continue;
     864                list_foreach(*list, link, struct dev_list_member, iter) {
     865                        if (iter->svc_id == vol->extents[e].svc_id)
     866                                iter->fini = false;
     867                }
     868        }
     869
    860870        rc = hr_register_volume(vol);
    861871        if (rc != EOK)
     
    870880        return EOK;
    871881error:
     882        /* let the caller fini the block svc list */
     883        for (size_t e = 0; e < vol->extent_no; e++)
     884                vol->extents[e].svc_id = 0;
     885
    872886        hr_destroy_vol_struct(vol);
     887
    873888        return rc;
    874889}
     
    945960                }
    946961
    947                 if (rc != EOK)
    948                         goto error;
     962                if (rc != EOK) {
     963                        block_fini(iter->svc_id);
     964                        free_dev_list_member(iter);
     965                        goto error;
     966                }
    949967
    950968                char *svc_name = NULL;
    951969                rc = loc_service_get_name(iter->svc_id, &svc_name);
    952                 if (rc != EOK)
    953                         goto error;
     970                if (rc != EOK) {
     971                        block_fini(iter->svc_id);
     972                        free_dev_list_member(iter);
     973                        goto error;
     974                }
    954975                HR_DEBUG("found valid metadata on %s (type = %s), matching "
    955976                    "other extents\n",
     
    962983                rc = hr_util_get_matching_md_svcs_list(&matching_svcs_list,
    963984                    &dev_id_list, iter->svc_id, type, metadata_struct_main);
    964                 if (rc != EOK)
    965                         goto error;
     985                if (rc != EOK) {
     986                        block_fini(iter->svc_id);
     987                        free_dev_list_member(iter);
     988                        goto error;
     989                }
    966990
    967991                /* add current iter to list as well */
     
    969993                    iter->svc_id, true, metadata_struct_main);
    970994                if (rc != EOK) {
     995                        block_fini(iter->svc_id);
    971996                        free_svc_id_list(&matching_svcs_list);
    972997                        goto error;
    973998                }
     999
     1000                free_dev_list_member(iter);
    9741001
    9751002                /* remove matching list members from dev_id_list */
Note: See TracChangeset for help on using the changeset viewer.