Changeset cf28ffd3 in mainline for uspace/srv


Ignore:
Timestamp:
2024-10-28T22:19:45Z (12 months ago)
Author:
Miroslav Cimerman <mc@…>
Children:
1cfa162
Parents:
d84773a
Message:

hr: add option to silently fail an extent

File:
1 edited

Legend:

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

    rd84773a rcf28ffd3  
    255255        log_msg(LOG_DEFAULT, LVL_NOTE, "hr_stop_srv()");
    256256
    257         errno_t rc;
     257        errno_t rc = EOK;
    258258        service_id_t svc_id;
     259        long fail_extent;
    259260        hr_volume_t *vol;
    260261
    261262        svc_id = ipc_get_arg1(icall);
     263        fail_extent = (long) ipc_get_arg2(icall);
    262264
    263265        vol = hr_get_volume(svc_id);
     
    267269        }
    268270
    269         rc = hr_remove_volume(svc_id);
    270         if (rc != EOK) {
    271                 async_answer_0(icall, rc);
    272                 return;
    273         }
    274 
    275         rc = loc_service_unregister(hr_srv, svc_id);
    276 
     271        if (fail_extent == -1) {
     272                rc = hr_remove_volume(svc_id);
     273                if (rc != EOK) {
     274                        async_answer_0(icall, rc);
     275                        return;
     276                }
     277                rc = loc_service_unregister(hr_srv, svc_id);
     278        } else {
     279                /* fibril safe for now */
     280                fibril_mutex_lock(&vol->lock);
     281                hr_update_ext_status(vol, fail_extent, HR_EXT_FAILED);
     282                fibril_mutex_unlock(&vol->lock);
     283        }
    277284        async_answer_0(icall, rc);
    278285}
Note: See TracChangeset for help on using the changeset viewer.