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