Changeset 603c1d1f in mainline for uspace/srv
- Timestamp:
- 2015-07-05T18:53:00Z (10 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- bf7ddde
- Parents:
- 99c23405
- Location:
- uspace/srv
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/part/guid_part/guid_part.c
r99c23405 r603c1d1f 250 250 } 251 251 252 rc = block_read_direct(indev_sid, GPT_HDR_BA, 1, gpt_hdr);252 rc = block_read_direct(indev_sid, gpt_hdr_ba, 1, gpt_hdr); 253 253 if (rc != EOK) { 254 254 printf(NAME ": Failed reading GPT header block.\n"); -
uspace/srv/bd/vbd/disk.c
r99c23405 r603c1d1f 223 223 } 224 224 225 log_msg(LOG_DEFAULT, LVL_NOTE, "block_init(%zu)", sid); 225 226 rc = block_init(EXCHANGE_SERIALIZE, sid, 2048); 226 227 if (rc != EOK) { … … 272 273 error: 273 274 label_close(label); 274 if (block_inited) 275 if (block_inited) { 276 log_msg(LOG_DEFAULT, LVL_NOTE, "block_fini(%zu)", sid); 275 277 block_fini(sid); 278 } 276 279 if (disk != NULL) 277 280 free(disk->svc_name); … … 293 296 list_remove(&disk->ldisks); 294 297 label_close(disk->label); 298 log_msg(LOG_DEFAULT, LVL_NOTE, "block_fini(%zu)", sid); 299 block_fini(sid); 295 300 free(disk); 296 301 return EOK; … … 353 358 label_t *label; 354 359 vbds_disk_t *disk; 360 bool block_inited = false; 361 size_t block_size; 355 362 int rc; 356 363 357 364 log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_label_create(%zu)", sid); 365 366 log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_label_create(%zu) - chkdup", sid); 358 367 359 368 /* Check for duplicates */ … … 362 371 return EEXISTS; 363 372 373 log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_label_create(%zu) - alloc", sid); 374 364 375 disk = calloc(1, sizeof(vbds_disk_t)); 365 376 if (disk == NULL) 366 377 return ENOMEM; 367 378 379 rc = loc_service_get_name(sid, &disk->svc_name); 380 if (rc != EOK) { 381 log_msg(LOG_DEFAULT, LVL_ERROR, "Failed getting disk service name."); 382 rc = EIO; 383 goto error; 384 } 385 386 log_msg(LOG_DEFAULT, LVL_NOTE, "block_init(%zu)", sid); 387 rc = block_init(EXCHANGE_SERIALIZE, sid, 2048); 388 if (rc != EOK) { 389 log_msg(LOG_DEFAULT, LVL_ERROR, "Failed opening block device %s.", 390 disk->svc_name); 391 rc = EIO; 392 goto error; 393 } 394 395 rc = block_get_bsize(sid, &block_size); 396 if (rc != EOK) { 397 log_msg(LOG_DEFAULT, LVL_ERROR, "Failed getting block size of %s.", 398 disk->svc_name); 399 rc = EIO; 400 goto error; 401 } 402 403 block_inited = true; 404 405 log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_label_create(%zu) - label_create", sid); 406 368 407 rc = label_create(sid, ltype, &label); 369 408 if (rc != EOK) … … 372 411 disk->svc_id = sid; 373 412 disk->label = label; 413 disk->block_size = block_size; 414 list_initialize(&disk->parts); 415 374 416 list_append(&disk->ldisks, &vbds_disks); 417 418 log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_label_create(%zu) - success", sid); 375 419 return EOK; 376 420 error: 421 log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_label_create(%zu) - failure", sid); 422 if (block_inited) { 423 log_msg(LOG_DEFAULT, LVL_NOTE, "block_fini(%zu)", sid); 424 block_fini(sid); 425 } 426 if (disk != NULL) 427 free(disk->svc_name); 377 428 free(disk); 378 429 return rc; … … 397 448 398 449 list_remove(&disk->ldisks); 450 log_msg(LOG_DEFAULT, LVL_NOTE, "block_fini(%zu)", sid); 451 block_fini(sid); 399 452 free(disk); 400 453 return EOK; -
uspace/srv/volsrv/disk.c
r99c23405 r603c1d1f 257 257 } 258 258 259 int 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 273 int 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 259 289 /** @} 260 290 */ -
uspace/srv/volsrv/disk.h
r99c23405 r603c1d1f 45 45 extern int vol_disk_get_ids(service_id_t *, size_t, size_t *); 46 46 extern int vol_disk_find_by_id(service_id_t, vol_disk_t **); 47 extern int vol_disk_label_create(vol_disk_t *, label_type_t); 48 extern int vol_disk_empty(vol_disk_t *); 47 49 48 50 #endif -
uspace/srv/volsrv/volsrv.c
r99c23405 r603c1d1f 146 146 } 147 147 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 } 150 153 151 154 async_answer_0(iid, EOK); … … 166 169 } 167 170 168 disk->dcnt = dc_empty; 171 rc = vol_disk_empty(disk); 172 if (rc != EOK) { 173 async_answer_0(iid, EIO); 174 return; 175 } 169 176 170 177 async_answer_0(iid, EOK);
Note:
See TracChangeset
for help on using the changeset viewer.