Changeset 2d78d88 in mainline for uspace/srv/volsrv
- Timestamp:
- 2018-07-25T17:04:03Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- efa3136
- Parents:
- bec18a9
- Location:
- uspace/srv/volsrv
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/volsrv/part.c
rbec18a9 r2d78d88 679 679 } 680 680 681 /** Set partition mount point. 682 * 683 * Set the partition mount point, (un-, re-)mounting the partition as necessary. 684 * 685 * @param part Partition 686 * @param mountp 687 * 688 * @return EOK on success or error code 689 */ 690 errno_t vol_part_set_mountp_part(vol_part_t *part, const char *mountp) 691 { 692 errno_t rc; 693 694 if (part->cur_mp != NULL) { 695 rc = vol_part_eject_part(part); 696 if (rc != EOK) 697 return rc; 698 } 699 700 rc = vol_part_mountp_set(part, mountp); 701 if (rc != EOK) 702 return rc; 703 704 rc = vol_part_mount(part); 705 if (rc != EOK) 706 return rc; 707 708 return EOK; 709 } 710 681 711 errno_t vol_part_get_info(vol_part_t *part, vol_part_info_t *pinfo) 682 712 { -
uspace/srv/volsrv/part.h
rbec18a9 r2d78d88 57 57 extern errno_t vol_part_mkfs_part(vol_part_t *, vol_fstype_t, const char *, 58 58 const char *); 59 extern errno_t vol_part_set_mountp_part(vol_part_t *, const char *); 59 60 extern errno_t vol_part_get_info(vol_part_t *, vol_part_info_t *); 60 61 -
uspace/srv/volsrv/volsrv.c
rbec18a9 r2d78d88 285 285 } 286 286 287 288 287 static void vol_part_mkfs_srv(vol_parts_t *parts, ipc_call_t *icall) 289 288 { … … 291 290 vol_part_t *part; 292 291 vol_fstype_t fstype; 293 char *label ;294 char *mountp ;292 char *label = NULL; 293 char *mountp = NULL; 295 294 errno_t rc; 296 295 … … 304 303 if (rc != EOK) { 305 304 async_answer_0(icall, rc); 306 return;305 goto error; 307 306 } 308 307 … … 315 314 0, NULL); 316 315 if (rc != EOK) { 317 free(label); 318 async_answer_0(icall, rc); 319 return; 316 async_answer_0(icall, rc); 317 goto error; 320 318 } 321 319 … … 327 325 rc = vol_part_find_by_id_ref(parts, sid, &part); 328 326 if (rc != EOK) { 327 async_answer_0(icall, ENOENT); 328 goto error; 329 } 330 331 rc = vol_part_mkfs_part(part, fstype, label, mountp); 332 if (rc != EOK) { 333 async_answer_0(icall, rc); 334 vol_part_del_ref(part); 335 goto error; 336 } 337 338 free(label); 339 free(mountp); 340 async_answer_0(icall, EOK); 341 342 return; 343 error: 344 if (label != NULL) 329 345 free(label); 346 if (mountp != NULL) 347 free(mountp); 348 } 349 350 static void vol_part_set_mountp_srv(vol_parts_t *parts, 351 ipc_call_t *icall) 352 { 353 service_id_t sid; 354 vol_part_t *part; 355 char *mountp; 356 errno_t rc; 357 358 log_msg(LOG_DEFAULT, LVL_NOTE, "vol_part_set_mountp_srv()"); 359 360 sid = IPC_GET_ARG1(*icall); 361 362 rc = async_data_write_accept((void **)&mountp, true, 0, 363 VOL_MOUNTP_MAXLEN, 0, NULL); 364 if (rc != EOK) { 365 async_answer_0(icall, rc); 366 return; 367 } 368 369 if (mountp != NULL) { 370 log_msg(LOG_DEFAULT, LVL_NOTE, 371 "vol_part_set_mountp_srv: mountp='%s'", mountp); 372 } 373 374 rc = vol_part_find_by_id_ref(parts, sid, &part); 375 if (rc != EOK) { 376 free(mountp); 330 377 async_answer_0(icall, ENOENT); 331 378 return; 332 379 } 333 380 334 rc = vol_part_ mkfs_part(part, fstype, label, mountp);335 if (rc != EOK) { 336 free( label);381 rc = vol_part_set_mountp_part(part, mountp); 382 if (rc != EOK) { 383 free(mountp); 337 384 async_answer_0(icall, rc); 338 385 vol_part_del_ref(part); … … 340 387 } 341 388 342 free( label);389 free(mountp); 343 390 async_answer_0(icall, EOK); 344 391 } … … 386 433 vol_part_mkfs_srv(parts, &call); 387 434 break; 435 case VOL_PART_SET_MOUNTP: 436 vol_part_set_mountp_srv(parts, &call); 437 break; 388 438 default: 389 439 async_answer_0(&call, EINVAL);
Note:
See TracChangeset
for help on using the changeset viewer.