Changeset deacc58d in mainline for uspace/lib/label/src/mbr.c


Ignore:
Timestamp:
2017-06-20T17:34:02Z (7 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
80da8f70
Parents:
63e27ef
Message:

Break liblabel dependency on libblock.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/label/src/mbr.c

    r63e27ef rdeacc58d  
    3434 */
    3535
    36 #include <block.h>
    3736#include <byteorder.h>
    3837#include <errno.h>
     
    4342#include "mbr.h"
    4443
    45 static int mbr_open(service_id_t, label_t **);
     44static int mbr_open(label_bd_t *, label_t **);
    4645static int mbr_open_ext(label_t *);
    47 static int mbr_create(service_id_t, label_t **);
     46static int mbr_create(label_bd_t *, label_t **);
    4847static void mbr_close(label_t *);
    4948static int mbr_destroy(label_t *);
     
    8685};
    8786
    88 static int mbr_open(service_id_t sid, label_t **rlabel)
     87static int mbr_open(label_bd_t *bd, label_t **rlabel)
    8988{
    9089        label_t *label = NULL;
     
    9796        int rc;
    9897
    99         rc = block_get_bsize(sid, &bsize);
    100         if (rc != EOK) {
    101                 rc = EIO;
    102                 goto error;
    103         }
    104 
    105         rc = block_get_nblocks(sid, &nblocks);
     98        rc = bd->ops->get_bsize(bd->arg, &bsize);
     99        if (rc != EOK) {
     100                rc = EIO;
     101                goto error;
     102        }
     103
     104        rc = bd->ops->get_nblocks(bd->arg, &nblocks);
    106105        if (rc != EOK) {
    107106                rc = EIO;
     
    125124        }
    126125
    127         rc = block_read_direct(sid, mbr_ba, 1, mbr);
     126        rc = bd->ops->read(bd->arg, mbr_ba, 1, mbr);
    128127        if (rc != EOK) {
    129128                rc = EIO;
     
    160159        label->ops = &mbr_label_ops;
    161160        label->ltype = lt_mbr;
    162         label->svc_id = sid;
     161        label->bd = *bd;
    163162        label->block_size = bsize;
    164163        label->ablock0 = mbr_ablock0;
     
    219218        while (true) {
    220219                /* Read EBR */
    221                 rc = block_read_direct(label->svc_id, ebr_b0, 1, ebr);
     220                rc = label->bd.ops->read(label->bd.arg, ebr_b0, 1, ebr);
    222221                if (rc != EOK) {
    223222                        rc = EIO;
     
    280279}
    281280
    282 static int mbr_create(service_id_t sid, label_t **rlabel)
     281static int mbr_create(label_bd_t *bd, label_t **rlabel)
    283282{
    284283        label_t *label = NULL;
     
    289288        int rc;
    290289
    291         rc = block_get_bsize(sid, &bsize);
    292         if (rc != EOK) {
    293                 rc = EIO;
    294                 goto error;
    295         }
    296 
    297         rc = block_get_nblocks(sid, &nblocks);
     290        rc = bd->ops->get_bsize(bd->arg, &bsize);
     291        if (rc != EOK) {
     292                rc = EIO;
     293                goto error;
     294        }
     295
     296        rc = bd->ops->get_nblocks(bd->arg, &nblocks);
    298297        if (rc != EOK) {
    299298                rc = EIO;
     
    321320        mbr->signature = host2uint16_t_le(mbr_br_signature);
    322321
    323         rc = block_write_direct(sid, mbr_ba, 1, mbr);
     322        rc = bd->ops->write(bd->arg, mbr_ba, 1, mbr);
    324323        if (rc != EOK) {
    325324                rc = EIO;
     
    333332        label->ltype = lt_mbr;
    334333        label->block_size = bsize;
    335         label->svc_id = sid;
     334        label->bd = *bd;
    336335        label->ablock0 = mbr_ablock0;
    337336        label->anblocks = nblocks - mbr_ablock0;
     
    387386        }
    388387
    389         rc = block_write_direct(label->svc_id, mbr_ba, 1, mbr);
     388        rc = label->bd.ops->write(label->bd.arg, mbr_ba, 1, mbr);
    390389        if (rc != EOK) {
    391390                rc = EIO;
     
    998997                return ENOMEM;
    999998
    1000         rc = block_read_direct(label->svc_id, mbr_ba, 1, br);
     999        rc = label->bd.ops->read(label->bd.arg, mbr_ba, 1, br);
    10011000        if (rc != EOK) {
    10021001                rc = EIO;
     
    10061005        br->pte[index] = *pte;
    10071006
    1008         rc = block_write_direct(label->svc_id, mbr_ba, 1, br);
     1007        rc = label->bd.ops->write(label->bd.arg, mbr_ba, 1, br);
    10091008        if (rc != EOK) {
    10101009                rc = EIO;
     
    10661065        br->signature = host2uint16_t_le(mbr_br_signature);
    10671066
    1068         rc = block_write_direct(label->svc_id, ba, 1, br);
     1067        rc = label->bd.ops->write(label->bd.arg, ba, 1, br);
    10691068        if (rc != EOK) {
    10701069                rc = EIO;
     
    10911090        ba = part->block0 - part->hdr_blocks;
    10921091
    1093         rc = block_write_direct(label->svc_id, ba, 1, br);
     1092        rc = label->bd.ops->write(label->bd.arg, ba, 1, br);
    10941093        if (rc != EOK) {
    10951094                rc = EIO;
     
    11181117                return ENOMEM;
    11191118
    1120         rc = block_read_direct(label->svc_id, ba, 1, br);
     1119        rc = label->bd.ops->read(label->bd.arg, ba, 1, br);
    11211120        if (rc != EOK) {
    11221121                rc = EIO;
     
    11331132        mbr_log_part_to_ptes(part, NULL, &br->pte[mbr_ebr_pte_next]);
    11341133
    1135         rc = block_write_direct(label->svc_id, ba, 1, br);
     1134        rc = label->bd.ops->write(label->bd.arg, ba, 1, br);
    11361135        if (rc != EOK) {
    11371136                rc = EIO;
Note: See TracChangeset for help on using the changeset viewer.