Changeset 58d82fa in mainline for uspace/srv/bd/hr/hr.c


Ignore:
Timestamp:
2025-01-12T16:53:10Z (9 months ago)
Author:
Miroslav Cimerman <mc@…>
Children:
5ee041e
Parents:
ee47537
git-author:
Miroslav Cimerman <mc@…> (2025-01-12 16:49:51)
git-committer:
Miroslav Cimerman <mc@…> (2025-01-12 16:53:10)
Message:

hr: parallelize RAID1

changes in main hr_volume_t struct:

  • new mutex hotspare_lock for protecting hotspares
  • rebuild_blk is _Atomic
File:
1 edited

Legend:

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

    ree47537 r58d82fa  
    4444#include <loc.h>
    4545#include <task.h>
     46#include <stdatomic.h>
    4647#include <stdio.h>
    4748#include <stdlib.h>
     
    254255        fibril_rwlock_initialize(&new_volume->states_lock);
    255256
     257        fibril_mutex_initialize(&new_volume->hotspare_lock);
     258
    256259        list_initialize(&new_volume->range_lock_list);
    257260        fibril_mutex_initialize(&new_volume->range_lock_list_lock);
     261
     262        atomic_init(&new_volume->rebuild_blk, 0);
    258263
    259264        rc = new_volume->hr_ops.create(new_volume);
     
    310315                rc = loc_service_unregister(hr_srv, svc_id);
    311316        } else {
    312                 /* fibril safe for now */
    313                 fibril_mutex_lock(&vol->lock);
     317                fibril_rwlock_write_lock(&vol->states_lock);
     318                fibril_rwlock_read_lock(&vol->extents_lock);
    314319                hr_update_ext_status(vol, fail_extent, HR_EXT_FAILED);
    315                 fibril_mutex_unlock(&vol->lock);
     320                fibril_rwlock_read_unlock(&vol->extents_lock);
     321                fibril_rwlock_write_unlock(&vol->states_lock);
    316322
    317323                vol->hr_ops.status_event(vol);
Note: See TracChangeset for help on using the changeset viewer.