Changeset 603c1d1f in mainline for uspace/srv/volsrv


Ignore:
Timestamp:
2015-07-05T18:53:00Z (10 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
bf7ddde
Parents:
99c23405
Message:

Persistent partition table creation and destruction.

Location:
uspace/srv/volsrv
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/volsrv/disk.c

    r99c23405 r603c1d1f  
    257257}
    258258
     259int vol_disk_label_create(vol_disk_t *disk, label_type_t ltype)
     260{
     261        int rc;
     262
     263        rc = vbd_label_create(vbd, disk->svc_id, ltype);
     264        if (rc != EOK)
     265                return rc;
     266
     267        disk->dcnt = dc_label;
     268        disk->ltype = ltype;
     269
     270        return EOK;
     271}
     272
     273int vol_disk_empty(vol_disk_t *disk)
     274{
     275        int rc;
     276
     277        if (disk->dcnt == dc_label) {
     278                rc = vbd_label_delete(vbd, disk->svc_id);
     279                if (rc != EOK)
     280                        return rc;
     281        }
     282
     283        disk->dcnt = dc_empty;
     284
     285        return EOK;
     286}
     287
     288
    259289/** @}
    260290 */
  • uspace/srv/volsrv/disk.h

    r99c23405 r603c1d1f  
    4545extern int vol_disk_get_ids(service_id_t *, size_t, size_t *);
    4646extern int vol_disk_find_by_id(service_id_t, vol_disk_t **);
     47extern int vol_disk_label_create(vol_disk_t *, label_type_t);
     48extern int vol_disk_empty(vol_disk_t *);
    4749
    4850#endif
  • uspace/srv/volsrv/volsrv.c

    r99c23405 r603c1d1f  
    146146        }
    147147
    148         disk->dcnt = dc_label;
    149         disk->ltype = ltype;
     148        rc = vol_disk_label_create(disk, ltype);
     149        if (rc != EOK) {
     150                async_answer_0(iid, EIO);
     151                return;
     152        }
    150153
    151154        async_answer_0(iid, EOK);
     
    166169        }
    167170
    168         disk->dcnt = dc_empty;
     171        rc = vol_disk_empty(disk);
     172        if (rc != EOK) {
     173                async_answer_0(iid, EIO);
     174                return;
     175        }
    169176
    170177        async_answer_0(iid, EOK);
Note: See TracChangeset for help on using the changeset viewer.