Changeset 8b51009 in mainline for uspace/srv/bd/hr/util.h


Ignore:
Timestamp:
2025-03-28T23:37:16Z (3 months ago)
Author:
Miroslav Cimerman <mc@…>
Children:
0437dd5
Parents:
7bfe468
git-author:
Miroslav Cimerman <mc@…> (2025-03-28 23:25:57)
git-committer:
Miroslav Cimerman <mc@…> (2025-03-28 23:37:16)
Message:

hr: auto assembly, refactor

Added automatic assembly (with hrctl -A). All disks or their partitions
are scanned for HelenRAID metadata and assembly is attempted.

Main volume list is now locked with RW lock. The volume list
manipulation functions are moved into util.c.

hr_{create,destroy}_vol_struct() are implemented for better reusability
and modularity.

Volume destroy/stop (hrctl -D) now returns EBUSY if someone has still
the volume open()-ed.

File:
1 edited

Legend:

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

    r7bfe468 r8b51009  
    5151    log_msg(LOG_DEFAULT, LVL_ERROR, format, ##__VA_ARGS__)
    5252
    53 extern errno_t hr_init_devs(hr_volume_t *);
    54 extern void hr_fini_devs(hr_volume_t *);
    55 extern errno_t hr_register_volume(hr_volume_t *);
    56 extern errno_t hr_check_devs(hr_volume_t *, uint64_t *, size_t *);
    57 extern errno_t hr_check_ba_range(hr_volume_t *, size_t, uint64_t);
    58 extern void hr_add_ba_offset(hr_volume_t *, uint64_t *);
    59 extern void hr_update_ext_status(hr_volume_t *, size_t, hr_ext_status_t);
    60 extern void hr_update_hotspare_status(hr_volume_t *, size_t, hr_ext_status_t);
    61 extern void hr_update_vol_status(hr_volume_t *, hr_vol_status_t);
    62 extern void hr_update_ext_svc_id(hr_volume_t *, size_t, service_id_t);
    63 extern void hr_update_hotspare_svc_id(hr_volume_t *, size_t, service_id_t);
    64 extern void hr_sync_all_extents(hr_volume_t *);
    65 extern size_t hr_count_extents(hr_volume_t *, hr_ext_status_t);
    66 extern hr_range_lock_t *hr_range_lock_acquire(hr_volume_t *, uint64_t,
     53
     54extern errno_t           hr_create_vol_struct(hr_volume_t **, hr_level_t);
     55extern void              hr_destroy_vol_struct(hr_volume_t *);
     56extern hr_volume_t      *hr_get_volume(service_id_t);
     57extern errno_t           hr_remove_volume(service_id_t);
     58extern errno_t           hr_init_devs(hr_volume_t *);
     59extern void              hr_fini_devs(hr_volume_t *);
     60extern errno_t           hr_register_volume(hr_volume_t *);
     61extern errno_t           hr_check_devs(hr_volume_t *, uint64_t *, size_t *);
     62extern errno_t           hr_check_ba_range(hr_volume_t *, size_t, uint64_t);
     63extern void              hr_add_ba_offset(hr_volume_t *, uint64_t *);
     64extern void              hr_update_ext_status(hr_volume_t *, size_t,
     65    hr_ext_status_t);
     66extern void              hr_update_hotspare_status(hr_volume_t *, size_t,
     67    hr_ext_status_t);
     68extern void              hr_update_vol_status(hr_volume_t *, hr_vol_status_t);
     69extern void              hr_update_ext_svc_id(hr_volume_t *, size_t,
     70    service_id_t);
     71extern void              hr_update_hotspare_svc_id(hr_volume_t *, size_t,
     72    service_id_t);
     73extern void              hr_sync_all_extents(hr_volume_t *);
     74extern size_t            hr_count_extents(hr_volume_t *, hr_ext_status_t);
     75extern void              hr_mark_vol_state_dirty(hr_volume_t *);
     76extern void              hr_range_lock_release(hr_range_lock_t *);
     77extern hr_range_lock_t  *hr_range_lock_acquire(hr_volume_t *, uint64_t,
    6778    uint64_t);
    68 extern void hr_range_lock_release(hr_range_lock_t *);
    69 extern void hr_mark_vol_state_dirty(hr_volume_t *);
     79extern errno_t           hr_util_try_auto_assemble(size_t *);
    7080
    7181#endif
Note: See TracChangeset for help on using the changeset viewer.