Changeset 10291a23 in mainline


Ignore:
Timestamp:
2025-04-20T14:50:11Z (7 weeks ago)
Author:
Miroslav Cimerman <mc@…>
Children:
f09b75b
Parents:
afec52b4
git-author:
Miroslav Cimerman <mc@…> (2025-04-20 14:48:24)
git-committer:
Miroslav Cimerman <mc@…> (2025-04-20 14:50:11)
Message:

hr: FreeBSD GEOM::MIRROR metadata support

Location:
uspace/srv/bd/hr
Files:
2 added
4 edited

Legend:

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

    rafec52b4 r10291a23  
    2727#
    2828
    29 deps = [ 'block', 'device' ]
     29deps = [ 'block', 'crypto', 'device' ]
    3030src = files(
    3131            'fge.c',
    3232            'hr.c',
    3333            'io.c',
     34            'metadata/foreign/geom/mirror.c',
    3435            'metadata/native.c',
    3536            'raid0.c',
  • uspace/srv/bd/hr/metadata/native.c

    rafec52b4 r10291a23  
    5757static errno_t           meta_native_init_meta2vol(const list_t *,
    5858    hr_volume_t *);
    59 static void              meta_native_encode(const void *, void *);
    60 static void              meta_native_decode(const void *, void *);
     59static void              meta_native_encode(void *, void *);
     60static errno_t           meta_native_decode(const void *, void *);
    6161static errno_t           meta_native_get_block(service_id_t, void **);
    6262static errno_t           meta_native_write_block(service_id_t, const void *);
     
    192192}
    193193
    194 static void meta_native_encode(const void *md_v, void *block)
     194static void meta_native_encode(void *md_v, void *block)
    195195{
    196196        HR_DEBUG("%s()", __func__);
     
    225225}
    226226
    227 static void meta_native_decode(const void *block, void *md_v)
     227static errno_t meta_native_decode(const void *block, void *md_v)
    228228{
    229229        HR_DEBUG("%s()", __func__);
     
    255255        metadata->bsize = uint32_t_le2host(scratch_md.bsize);
    256256        memcpy(metadata->devname, scratch_md.devname, HR_DEVNAME_LEN);
     257
     258        return EOK;
    257259}
    258260
  • uspace/srv/bd/hr/superblock.c

    rafec52b4 r10291a23  
    4646#include <str.h>
    4747
    48 #include "metadata/native.h"
    4948#include "superblock.h"
    5049#include "util.h"
    5150#include "var.h"
    5251
     52#include "metadata/foreign/geom/g_mirror.h"
     53#include "metadata/native.h"
     54
    5355extern hr_superblock_ops_t metadata_native_ops;
     56extern hr_superblock_ops_t metadata_gmirror_ops;
    5457
    5558static hr_superblock_ops_t *hr_superblock_ops_all[] = {
    56         [HR_METADATA_NATIVE] = &metadata_native_ops
     59        [HR_METADATA_NATIVE] = &metadata_native_ops,
     60        [HR_METADATA_GEOM_MIRROR] = &metadata_gmirror_ops
    5761};
    5862
     
    96100                }
    97101
    98                 meta_ops->decode(meta_block, metadata_struct);
     102                rc = meta_ops->decode(meta_block, metadata_struct);
    99103
    100104                free(meta_block);
     105
     106                if (rc != EOK) {
     107                        free(metadata_struct);
     108                        continue;
     109                }
    101110
    102111                if (!meta_ops->has_valid_magic(metadata_struct)) {
  • uspace/srv/bd/hr/superblock.h

    rafec52b4 r10291a23  
    4343typedef enum {
    4444        HR_METADATA_NATIVE      = 0,
    45         HR_METADATA_LAST_DUMMY  = 1
     45        HR_METADATA_GEOM_MIRROR = 1,
     46        HR_METADATA_LAST_DUMMY  = 2
    4647} metadata_type_t;
    4748
     
    5253        errno_t          (*init_vol2meta)(const hr_volume_t *, void *);
    5354        errno_t          (*init_meta2vol)(const list_t *, hr_volume_t *);
    54         void             (*encode)(const void *, void *);
    55         void             (*decode)(const void *, void *);
     55        void             (*encode)(void *, void *);
     56        errno_t          (*decode)(const void *, void *);
    5657        errno_t          (*get_block)(service_id_t, void **);
    5758        errno_t          (*write_block)(service_id_t, const void *);
Note: See TracChangeset for help on using the changeset viewer.