Changeset da80de9 in mainline for uspace/srv/bd/hr/raid0.c


Ignore:
Timestamp:
2025-06-07T11:52:34Z (9 days ago)
Author:
Miroslav Cimerman <mc@…>
Children:
d482b05
Parents:
49da044
Message:

hr: move state callback to hr_ops_t

File:
1 edited

Legend:

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

    r49da044 rda80de9  
    5353#include "var.h"
    5454
    55 static void hr_raid0_update_vol_state(hr_volume_t *);
    56 static void hr_raid0_state_callback(hr_volume_t *, size_t, errno_t);
    5755static errno_t hr_raid0_bd_op(hr_bd_op_type_t, bd_srv_t *, aoff64_t, size_t,
    5856    void *, const void *, size_t);
     
    9290        }
    9391
    94         hr_raid0_update_vol_state(new_volume);
     92        hr_raid0_vol_state_eval(new_volume);
    9593        if (new_volume->state != HR_VOL_ONLINE) {
    9694                HR_NOTE("\"%s\": unusable state, not creating\n",
     
    103101        new_volume->hr_bds.sarg = new_volume;
    104102
    105         new_volume->state_callback = hr_raid0_state_callback;
    106 
    107103        return EOK;
    108104}
     
    130126}
    131127
    132 void hr_raid0_state_event(hr_volume_t *vol)
    133 {
    134         HR_DEBUG("%s()", __func__);
    135 
    136         hr_raid0_update_vol_state(vol);
    137 }
    138 
    139 static errno_t hr_raid0_bd_open(bd_srvs_t *bds, bd_srv_t *bd)
    140 {
    141         HR_DEBUG("%s()", __func__);
    142 
    143         hr_volume_t *vol = bd->srvs->sarg;
    144 
    145         atomic_fetch_add_explicit(&vol->open_cnt, 1, memory_order_relaxed);
    146 
    147         return EOK;
    148 }
    149 
    150 static errno_t hr_raid0_bd_close(bd_srv_t *bd)
    151 {
    152         HR_DEBUG("%s()", __func__);
    153 
    154         hr_volume_t *vol = bd->srvs->sarg;
    155 
    156         atomic_fetch_sub_explicit(&vol->open_cnt, 1, memory_order_relaxed);
    157 
    158         return EOK;
    159 }
    160 
    161 static errno_t hr_raid0_bd_sync_cache(bd_srv_t *bd, aoff64_t ba, size_t cnt)
    162 {
    163         return hr_raid0_bd_op(HR_BD_SYNC, bd, ba, cnt, NULL, NULL, 0);
    164 }
    165 
    166 static errno_t hr_raid0_bd_read_blocks(bd_srv_t *bd, aoff64_t ba, size_t cnt,
    167     void *buf, size_t size)
    168 {
    169         return hr_raid0_bd_op(HR_BD_READ, bd, ba, cnt, buf, NULL, size);
    170 }
    171 
    172 static errno_t hr_raid0_bd_write_blocks(bd_srv_t *bd, aoff64_t ba, size_t cnt,
    173     const void *data, size_t size)
    174 {
    175         return hr_raid0_bd_op(HR_BD_WRITE, bd, ba, cnt, NULL, data, size);
    176 }
    177 
    178 static errno_t hr_raid0_bd_get_block_size(bd_srv_t *bd, size_t *rsize)
    179 {
    180         hr_volume_t *vol = bd->srvs->sarg;
    181 
    182         *rsize = vol->bsize;
    183         return EOK;
    184 }
    185 
    186 static errno_t hr_raid0_bd_get_num_blocks(bd_srv_t *bd, aoff64_t *rnb)
    187 {
    188         hr_volume_t *vol = bd->srvs->sarg;
    189 
    190         *rnb = vol->data_blkno;
    191         return EOK;
    192 }
    193 
    194 static void hr_raid0_update_vol_state(hr_volume_t *vol)
    195 {
     128void hr_raid0_vol_state_eval(hr_volume_t *vol)
     129{
     130        HR_DEBUG("%s()", __func__);
     131
    196132        fibril_mutex_lock(&vol->md_lock);
    197133
     
    226162}
    227163
    228 static void hr_raid0_state_callback(hr_volume_t *vol, size_t extent, errno_t rc)
    229 {
     164void hr_raid0_ext_state_cb(hr_volume_t *vol, size_t extent, errno_t rc)
     165{
     166        HR_DEBUG("%s()", __func__);
     167
    230168        if (rc == EOK)
    231169                return;
     
    246184}
    247185
     186static errno_t hr_raid0_bd_open(bd_srvs_t *bds, bd_srv_t *bd)
     187{
     188        HR_DEBUG("%s()", __func__);
     189
     190        hr_volume_t *vol = bd->srvs->sarg;
     191
     192        atomic_fetch_add_explicit(&vol->open_cnt, 1, memory_order_relaxed);
     193
     194        return EOK;
     195}
     196
     197static errno_t hr_raid0_bd_close(bd_srv_t *bd)
     198{
     199        HR_DEBUG("%s()", __func__);
     200
     201        hr_volume_t *vol = bd->srvs->sarg;
     202
     203        atomic_fetch_sub_explicit(&vol->open_cnt, 1, memory_order_relaxed);
     204
     205        return EOK;
     206}
     207
     208static errno_t hr_raid0_bd_sync_cache(bd_srv_t *bd, aoff64_t ba, size_t cnt)
     209{
     210        return hr_raid0_bd_op(HR_BD_SYNC, bd, ba, cnt, NULL, NULL, 0);
     211}
     212
     213static errno_t hr_raid0_bd_read_blocks(bd_srv_t *bd, aoff64_t ba, size_t cnt,
     214    void *buf, size_t size)
     215{
     216        return hr_raid0_bd_op(HR_BD_READ, bd, ba, cnt, buf, NULL, size);
     217}
     218
     219static errno_t hr_raid0_bd_write_blocks(bd_srv_t *bd, aoff64_t ba, size_t cnt,
     220    const void *data, size_t size)
     221{
     222        return hr_raid0_bd_op(HR_BD_WRITE, bd, ba, cnt, NULL, data, size);
     223}
     224
     225static errno_t hr_raid0_bd_get_block_size(bd_srv_t *bd, size_t *rsize)
     226{
     227        hr_volume_t *vol = bd->srvs->sarg;
     228
     229        *rsize = vol->bsize;
     230        return EOK;
     231}
     232
     233static errno_t hr_raid0_bd_get_num_blocks(bd_srv_t *bd, aoff64_t *rnb)
     234{
     235        hr_volume_t *vol = bd->srvs->sarg;
     236
     237        *rnb = vol->data_blkno;
     238        return EOK;
     239}
     240
    248241static errno_t hr_raid0_bd_op(hr_bd_op_type_t type, bd_srv_t *bd, aoff64_t ba,
    249242    size_t cnt, void *dst, const void *src, size_t size)
    250243{
     244        HR_DEBUG("%s()", __func__);
     245
    251246        hr_volume_t *vol = bd->srvs->sarg;
    252247        errno_t rc;
Note: See TracChangeset for help on using the changeset viewer.