Changeset 36661772 in mainline


Ignore:
Timestamp:
2025-01-12T21:53:55Z (5 months ago)
Author:
Miroslav Cimerman <mc@…>
Children:
edc89bd8
Parents:
3a68baa
git-author:
Miroslav Cimerman <mc@…> (2025-01-12 17:03:54)
git-committer:
Miroslav Cimerman <mc@…> (2025-01-12 21:53:55)
Message:

hr: util.c: add assertions for locks

File:
1 edited

Legend:

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

    r3a68baa r36661772  
    11/*
    2  * Copyright (c) 2024 Miroslav Cimerman
     2 * Copyright (c) 2025 Miroslav Cimerman
    33 * All rights reserved.
    44 *
     
    9393
    9494        for (i = 0; i < vol->extent_no; i++) {
    95                 if (vol->extents[i].status != HR_EXT_MISSING) {
     95                if (vol->extents[i].svc_id != 0) {
    9696                        HR_DEBUG("hr_fini_devs(): block_fini() on (%lu)\n",
    9797                            vol->extents[i].svc_id);
     
    213213void hr_update_ext_status(hr_volume_t *vol, size_t extent, hr_ext_status_t s)
    214214{
     215        if (vol->level != HR_LVL_0)
     216                assert(fibril_rwlock_is_locked(&vol->extents_lock));
     217
     218        assert(fibril_rwlock_is_write_locked(&vol->states_lock));
     219
    215220        assert(extent < vol->extent_no);
    216221
     
    224229void hr_update_hotspare_status(hr_volume_t *vol, size_t hs, hr_ext_status_t s)
    225230{
     231        assert(fibril_mutex_is_locked(&vol->hotspare_lock));
     232
    226233        assert(hs < vol->hotspare_no);
    227234
     
    235242void hr_update_vol_status(hr_volume_t *vol, hr_vol_status_t s)
    236243{
     244        assert(fibril_rwlock_is_write_locked(&vol->states_lock));
     245
    237246        HR_WARN("\"%s\": changing volume state: %s -> %s\n", vol->devname,
    238247            hr_get_vol_status_msg(vol->status), hr_get_vol_status_msg(s));
     
    256265                        continue;
    257266                rc = block_sync_cache(vol->extents[i].svc_id, 0, 0);
    258                 if (rc != EOK && rc != ENOTSUP) {
     267                if (rc == ENOMEM || rc == ENOTSUP)
     268                        continue;
     269                if (rc != EOK) {
    259270                        if (rc == ENOENT)
    260271                                hr_update_ext_status(vol, i, HR_EXT_MISSING);
     
    268279size_t hr_count_extents(hr_volume_t *vol, hr_ext_status_t status)
    269280{
     281        if (vol->level != HR_LVL_0)
     282                assert(fibril_rwlock_is_locked(&vol->extents_lock));
     283        assert(fibril_rwlock_is_locked(&vol->states_lock));
     284
    270285        size_t count = 0;
    271286        for (size_t i = 0; i < vol->extent_no; i++)
     
    339354void hr_range_lock_release(hr_range_lock_t *rl)
    340355{
     356        if (rl == NULL)
     357                return;
     358
    341359        HR_RL_LIST_LOCK(rl->vol);
    342360
Note: See TracChangeset for help on using the changeset viewer.