Changeset 984a9ba in mainline for uspace/lib/fs/libfs.c
- Timestamp:
- 2018-07-05T09:34:09Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 63d46341
- Parents:
- 76f566d
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/fs/libfs.c
r76f566d r984a9ba 58 58 ((rc1) == EOK ? (rc2) : (rc1)) 59 59 60 #define answer_and_return(c handle, rc) \60 #define answer_and_return(call, rc) \ 61 61 do { \ 62 async_answer_0((c handle), (rc)); \62 async_answer_0((call), (rc)); \ 63 63 return; \ 64 64 } while (0) … … 71 71 static char fs_name[FS_NAME_MAXLEN + 1]; 72 72 73 static void libfs_link(libfs_ops_t *, fs_handle_t, cap_call_handle_t, 74 ipc_call_t *); 75 static void libfs_lookup(libfs_ops_t *, fs_handle_t, cap_call_handle_t, 76 ipc_call_t *); 77 static void libfs_stat(libfs_ops_t *, fs_handle_t, cap_call_handle_t, 78 ipc_call_t *); 79 static void libfs_open_node(libfs_ops_t *, fs_handle_t, cap_call_handle_t, 80 ipc_call_t *); 81 static void libfs_statfs(libfs_ops_t *, fs_handle_t, cap_call_handle_t, 82 ipc_call_t *); 83 84 static void vfs_out_fsprobe(cap_call_handle_t req_handle, ipc_call_t *req) 73 static void libfs_link(libfs_ops_t *, fs_handle_t, ipc_call_t *); 74 static void libfs_lookup(libfs_ops_t *, fs_handle_t, ipc_call_t *); 75 static void libfs_stat(libfs_ops_t *, fs_handle_t, ipc_call_t *); 76 static void libfs_open_node(libfs_ops_t *, fs_handle_t, ipc_call_t *); 77 static void libfs_statfs(libfs_ops_t *, fs_handle_t, ipc_call_t *); 78 79 static void vfs_out_fsprobe(ipc_call_t *req) 85 80 { 86 81 service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req); … … 88 83 vfs_fs_probe_info_t info; 89 84 90 cap_call_handle_t chandle;85 ipc_call_t call; 91 86 size_t size; 92 if ((!async_data_read_receive(&c handle, &size)) ||87 if ((!async_data_read_receive(&call, &size)) || 93 88 (size != sizeof(info))) { 94 async_answer_0( chandle, EIO);95 async_answer_0(req _handle, EIO);89 async_answer_0(&call, EIO); 90 async_answer_0(req, EIO); 96 91 return; 97 92 } … … 100 95 rc = vfs_out_ops->fsprobe(service_id, &info); 101 96 if (rc != EOK) { 102 async_answer_0( chandle, EIO);103 async_answer_0(req _handle, rc);97 async_answer_0(&call, EIO); 98 async_answer_0(req, rc); 104 99 return; 105 100 } 106 101 107 async_data_read_finalize( chandle, &info, sizeof(info));108 async_answer_0(req _handle, EOK);109 } 110 111 static void vfs_out_mounted( cap_call_handle_t req_handle,ipc_call_t *req)102 async_data_read_finalize(&call, &info, sizeof(info)); 103 async_answer_0(req, EOK); 104 } 105 106 static void vfs_out_mounted(ipc_call_t *req) 112 107 { 113 108 service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req); … … 118 113 rc = async_data_write_accept((void **) &opts, true, 0, 0, 0, NULL); 119 114 if (rc != EOK) { 120 async_answer_0(req _handle, rc);115 async_answer_0(req, rc); 121 116 return; 122 117 } … … 127 122 128 123 if (rc == EOK) { 129 async_answer_3(req _handle, EOK, index, LOWER32(size),124 async_answer_3(req, EOK, index, LOWER32(size), 130 125 UPPER32(size)); 131 126 } else 132 async_answer_0(req _handle, rc);127 async_answer_0(req, rc); 133 128 134 129 free(opts); 135 130 } 136 131 137 static void vfs_out_unmounted( cap_call_handle_t req_handle,ipc_call_t *req)132 static void vfs_out_unmounted(ipc_call_t *req) 138 133 { 139 134 service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req); … … 142 137 rc = vfs_out_ops->unmounted(service_id); 143 138 144 async_answer_0(req _handle, rc);145 } 146 147 static void vfs_out_link( cap_call_handle_t req_handle,ipc_call_t *req)148 { 149 libfs_link(libfs_ops, reg.fs_handle, req _handle, req);150 } 151 152 static void vfs_out_lookup( cap_call_handle_t req_handle,ipc_call_t *req)153 { 154 libfs_lookup(libfs_ops, reg.fs_handle, req _handle, req);155 } 156 157 static void vfs_out_read( cap_call_handle_t req_handle,ipc_call_t *req)139 async_answer_0(req, rc); 140 } 141 142 static void vfs_out_link(ipc_call_t *req) 143 { 144 libfs_link(libfs_ops, reg.fs_handle, req); 145 } 146 147 static void vfs_out_lookup(ipc_call_t *req) 148 { 149 libfs_lookup(libfs_ops, reg.fs_handle, req); 150 } 151 152 static void vfs_out_read(ipc_call_t *req) 158 153 { 159 154 service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req); … … 167 162 168 163 if (rc == EOK) 169 async_answer_1(req _handle, EOK, rbytes);164 async_answer_1(req, EOK, rbytes); 170 165 else 171 async_answer_0(req _handle, rc);172 } 173 174 static void vfs_out_write( cap_call_handle_t req_handle,ipc_call_t *req)166 async_answer_0(req, rc); 167 } 168 169 static void vfs_out_write(ipc_call_t *req) 175 170 { 176 171 service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req); … … 185 180 186 181 if (rc == EOK) { 187 async_answer_3(req _handle, EOK, wbytes, LOWER32(nsize),182 async_answer_3(req, EOK, wbytes, LOWER32(nsize), 188 183 UPPER32(nsize)); 189 184 } else 190 async_answer_0(req _handle, rc);191 } 192 193 static void vfs_out_truncate( cap_call_handle_t req_handle,ipc_call_t *req)185 async_answer_0(req, rc); 186 } 187 188 static void vfs_out_truncate(ipc_call_t *req) 194 189 { 195 190 service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req); … … 201 196 rc = vfs_out_ops->truncate(service_id, index, size); 202 197 203 async_answer_0(req _handle, rc);204 } 205 206 static void vfs_out_close( cap_call_handle_t req_handle,ipc_call_t *req)198 async_answer_0(req, rc); 199 } 200 201 static void vfs_out_close(ipc_call_t *req) 207 202 { 208 203 service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req); … … 212 207 rc = vfs_out_ops->close(service_id, index); 213 208 214 async_answer_0(req _handle, rc);215 } 216 217 static void vfs_out_destroy( cap_call_handle_t req_handle,ipc_call_t *req)209 async_answer_0(req, rc); 210 } 211 212 static void vfs_out_destroy(ipc_call_t *req) 218 213 { 219 214 service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req); … … 229 224 rc = vfs_out_ops->destroy(service_id, index); 230 225 } 231 async_answer_0(req _handle, rc);232 } 233 234 static void vfs_out_open_node( cap_call_handle_t req_handle,ipc_call_t *req)235 { 236 libfs_open_node(libfs_ops, reg.fs_handle, req _handle, req);237 } 238 239 static void vfs_out_stat( cap_call_handle_t req_handle,ipc_call_t *req)240 { 241 libfs_stat(libfs_ops, reg.fs_handle, req _handle, req);242 } 243 244 static void vfs_out_sync( cap_call_handle_t req_handle,ipc_call_t *req)226 async_answer_0(req, rc); 227 } 228 229 static void vfs_out_open_node(ipc_call_t *req) 230 { 231 libfs_open_node(libfs_ops, reg.fs_handle, req); 232 } 233 234 static void vfs_out_stat(ipc_call_t *req) 235 { 236 libfs_stat(libfs_ops, reg.fs_handle, req); 237 } 238 239 static void vfs_out_sync(ipc_call_t *req) 245 240 { 246 241 service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req); … … 250 245 rc = vfs_out_ops->sync(service_id, index); 251 246 252 async_answer_0(req _handle, rc);253 } 254 255 static void vfs_out_statfs( cap_call_handle_t req_handle,ipc_call_t *req)256 { 257 libfs_statfs(libfs_ops, reg.fs_handle, req _handle, req);258 } 259 260 static void vfs_out_is_empty( cap_call_handle_t req_handle,ipc_call_t *req)247 async_answer_0(req, rc); 248 } 249 250 static void vfs_out_statfs(ipc_call_t *req) 251 { 252 libfs_statfs(libfs_ops, reg.fs_handle, req); 253 } 254 255 static void vfs_out_is_empty(ipc_call_t *req) 261 256 { 262 257 service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req); … … 267 262 rc = libfs_ops->node_get(&node, service_id, index); 268 263 if (rc != EOK) 269 async_answer_0(req _handle, rc);264 async_answer_0(req, rc); 270 265 if (node == NULL) 271 async_answer_0(req _handle, EINVAL);266 async_answer_0(req, EINVAL); 272 267 273 268 bool children = false; … … 276 271 277 272 if (rc != EOK) 278 async_answer_0(req_handle, rc); 279 async_answer_0(req_handle, children ? ENOTEMPTY : EOK); 280 } 281 282 static void vfs_connection(cap_call_handle_t icall_handle, ipc_call_t *icall, 283 void *arg) 284 { 285 if (icall_handle) { 273 async_answer_0(req, rc); 274 async_answer_0(req, children ? ENOTEMPTY : EOK); 275 } 276 277 static void vfs_connection(ipc_call_t *icall, void *arg) 278 { 279 if (icall->cap_handle) { 286 280 /* 287 281 * This only happens for connections opened by … … 289 283 * created by IPC_M_CONNECT_TO_ME. 290 284 */ 291 async_answer_0(icall _handle, EOK);285 async_answer_0(icall, EOK); 292 286 } 293 287 294 288 while (true) { 295 289 ipc_call_t call; 296 cap_call_handle_t chandle =async_get_call(&call);290 async_get_call(&call); 297 291 298 292 if (!IPC_GET_IMETHOD(call)) … … 301 295 switch (IPC_GET_IMETHOD(call)) { 302 296 case VFS_OUT_FSPROBE: 303 vfs_out_fsprobe( chandle,&call);297 vfs_out_fsprobe(&call); 304 298 break; 305 299 case VFS_OUT_MOUNTED: 306 vfs_out_mounted( chandle,&call);300 vfs_out_mounted(&call); 307 301 break; 308 302 case VFS_OUT_UNMOUNTED: 309 vfs_out_unmounted( chandle,&call);303 vfs_out_unmounted(&call); 310 304 break; 311 305 case VFS_OUT_LINK: 312 vfs_out_link( chandle,&call);306 vfs_out_link(&call); 313 307 break; 314 308 case VFS_OUT_LOOKUP: 315 vfs_out_lookup( chandle,&call);309 vfs_out_lookup(&call); 316 310 break; 317 311 case VFS_OUT_READ: 318 vfs_out_read( chandle,&call);312 vfs_out_read(&call); 319 313 break; 320 314 case VFS_OUT_WRITE: 321 vfs_out_write( chandle,&call);315 vfs_out_write(&call); 322 316 break; 323 317 case VFS_OUT_TRUNCATE: 324 vfs_out_truncate( chandle,&call);318 vfs_out_truncate(&call); 325 319 break; 326 320 case VFS_OUT_CLOSE: 327 vfs_out_close( chandle,&call);321 vfs_out_close(&call); 328 322 break; 329 323 case VFS_OUT_DESTROY: 330 vfs_out_destroy( chandle,&call);324 vfs_out_destroy(&call); 331 325 break; 332 326 case VFS_OUT_OPEN_NODE: 333 vfs_out_open_node( chandle,&call);327 vfs_out_open_node(&call); 334 328 break; 335 329 case VFS_OUT_STAT: 336 vfs_out_stat( chandle,&call);330 vfs_out_stat(&call); 337 331 break; 338 332 case VFS_OUT_SYNC: 339 vfs_out_sync( chandle,&call);333 vfs_out_sync(&call); 340 334 break; 341 335 case VFS_OUT_STATFS: 342 vfs_out_statfs( chandle,&call);336 vfs_out_statfs(&call); 343 337 break; 344 338 case VFS_OUT_IS_EMPTY: 345 vfs_out_is_empty( chandle,&call);339 vfs_out_is_empty(&call); 346 340 break; 347 341 default: 348 async_answer_0( chandle, ENOTSUP);342 async_answer_0(&call, ENOTSUP); 349 343 break; 350 344 } … … 481 475 static errno_t receive_fname(char *buffer) 482 476 { 477 ipc_call_t call; 483 478 size_t size; 484 cap_call_handle_t wcall; 485 486 if (!async_data_write_receive(&wcall, &size)) 479 480 if (!async_data_write_receive(&call, &size)) 487 481 return ENOENT; 482 488 483 if (size > NAME_MAX + 1) { 489 async_answer_0( wcall, ERANGE);484 async_answer_0(&call, ERANGE); 490 485 return ERANGE; 491 486 } 492 return async_data_write_finalize(wcall, buffer, size); 487 488 return async_data_write_finalize(&call, buffer, size); 493 489 } 494 490 495 491 /** Link a file at a path. 492 * 496 493 */ 497 void libfs_link(libfs_ops_t *ops, fs_handle_t fs_handle, 498 cap_call_handle_t req_handle, ipc_call_t *req) 494 void libfs_link(libfs_ops_t *ops, fs_handle_t fs_handle, ipc_call_t *req) 499 495 { 500 496 service_id_t parent_sid = IPC_GET_ARG1(*req); … … 505 501 errno_t rc = receive_fname(component); 506 502 if (rc != EOK) { 507 async_answer_0(req _handle, rc);503 async_answer_0(req, rc); 508 504 return; 509 505 } … … 512 508 rc = ops->node_get(&parent, parent_sid, parent_index); 513 509 if (parent == NULL) { 514 async_answer_0(req _handle, rc == EOK ? EBADF : rc);510 async_answer_0(req, rc == EOK ? EBADF : rc); 515 511 return; 516 512 } … … 519 515 rc = ops->node_get(&child, parent_sid, child_index); 520 516 if (child == NULL) { 521 async_answer_0(req _handle, rc == EOK ? EBADF : rc);517 async_answer_0(req, rc == EOK ? EBADF : rc); 522 518 ops->node_put(parent); 523 519 return; … … 527 523 ops->node_put(parent); 528 524 ops->node_put(child); 529 async_answer_0(req _handle, rc);525 async_answer_0(req, rc); 530 526 } 531 527 … … 535 531 * as returned by the canonify() function. 536 532 * 537 * @param ops libfs operations structure with function pointers to 538 * file system implementation 539 * @param fs_handle File system handle of the file system where to perform 540 * the lookup. 541 * @param req_handle Call handle of the VFS_OUT_LOOKUP request. 542 * @param request VFS_OUT_LOOKUP request data itself. 533 * @param ops libfs operations structure with function pointers to 534 * file system implementation 535 * @param fs_handle File system handle of the file system where to perform 536 * the lookup. 537 * @param req VFS_OUT_LOOKUP request data itself. 543 538 * 544 539 */ 545 void libfs_lookup(libfs_ops_t *ops, fs_handle_t fs_handle, 546 cap_call_handle_t req_handle, ipc_call_t *req) 540 void libfs_lookup(libfs_ops_t *ops, fs_handle_t fs_handle, ipc_call_t *req) 547 541 { 548 542 unsigned first = IPC_GET_ARG1(*req); … … 567 561 rc = ops->node_get(&cur, service_id, index); 568 562 if (rc != EOK) { 569 async_answer_0(req _handle, rc);563 async_answer_0(req, rc); 570 564 goto out; 571 565 } … … 584 578 585 579 if (!ops->is_directory(cur)) { 586 async_answer_0(req _handle, ENOTDIR);580 async_answer_0(req, ENOTDIR); 587 581 goto out; 588 582 } … … 593 587 assert(rc != ERANGE); 594 588 if (rc != EOK) { 595 async_answer_0(req _handle, rc);589 async_answer_0(req, rc); 596 590 goto out; 597 591 } … … 607 601 rc = ops->match(&tmp, cur, component); 608 602 if (rc != EOK) { 609 async_answer_0(req _handle, rc);603 async_answer_0(req, rc); 610 604 goto out; 611 605 } … … 615 609 rc = ops->node_put(par); 616 610 if (rc != EOK) { 617 async_answer_0(req _handle, rc);611 async_answer_0(req, rc); 618 612 goto out; 619 613 } … … 636 630 637 631 if (cur && (lflag & L_FILE) && (ops->is_directory(cur))) { 638 async_answer_0(req _handle, EISDIR);632 async_answer_0(req, EISDIR); 639 633 goto out; 640 634 } 641 635 642 636 if (cur && (lflag & L_DIRECTORY) && (ops->is_file(cur))) { 643 async_answer_0(req _handle, ENOTDIR);637 async_answer_0(req, ENOTDIR); 644 638 goto out; 645 639 } … … 649 643 if (lflag & L_UNLINK) { 650 644 if (!cur) { 651 async_answer_0(req _handle, ENOENT);645 async_answer_0(req, ENOENT); 652 646 goto out; 653 647 } 654 648 if (!par) { 655 async_answer_0(req _handle, EINVAL);649 async_answer_0(req, EINVAL); 656 650 goto out; 657 651 } … … 660 654 if (rc == EOK) { 661 655 aoff64_t size = ops->size_get(cur); 662 async_answer_5(req _handle, EOK, fs_handle,656 async_answer_5(req, EOK, fs_handle, 663 657 ops->index_get(cur), 664 658 (ops->is_directory(cur) << 16) | last, 665 659 LOWER32(size), UPPER32(size)); 666 660 } else { 667 async_answer_0(req _handle, rc);661 async_answer_0(req, rc); 668 662 } 669 663 goto out; … … 674 668 if (lflag & L_CREATE) { 675 669 if (cur && (lflag & L_EXCLUSIVE)) { 676 async_answer_0(req _handle, EEXIST);670 async_answer_0(req, EEXIST); 677 671 goto out; 678 672 } … … 682 676 lflag & (L_FILE | L_DIRECTORY)); 683 677 if (rc != EOK) { 684 async_answer_0(req _handle, rc);678 async_answer_0(req, rc); 685 679 goto out; 686 680 } 687 681 if (!cur) { 688 async_answer_0(req _handle, ENOSPC);682 async_answer_0(req, ENOSPC); 689 683 goto out; 690 684 } … … 694 688 (void) ops->destroy(cur); 695 689 cur = NULL; 696 async_answer_0(req _handle, rc);690 async_answer_0(req, rc); 697 691 goto out; 698 692 } … … 703 697 out1: 704 698 if (!cur) { 705 async_answer_5(req _handle, EOK, fs_handle, ops->index_get(par),699 async_answer_5(req, EOK, fs_handle, ops->index_get(par), 706 700 (ops->is_directory(par) << 16) | last_next, 707 701 LOWER32(ops->size_get(par)), UPPER32(ops->size_get(par))); … … 709 703 } 710 704 711 async_answer_5(req _handle, EOK, fs_handle, ops->index_get(cur),705 async_answer_5(req, EOK, fs_handle, ops->index_get(cur), 712 706 (ops->is_directory(cur) << 16) | last, LOWER32(ops->size_get(cur)), 713 707 UPPER32(ops->size_get(cur))); … … 724 718 } 725 719 726 void libfs_stat(libfs_ops_t *ops, fs_handle_t fs_handle, 727 cap_call_handle_t req_handle, ipc_call_t *request) 728 { 729 service_id_t service_id = (service_id_t) IPC_GET_ARG1(*request); 730 fs_index_t index = (fs_index_t) IPC_GET_ARG2(*request); 720 void libfs_stat(libfs_ops_t *ops, fs_handle_t fs_handle, ipc_call_t *req) 721 { 722 service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req); 723 fs_index_t index = (fs_index_t) IPC_GET_ARG2(*req); 731 724 732 725 fs_node_t *fn; 733 726 errno_t rc = ops->node_get(&fn, service_id, index); 734 on_error(rc, answer_and_return(req _handle, rc));735 736 cap_call_handle_t chandle;727 on_error(rc, answer_and_return(req, rc)); 728 729 ipc_call_t call; 737 730 size_t size; 738 if ((!async_data_read_receive(&c handle, &size)) ||731 if ((!async_data_read_receive(&call, &size)) || 739 732 (size != sizeof(vfs_stat_t))) { 740 733 ops->node_put(fn); 741 async_answer_0( chandle, EINVAL);742 async_answer_0(req _handle, EINVAL);734 async_answer_0(&call, EINVAL); 735 async_answer_0(req, EINVAL); 743 736 return; 744 737 } … … 758 751 ops->node_put(fn); 759 752 760 761 async_data_read_finalize(chandle, &stat, sizeof(vfs_stat_t)); 762 async_answer_0(req_handle, EOK); 763 } 764 765 void libfs_statfs(libfs_ops_t *ops, fs_handle_t fs_handle, 766 cap_call_handle_t req_handle, ipc_call_t *request) 767 { 768 service_id_t service_id = (service_id_t) IPC_GET_ARG1(*request); 769 fs_index_t index = (fs_index_t) IPC_GET_ARG2(*request); 753 async_data_read_finalize(&call, &stat, sizeof(vfs_stat_t)); 754 async_answer_0(req, EOK); 755 } 756 757 void libfs_statfs(libfs_ops_t *ops, fs_handle_t fs_handle, ipc_call_t *req) 758 { 759 service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req); 760 fs_index_t index = (fs_index_t) IPC_GET_ARG2(*req); 770 761 771 762 fs_node_t *fn; 772 763 errno_t rc = ops->node_get(&fn, service_id, index); 773 on_error(rc, answer_and_return(req _handle, rc));774 775 cap_call_handle_t chandle;764 on_error(rc, answer_and_return(req, rc)); 765 766 ipc_call_t call; 776 767 size_t size; 777 if ((!async_data_read_receive(&c handle, &size)) ||768 if ((!async_data_read_receive(&call, &size)) || 778 769 (size != sizeof(vfs_statfs_t))) { 779 770 goto error; … … 804 795 805 796 ops->node_put(fn); 806 async_data_read_finalize( chandle, &st, sizeof(vfs_statfs_t));807 async_answer_0(req _handle, EOK);797 async_data_read_finalize(&call, &st, sizeof(vfs_statfs_t)); 798 async_answer_0(req, EOK); 808 799 return; 809 800 810 801 error: 811 802 ops->node_put(fn); 812 async_answer_0( chandle, EINVAL);813 async_answer_0(req _handle, EINVAL);803 async_answer_0(&call, EINVAL); 804 async_answer_0(req, EINVAL); 814 805 } 815 806 … … 817 808 /** Open VFS triplet. 818 809 * 819 * @param ops libfs operations structure with function pointers to 820 * file system implementation 821 * @param req_handle Call handle of the VFS_OUT_OPEN_NODE request. 822 * @param request VFS_OUT_OPEN_NODE request data itself. 810 * @param ops libfs operations structure with function pointers to 811 * file system implementation 812 * @param req VFS_OUT_OPEN_NODE request data itself. 823 813 * 824 814 */ 825 void libfs_open_node(libfs_ops_t *ops, fs_handle_t fs_handle, 826 cap_call_handle_t req_handle, ipc_call_t *request) 827 { 828 service_id_t service_id = IPC_GET_ARG1(*request); 829 fs_index_t index = IPC_GET_ARG2(*request); 815 void libfs_open_node(libfs_ops_t *ops, fs_handle_t fs_handle, ipc_call_t *req) 816 { 817 service_id_t service_id = IPC_GET_ARG1(*req); 818 fs_index_t index = IPC_GET_ARG2(*req); 830 819 831 820 fs_node_t *fn; 832 821 errno_t rc = ops->node_get(&fn, service_id, index); 833 on_error(rc, answer_and_return(req _handle, rc));822 on_error(rc, answer_and_return(req, rc)); 834 823 835 824 if (fn == NULL) { 836 async_answer_0(req _handle, ENOENT);825 async_answer_0(req, ENOENT); 837 826 return; 838 827 } … … 840 829 rc = ops->node_open(fn); 841 830 aoff64_t size = ops->size_get(fn); 842 async_answer_4(req _handle, rc, LOWER32(size), UPPER32(size),831 async_answer_4(req, rc, LOWER32(size), UPPER32(size), 843 832 ops->lnkcnt_get(fn), 844 833 (ops->is_file(fn) ? L_FILE : 0) | … … 891 880 { 892 881 fibril_mutex_lock(&instances_mutex); 882 893 883 list_foreach(instances_list, link, fs_instance_t, inst) { 894 884 if (inst->service_id == service_id) { … … 898 888 } 899 889 } 890 900 891 fibril_mutex_unlock(&instances_mutex); 901 892 return ENOENT; … … 905 896 { 906 897 fibril_mutex_lock(&instances_mutex); 898 907 899 list_foreach(instances_list, link, fs_instance_t, inst) { 908 900 if (inst->service_id == service_id) { … … 913 905 } 914 906 } 907 915 908 fibril_mutex_unlock(&instances_mutex); 916 909 return ENOENT;
Note:
See TracChangeset
for help on using the changeset viewer.