Changeset 22fb7ab in mainline for uspace/lib/fdisk/src/fdisk.c


Ignore:
Timestamp:
2015-06-26T16:15:31Z (9 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
28ed0d9
Parents:
1356f85a
Message:

Delegate disks to volsrv and labels to vbd.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/fdisk/src/fdisk.c

    r1356f85a r22fb7ab  
    4343#include <stdlib.h>
    4444#include <str.h>
     45#include <vol.h>
    4546
    4647static const char *cu_str[] = {
     
    6869}
    6970
    70 int fdisk_dev_list_get(fdisk_dev_list_t **rdevlist)
     71int fdisk_create(fdisk_t **rfdisk)
     72{
     73        fdisk_t *fdisk;
     74        int rc;
     75
     76        fdisk = calloc(1, sizeof(fdisk_t));
     77        if (fdisk == NULL)
     78                return ENOMEM;
     79
     80        rc = vol_create(&fdisk->vol);
     81        if (rc != EOK) {
     82                free(fdisk);
     83                return EIO;
     84        }
     85
     86        *rfdisk = fdisk;
     87        return EOK;
     88}
     89
     90void fdisk_destroy(fdisk_t *fdisk)
     91{
     92        vol_destroy(fdisk->vol);
     93        free(fdisk);
     94}
     95
     96int fdisk_dev_list_get(fdisk_t *fdisk, fdisk_dev_list_t **rdevlist)
    7197{
    7298        fdisk_dev_list_t *devlist = NULL;
    7399        fdisk_dev_info_t *info;
    74         category_id_t disk_cat;
    75100        service_id_t *svcs = NULL;
    76101        size_t count, i;
     
    83108        list_initialize(&devlist->devinfos);
    84109
    85         rc = loc_category_get_id("disk", &disk_cat, 0);
    86         if (rc != EOK) {
    87                 rc = EIO;
    88                 goto error;
    89         }
    90 
    91         rc = loc_category_get_svcs(disk_cat, &svcs, &count);
     110        rc = vol_get_disks(fdisk->vol, &svcs, &count);
    92111        if (rc != EOK) {
    93112                rc = EIO;
     
    210229}
    211230
    212 int fdisk_dev_open(service_id_t sid, fdisk_dev_t **rdev)
     231int fdisk_dev_open(fdisk_t *fdisk, service_id_t sid, fdisk_dev_t **rdev)
    213232{
    214233        fdisk_dev_t *dev;
     
    218237                return ENOMEM;
    219238
    220         dev->ltype = fdl_none;
     239        dev->fdisk = fdisk;
    221240        dev->sid = sid;
    222241        list_initialize(&dev->parts);
     
    271290int fdisk_label_get_info(fdisk_dev_t *dev, fdisk_label_info_t *info)
    272291{
    273         info->ltype = dev->ltype;
    274         return EOK;
    275 }
    276 
    277 int fdisk_label_create(fdisk_dev_t *dev, fdisk_label_type_t ltype)
    278 {
    279         if (dev->ltype != fdl_none)
    280                 return EEXISTS;
    281 
    282         dev->ltype = ltype;
    283         return EOK;
     292        vol_disk_info_t vinfo;
     293        int rc;
     294
     295        rc = vol_disk_info(dev->fdisk->vol, dev->sid, &vinfo);
     296        if (rc != EOK) {
     297                rc = EIO;
     298                goto error;
     299        }
     300
     301        info->dcnt = vinfo.dcnt;
     302        info->ltype = vinfo.ltype;
     303        return EOK;
     304error:
     305        return rc;
     306}
     307
     308int fdisk_label_create(fdisk_dev_t *dev, label_type_t ltype)
     309{
     310        return vol_label_create(dev->fdisk->vol, dev->sid, ltype);
    284311}
    285312
     
    287314{
    288315        fdisk_part_t *part;
    289 
    290         if (dev->ltype == fdl_none)
    291                 return ENOENT;
     316        int rc;
    292317
    293318        part = fdisk_part_first(dev);
     
    297322        }
    298323
    299         dev->ltype = fdl_none;
     324        rc = vol_disk_empty(dev->fdisk->vol, dev->sid);
     325        if (rc != EOK)
     326                return EIO;
     327
     328        dev->dcnt = dc_empty;
    300329        return EOK;
    301330}
     
    419448}
    420449
    421 int fdisk_ltype_format(fdisk_label_type_t ltype, char **rstr)
     450int fdisk_ltype_format(label_type_t ltype, char **rstr)
    422451{
    423452        const char *sltype;
     
    426455        sltype = NULL;
    427456        switch (ltype) {
    428         case fdl_none:
    429                 sltype = "None";
    430                 break;
    431         case fdl_unknown:
    432                 sltype = "Unknown";
    433                 break;
    434         case fdl_mbr:
     457        case lt_mbr:
    435458                sltype = "MBR";
    436459                break;
    437         case fdl_gpt:
     460        case lt_gpt:
    438461                sltype = "GPT";
    439462                break;
Note: See TracChangeset for help on using the changeset viewer.