Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/bd/vbd/disk.c

    r4285f384 rfafb8e5  
    11/*
    2  * Copyright (c) 2025 Jiri Svoboda
     2 * Copyright (c) 2016 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    3535
    3636#include <adt/list.h>
    37 #include <bd.h>
    3837#include <bd_srv.h>
    3938#include <block.h>
     
    5251#include "types/vbd.h"
    5352
    54 loc_srv_t *vbds_srv;
    55 
    5653static fibril_mutex_t vbds_disks_lock;
    5754static list_t vbds_disks; /* of vbds_disk_t */
     
    7269static errno_t vbds_bd_get_block_size(bd_srv_t *, size_t *);
    7370static errno_t vbds_bd_get_num_blocks(bd_srv_t *, aoff64_t *);
    74 static errno_t vbds_bd_eject(bd_srv_t *);
    7571
    7672static errno_t vbds_bsa_translate(vbds_part_t *, aoff64_t, size_t, aoff64_t *);
     
    9591        .write_blocks = vbds_bd_write_blocks,
    9692        .get_block_size = vbds_bd_get_block_size,
    97         .get_num_blocks = vbds_bd_get_num_blocks,
    98         .eject = vbds_bd_eject
     93        .get_num_blocks = vbds_bd_get_num_blocks
    9994};
    10095
     
    502497
    503498        log_msg(LOG_DEFAULT, LVL_DEBUG, "block_init(%zu)", sid);
    504         rc = block_init(sid);
     499        rc = block_init(sid, 2048);
    505500        if (rc != EOK) {
    506501                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed opening block device %s.",
     
    584579        log_msg(LOG_DEFAULT, LVL_DEBUG, "block_fini(%zu)", sid);
    585580        block_fini(sid);
    586         free(disk->svc_name);
    587581        free(disk);
    588582        return EOK;
     
    10751069}
    10761070
    1077 static errno_t vbds_bd_eject(bd_srv_t *bd)
    1078 {
    1079         vbds_part_t *part = bd_srv_part(bd);
    1080         async_sess_t *sess;
    1081         bd_t *bdc;
    1082         errno_t rc;
    1083 
    1084         log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_bd_eject()");
    1085 
    1086         fibril_rwlock_read_lock(&part->lock);
    1087 
    1088         sess = loc_service_connect(part->disk->svc_id, INTERFACE_BLOCK, 0);
    1089         if (sess == NULL) {
    1090                 log_msg(LOG_DEFAULT, LVL_WARN,
    1091                     "vbds_bd_eject() - failed connect");
    1092                 fibril_rwlock_read_unlock(&part->lock);
    1093                 return EIO;
    1094         }
    1095 
    1096         rc = bd_open(sess, &bdc);
    1097         if (rc != EOK) {
    1098                 log_msg(LOG_DEFAULT, LVL_WARN,
    1099                     "vbds_bd_eject() - failed open");
    1100                 async_hangup(sess);
    1101                 fibril_rwlock_read_unlock(&part->lock);
    1102                 return EIO;
    1103         }
    1104 
    1105         rc = bd_eject(bdc);
    1106 
    1107         bd_close(bdc);
    1108         async_hangup(sess);
    1109 
    1110         fibril_rwlock_read_unlock(&part->lock);
    1111         return rc;
    1112 }
    1113 
    11141071void vbds_bd_conn(ipc_call_t *icall, void *arg)
    11151072{
     
    11651122        log_msg(LOG_DEFAULT, LVL_DEBUG, "loc_service_register('%s')",
    11661123            name);
    1167         rc = loc_service_register(vbds_srv, name, &psid);
     1124        rc = loc_service_register(name, &psid);
    11681125        if (rc != EOK) {
    11691126                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering "
     
    11741131        }
    11751132
    1176         rc = loc_service_add_to_cat(vbds_srv, psid, part_cid);
     1133        rc = loc_service_add_to_cat(psid, part_cid);
    11771134        if (rc != EOK) {
    11781135                log_msg(LOG_DEFAULT, LVL_ERROR, "Failled adding partition "
     
    11811138                free(part);
    11821139
    1183                 rc = loc_service_unregister(vbds_srv, psid);
     1140                rc = loc_service_unregister(psid);
    11841141                if (rc != EOK) {
    11851142                        log_msg(LOG_DEFAULT, LVL_ERROR, "Error unregistering "
     
    12031160            "disk->svc_name='%s', id=%zu)", part->disk->svc_name, part->svc_id);
    12041161
    1205         rc = loc_service_unregister(vbds_srv, part->svc_id);
     1162        rc = loc_service_unregister(part->svc_id);
    12061163        if (rc != EOK)
    12071164                return EIO;
Note: See TracChangeset for help on using the changeset viewer.