Changeset d85ee06 in mainline


Ignore:
Timestamp:
2025-04-22T11:13:11Z (4 weeks ago)
Author:
Miroslav Cimerman <mc@…>
Children:
dd76b46
Parents:
a056759
git-author:
Miroslav Cimerman <mc@…> (2025-04-22 11:09:10)
git-committer:
Miroslav Cimerman <mc@…> (2025-04-22 11:13:11)
Message:

hr: geom g{mirror, stripe}: rename files, remove saving

We cannot currently support GEOM::MIRROR metadata saving,
because we would have to keep hardcoded provider names, and
disk unique IDs.

Location:
uspace/srv/bd/hr
Files:
2 edited
2 moved

Legend:

Unmodified
Added
Removed
  • uspace/srv/bd/hr/meson.build

    ra056759 rd85ee06  
    3232            'hr.c',
    3333            'io.c',
    34             'metadata/foreign/geom/mirror.c',
    35             'metadata/foreign/geom/stripe.c',
     34            'metadata/foreign/geom/hr_g_mirror.c',
     35            'metadata/foreign/geom/hr_g_stripe.c',
    3636            'metadata/native.c',
    3737            'raid0.c',
  • uspace/srv/bd/hr/metadata/foreign/geom/hr_g_mirror.c

    ra056759 rd85ee06  
    103103        (void)vol;
    104104        (void)md_v;
     105
    105106        return ENOTSUP;
    106107}
     
    113114
    114115        struct g_mirror_metadata *main_meta = NULL;
    115         size_t max_counter_val = 0;
     116        uint64_t max_counter_val = 0;
    116117
    117118        list_foreach(*list, link, struct dev_list_member, iter) {
     
    157158                iter->fini = false;
    158159
     160                /* for now no md_sync_offset handling for saved REBUILD */
    159161                if (iter_meta->md_genid == max_counter_val)
    160162                        vol->extents[index].status = HR_EXT_ONLINE;
     
    291293}
    292294
    293 /*
    294  * XXX: finish this fcn documentation
    295  *
    296  * Returns ENOMEM else EOK
    297  */
    298295static errno_t meta_gmirror_save(hr_volume_t *vol, bool with_state_callback)
    299296{
    300297        HR_DEBUG("%s()", __func__);
    301298
    302         errno_t rc = EOK;
    303 
    304         void *md_block = calloc(1, vol->bsize);
    305         if (md_block == NULL)
    306                 return ENOMEM;
    307 
    308         struct g_mirror_metadata *md = vol->in_mem_md;
    309 
    310         fibril_rwlock_read_lock(&vol->extents_lock);
    311 
    312         fibril_mutex_lock(&vol->md_lock);
    313 
    314         for (size_t i = 0; i < vol->extent_no; i++) {
    315                 hr_extent_t *ext = &vol->extents[i];
    316 
    317                 fibril_rwlock_read_lock(&vol->states_lock);
    318 
    319                 /* TODO: special case for REBUILD */
    320                 if (ext->status != HR_EXT_ONLINE)
    321                         continue;
    322 
    323                 fibril_rwlock_read_unlock(&vol->states_lock);
    324 
    325                 md->md_priority = i;
    326                 meta_gmirror_encode(md, md_block);
    327                 rc = meta_gmirror_write_block(ext->svc_id, md_block);
    328                 if (with_state_callback && rc != EOK)
    329                         vol->state_callback(vol, i, rc);
    330         }
    331 
    332         fibril_mutex_unlock(&vol->md_lock);
    333 
    334         fibril_rwlock_read_unlock(&vol->extents_lock);
    335 
    336         if (with_state_callback)
    337                 vol->hr_ops.status_event(vol);
    338 
    339         free(md_block);
     299        (void)vol;
     300        (void)with_state_callback;
     301
     302        /*
     303         * cannot support right now, because would need to store the
     304         * metadata for all disks, because of hardcoded provider names and
     305         * most importantly, disk unique ids
     306         */
     307
     308        /* silent */
    340309        return EOK;
     310        /* return ENOTSUP; */
    341311}
    342312
  • uspace/srv/bd/hr/metadata/foreign/geom/hr_g_stripe.c

    ra056759 rd85ee06  
    5353#include "g_stripe.h"
    5454
    55 static void             *meta_stripe_alloc_struct(void);
    56 static errno_t           meta_stripe_init_vol2meta(const hr_volume_t *, void *);
    57 static errno_t           meta_stripe_init_meta2vol(const list_t *,
     55static void             *meta_gstripe_alloc_struct(void);
     56static errno_t           meta_gstripe_init_vol2meta(const hr_volume_t *, void *);
     57static errno_t           meta_gstripe_init_meta2vol(const list_t *,
    5858    hr_volume_t *);
    59 static void              meta_stripe_encode(void *, void *);
    60 static errno_t           meta_stripe_decode(const void *, void *);
    61 static errno_t           meta_stripe_get_block(service_id_t, void **);
    62 static errno_t           meta_stripe_write_block(service_id_t, const void *);
    63 static bool              meta_stripe_has_valid_magic(const void *);
    64 static bool              meta_stripe_compare_uuids(const void *, const void *);
    65 static void              meta_stripe_inc_counter(void *);
    66 static errno_t           meta_stripe_save(hr_volume_t *, bool);
    67 static const char       *meta_stripe_get_devname(const void *);
    68 static hr_level_t        meta_stripe_get_level(const void *);
    69 static uint64_t          meta_stripe_get_data_offset(void);
    70 static size_t            meta_stripe_get_size(void);
    71 static uint8_t           meta_stripe_get_flags(void);
    72 static hr_metadata_type_t        meta_stripe_get_type(void);
    73 static void              meta_stripe_dump(const void *);
    74 
    75 hr_superblock_ops_t metadata_stripe_ops = {
    76         .alloc_struct           = meta_stripe_alloc_struct,
    77         .init_vol2meta          = meta_stripe_init_vol2meta,
    78         .init_meta2vol          = meta_stripe_init_meta2vol,
    79         .encode                 = meta_stripe_encode,
    80         .decode                 = meta_stripe_decode,
    81         .get_block              = meta_stripe_get_block,
    82         .write_block            = meta_stripe_write_block,
    83         .has_valid_magic        = meta_stripe_has_valid_magic,
    84         .compare_uuids          = meta_stripe_compare_uuids,
    85         .inc_counter            = meta_stripe_inc_counter,
    86         .save                   = meta_stripe_save,
    87         .get_devname            = meta_stripe_get_devname,
    88         .get_level              = meta_stripe_get_level,
    89         .get_data_offset        = meta_stripe_get_data_offset,
    90         .get_size               = meta_stripe_get_size,
    91         .get_flags              = meta_stripe_get_flags,
    92         .get_type               = meta_stripe_get_type,
    93         .dump                   = meta_stripe_dump
     59static void              meta_gstripe_encode(void *, void *);
     60static errno_t           meta_gstripe_decode(const void *, void *);
     61static errno_t           meta_gstripe_get_block(service_id_t, void **);
     62static errno_t           meta_gstripe_write_block(service_id_t, const void *);
     63static bool              meta_gstripe_has_valid_magic(const void *);
     64static bool              meta_gstripe_compare_uuids(const void *, const void *);
     65static void              meta_gstripe_inc_counter(void *);
     66static errno_t           meta_gstripe_save(hr_volume_t *, bool);
     67static const char       *meta_gstripe_get_devname(const void *);
     68static hr_level_t        meta_gstripe_get_level(const void *);
     69static uint64_t          meta_gstripe_get_data_offset(void);
     70static size_t            meta_gstripe_get_size(void);
     71static uint8_t           meta_gstripe_get_flags(void);
     72static hr_metadata_type_t        meta_gstripe_get_type(void);
     73static void              meta_gstripe_dump(const void *);
     74
     75hr_superblock_ops_t metadata_gstripe_ops = {
     76        .alloc_struct           = meta_gstripe_alloc_struct,
     77        .init_vol2meta          = meta_gstripe_init_vol2meta,
     78        .init_meta2vol          = meta_gstripe_init_meta2vol,
     79        .encode                 = meta_gstripe_encode,
     80        .decode                 = meta_gstripe_decode,
     81        .get_block              = meta_gstripe_get_block,
     82        .write_block            = meta_gstripe_write_block,
     83        .has_valid_magic        = meta_gstripe_has_valid_magic,
     84        .compare_uuids          = meta_gstripe_compare_uuids,
     85        .inc_counter            = meta_gstripe_inc_counter,
     86        .save                   = meta_gstripe_save,
     87        .get_devname            = meta_gstripe_get_devname,
     88        .get_level              = meta_gstripe_get_level,
     89        .get_data_offset        = meta_gstripe_get_data_offset,
     90        .get_size               = meta_gstripe_get_size,
     91        .get_flags              = meta_gstripe_get_flags,
     92        .get_type               = meta_gstripe_get_type,
     93        .dump                   = meta_gstripe_dump
    9494};
    9595
    96 static void *meta_stripe_alloc_struct(void)
     96static void *meta_gstripe_alloc_struct(void)
    9797{
    9898        return calloc(1, sizeof(struct g_stripe_metadata));
    9999}
    100100
    101 static errno_t meta_stripe_init_vol2meta(const hr_volume_t *vol, void *md_v)
     101static errno_t meta_gstripe_init_vol2meta(const hr_volume_t *vol, void *md_v)
    102102{
    103103        (void)vol;
     
    106106}
    107107
    108 static errno_t meta_stripe_init_meta2vol(const list_t *list, hr_volume_t *vol)
     108static errno_t meta_gstripe_init_meta2vol(const list_t *list, hr_volume_t *vol)
    109109{
    110110        HR_DEBUG("%s()", __func__);
     
    128128                struct g_stripe_metadata *iter_meta = iter->md;
    129129
    130                 meta_stripe_dump(iter_meta);
     130                meta_gstripe_dump(iter_meta);
    131131
    132132                if (iter_meta->md_provsize < smallest_provider_size) {
     
    179179}
    180180
    181 static void meta_stripe_encode(void *md_v, void *block)
     181static void meta_gstripe_encode(void *md_v, void *block)
    182182{
    183183        HR_DEBUG("%s()", __func__);
     
    186186}
    187187
    188 static errno_t meta_stripe_decode(const void *block, void *md_v)
     188static errno_t meta_gstripe_decode(const void *block, void *md_v)
    189189{
    190190        HR_DEBUG("%s()", __func__);
     
    195195}
    196196
    197 static errno_t meta_stripe_get_block(service_id_t dev, void **rblock)
     197static errno_t meta_gstripe_get_block(service_id_t dev, void **rblock)
    198198{
    199199        HR_DEBUG("%s()", __func__);
     
    240240}
    241241
    242 static errno_t meta_stripe_write_block(service_id_t dev, const void *block)
     242static errno_t meta_gstripe_write_block(service_id_t dev, const void *block)
    243243{
    244244        HR_DEBUG("%s()", __func__);
     
    267267}
    268268
    269 static bool meta_stripe_has_valid_magic(const void *md_v)
     269static bool meta_gstripe_has_valid_magic(const void *md_v)
    270270{
    271271        HR_DEBUG("%s()", __func__);
     
    279279}
    280280
    281 static bool meta_stripe_compare_uuids(const void *md1_v, const void *md2_v)
     281static bool meta_gstripe_compare_uuids(const void *md1_v, const void *md2_v)
    282282{
    283283        const struct g_stripe_metadata *md1 = md1_v;
     
    289289}
    290290
    291 static void meta_stripe_inc_counter(void *md_v)
     291static void meta_gstripe_inc_counter(void *md_v)
    292292{
    293293        (void)md_v;
    294294}
    295295
    296 static errno_t meta_stripe_save(hr_volume_t *vol, bool with_state_callback)
     296static errno_t meta_gstripe_save(hr_volume_t *vol, bool with_state_callback)
    297297{
    298298        HR_DEBUG("%s()", __func__);
     
    301301}
    302302
    303 static const char *meta_stripe_get_devname(const void *md_v)
     303static const char *meta_gstripe_get_devname(const void *md_v)
    304304{
    305305        const struct g_stripe_metadata *md = md_v;
     
    308308}
    309309
    310 static hr_level_t meta_stripe_get_level(const void *md_v)
     310static hr_level_t meta_gstripe_get_level(const void *md_v)
    311311{
    312312        (void)md_v;
     
    315315}
    316316
    317 static uint64_t meta_stripe_get_data_offset(void)
     317static uint64_t meta_gstripe_get_data_offset(void)
    318318{
    319319        return 0;
    320320}
    321321
    322 static size_t meta_stripe_get_size(void)
     322static size_t meta_gstripe_get_size(void)
    323323{
    324324        return 1;
    325325}
    326326
    327 static uint8_t meta_stripe_get_flags(void)
     327static uint8_t meta_gstripe_get_flags(void)
    328328{
    329329        uint8_t flags = 0;
     
    332332}
    333333
    334 static hr_metadata_type_t meta_stripe_get_type(void)
     334static hr_metadata_type_t meta_gstripe_get_type(void)
    335335{
    336336        return  HR_METADATA_GEOM_STRIPE;
    337337}
    338338
    339 static void meta_stripe_dump(const void *md_v)
     339static void meta_gstripe_dump(const void *md_v)
    340340{
    341341        HR_DEBUG("%s()", __func__);
  • uspace/srv/bd/hr/superblock.c

    ra056759 rd85ee06  
    5252#include "metadata/foreign/geom/g_mirror.h"
    5353#include "metadata/foreign/geom/g_stripe.h"
     54#include "metadata/foreign/softraid/softraidvar.h"
     55
    5456#include "metadata/native.h"
    5557
    5658extern hr_superblock_ops_t metadata_native_ops;
    5759extern hr_superblock_ops_t metadata_gmirror_ops;
    58 extern hr_superblock_ops_t metadata_stripe_ops;
     60extern hr_superblock_ops_t metadata_gstripe_ops;
    5961
    6062static hr_superblock_ops_t *hr_superblock_ops_all[] = {
    6163        [HR_METADATA_NATIVE] = &metadata_native_ops,
    6264        [HR_METADATA_GEOM_MIRROR] = &metadata_gmirror_ops,
    63         [HR_METADATA_GEOM_STRIPE] = &metadata_stripe_ops
     65        [HR_METADATA_GEOM_STRIPE] = &metadata_gstripe_ops
    6466};
    6567
Note: See TracChangeset for help on using the changeset viewer.