Changeset 53e3950 in mainline
- Timestamp:
- 2016-02-18T17:01:49Z (9 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9e53406
- Parents:
- e11c527
- Location:
- uspace
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/fdisk/Makefile
re11c527 r53e3950 30 30 LIBS = \ 31 31 $(LIBCLUI_PREFIX)/libclui.a \ 32 $(LIBFDISK_PREFIX)/libfdisk.a \ 33 $(LIBBLOCK_PREFIX)/libblock.a 32 $(LIBFDISK_PREFIX)/libfdisk.a 34 33 35 34 EXTRA_CFLAGS = \ -
uspace/lib/c/include/vbd.h
re11c527 r53e3950 59 59 /** Block size */ 60 60 size_t block_size; 61 /** Total number of blocks */ 62 aoff64_t nblocks; 61 63 } vbd_disk_info_t; 62 64 -
uspace/lib/fdisk/Makefile
re11c527 r53e3950 28 28 29 29 USPACE_PREFIX = ../.. 30 EXTRA_CFLAGS = -Iinclude -I$(LIBBLOCK_PREFIX)30 EXTRA_CFLAGS = -Iinclude 31 31 32 32 LIBRARY = libfdisk -
uspace/lib/fdisk/include/types/fdisk.h
re11c527 r53e3950 110 110 /** List of devices available for managing by fdisk */ 111 111 typedef struct { 112 /** Fdisk instance */ 113 struct fdisk *fdisk; 114 /** List of device info structures */ 112 115 list_t devinfos; /* of fdisk_dev_info_t */ 113 116 } fdisk_dev_list_t; … … 123 126 /** Service name or NULL if not determined yet */ 124 127 char *svcname; 125 /** Device is initialized in libblock */126 bool blk_inited;127 128 } fdisk_dev_info_t; 128 129 -
uspace/lib/fdisk/src/fdisk.c
re11c527 r53e3950 35 35 36 36 #include <adt/list.h> 37 #include <block.h>38 37 #include <errno.h> 39 38 #include <fdisk.h> 40 39 #include <loc.h> 40 #include <macros.h> 41 41 #include <mem.h> 42 42 #include <stdlib.h> … … 65 65 return; 66 66 67 if (info->blk_inited)68 block_fini(info->svcid);69 70 67 free(info->svcname); 71 68 free(info); … … 125 122 return ENOMEM; 126 123 124 devlist->fdisk = fdisk; 127 125 list_initialize(&devlist->devinfos); 128 126 … … 222 220 int fdisk_dev_info_capacity(fdisk_dev_info_t *info, fdisk_cap_t *cap) 223 221 { 224 size_t bsize; 225 aoff64_t nblocks; 226 int rc; 227 228 if (!info->blk_inited) { 229 rc = block_init(info->svcid, 2048); 230 if (rc != EOK) 231 return rc; 232 233 info->blk_inited = true; 234 } 235 236 rc = block_get_bsize(info->svcid, &bsize); 222 vbd_disk_info_t vinfo; 223 int rc; 224 225 rc = vbd_disk_info(info->devlist->fdisk->vbd, info->svcid, &vinfo); 237 226 if (rc != EOK) 238 227 return EIO; 239 228 240 rc = block_get_nblocks(info->svcid, &nblocks); 241 if (rc != EOK) 242 return EIO; 243 244 fdisk_cap_from_blocks(nblocks, bsize, cap); 229 fdisk_cap_from_blocks(vinfo.nblocks, vinfo.block_size, cap); 245 230 return EOK; 246 231 } … … 435 420 int fdisk_dev_open(fdisk_t *fdisk, service_id_t sid, fdisk_dev_t **rdev) 436 421 { 437 vbd_disk_info_t vinfo;438 422 fdisk_dev_t *dev = NULL; 439 423 service_id_t *psids = NULL; … … 451 435 list_initialize(&dev->pri_ba); 452 436 list_initialize(&dev->log_ba); 453 454 rc = vbd_disk_info(fdisk->vbd, sid, &vinfo);455 if (rc != EOK) {456 rc = EIO;457 goto error;458 }459 437 460 438 rc = fdisk_update_dev_info(dev); … … 554 532 int fdisk_dev_capacity(fdisk_dev_t *dev, fdisk_cap_t *cap) 555 533 { 556 size_t bsize; 557 aoff64_t nblocks; 558 int rc; 559 560 rc = block_init(dev->sid, 2048); 561 if (rc != EOK) 562 return rc; 563 564 rc = block_get_bsize(dev->sid, &bsize); 565 if (rc != EOK) 566 return EIO; 567 568 rc = block_get_nblocks(dev->sid, &nblocks); 569 if (rc != EOK) 570 return EIO; 571 572 block_fini(dev->sid); 573 574 fdisk_cap_from_blocks(nblocks, bsize, cap); 534 fdisk_cap_from_blocks(dev->dinfo.nblocks, dev->dinfo.block_size, cap); 575 535 return EOK; 576 536 } -
uspace/srv/bd/vbd/disk.c
re11c527 r53e3950 452 452 bool block_inited = false; 453 453 size_t block_size; 454 aoff64_t nblocks; 454 455 int rc; 455 456 … … 489 490 } 490 491 492 rc = block_get_nblocks(sid, &nblocks); 493 if (rc != EOK) { 494 log_msg(LOG_DEFAULT, LVL_ERROR, "Failed getting number of " 495 "blocks of %s.", disk->svc_name); 496 rc = EIO; 497 goto error; 498 } 499 491 500 block_inited = true; 492 501 … … 502 511 disk->label = label; 503 512 disk->block_size = block_size; 513 disk->nblocks = nblocks; 504 514 disk->present = true; 505 515 … … 598 608 info->anblocks = linfo.anblocks; 599 609 info->block_size = disk->block_size; 610 info->nblocks = disk->nblocks; 600 611 log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_disk_info - block_size=%zu", 601 612 info->block_size); -
uspace/srv/bd/vbd/types/vbd.h
re11c527 r53e3950 100 100 /** Block size */ 101 101 size_t block_size; 102 /** Total number of blocks */ 103 aoff64_t nblocks; 102 104 /** Used to mark disks still present during re-discovery */ 103 105 bool present;
Note:
See TracChangeset
for help on using the changeset viewer.