Lines Matching defs:opc
75 puffs_cookie_t opc, enum perfuse_qtype);
76 static int dequeue_requests(puffs_cookie_t opc, enum perfuse_qtype, int);
108 #define PN_ISDIR(opc) \
109 (puffs_pn_getvap((struct puffs_node *)opc)->va_type == VDIR)
113 print_node(const char *func, puffs_cookie_t opc)
119 pn = (struct puffs_node *)opc;
120 pnd = PERFUSE_NODE_DATA(opc);
123 printf("%s: \"%s\", opc = %p, nodeid = 0x%"PRIx64" ino = %"PRIu64"\n",
124 func, pnd->pnd_name, opc, pnd->pnd_nodeid, vap->va_fileid);
131 perfuse_node_close_common(struct puffs_usermount *pu, puffs_cookie_t opc,
144 pn = (struct puffs_node *)opc;
147 if (PN_ISDIR(opc)) {
161 fh = perfuse_get_fh(opc, mode);
173 pm = ps->ps_new_msg(pu, opc, op, sizeof(*fri), NULL);
183 DPRINTF("%s: opc = %p, nodeid = 0x%"PRIx64", fh = 0x%"PRIx64"\n",
184 __func__, (void *)opc, pnd->pnd_nodeid, fri->fh);
187 if ((error = xchg_msg(pu, opc, pm,
198 xchg_msg(struct puffs_usermount *pu, puffs_cookie_t opc, perfuse_msg_t *pm,
208 if ((struct puffs_node *)opc != NULL)
209 pnd = PERFUSE_NODE_DATA(opc);
212 if ((perfuse_diagflags & PDF_FILENAME) && (opc != 0))
214 perfuse_node_path(ps, opc),
215 ((struct puffs_node *)opc)->pn_va.va_fileid,
216 PERFUSE_NODE_DATA(opc)->pnd_flags);
226 pt = perfuse_trace_begin(ps, opc, pm);
243 (void)dequeue_requests(opc, PCQ_AFTERXCHG, DEQUEUE_ALL);
250 mode_access(puffs_cookie_t opc, const struct puffs_cred *pcr, mode_t mode)
263 pn = (struct puffs_node *)opc;
271 sticky_access(puffs_cookie_t opc, struct puffs_node *targ,
292 sticky = puffs_pn_getvap(opc)->va_mode & S_ISTXT;
294 parent_owner = puffs_pn_getvap(opc)->va_uid == uid;
388 node_lookup_common(struct puffs_usermount *pu, puffs_cookie_t opc,
403 if (PERFUSE_NODE_DATA(opc)->pnd_flags & PND_REMOVED)
413 DPRINTF("%s: opc = %p, file = \"%s\" looking up \"%s\"\n",
414 __func__, (void *)opc,
415 perfuse_node_path(ps, opc), path);
420 if (PERFUSE_NODE_DATA(opc)->pnd_flags & PND_RECLAIMED)
422 "looking up reclaimed node opc = %p, name = \"%s\"",
423 opc, path);
425 if (PERFUSE_NODE_DATA(opc)->pnd_flags & PND_INVALID)
427 "looking up freed node opc = %p, name = \"%s\"",
428 opc, path);
432 pm = ps->ps_new_msg(pu, opc, FUSE_LOOKUP, len, pcr);
435 if ((error = xchg_msg(pu, opc, pm, sizeof(*feo), wait_reply)) != 0)
465 pn = perfuse_new_pn(pu, path, opc);
473 "reclaimed in lookup opc = %p, name = \"%s\", ck = %p",
474 opc, path, pn);
478 "freed in lookup opc = %p, name = \"%s\", ck = %p",
479 opc, path, pn);
491 DPRINTF("%s: opc = %p, looked up opc = %p, "
493 (void *)opc, pn, feo->nodeid, path);
520 node_mk_common(struct puffs_usermount *pu, puffs_cookie_t opc,
531 if ((error = xchg_msg(pu, opc, pm, sizeof(*feo), wait_reply)) != 0)
538 pn = perfuse_new_pn(pu, pcn->pcn_name, opc);
556 DPRINTF("%s: opc = %p, file = \"%s\", flags = 0x%x "
564 PERFUSE_NODE_DATA(opc)->pnd_flags |= PND_DIRTY;
591 opc,
604 dents = PERFUSE_NODE_DATA(opc)->pnd_dirent;
605 dents_len = (size_t)PERFUSE_NODE_DATA(opc)->pnd_dirent_len;
629 dents = PERFUSE_NODE_DATA(opc)->pnd_dirent;
633 PERFUSE_NODE_DATA(opc)->pnd_dirent = dents;
634 PERFUSE_NODE_DATA(opc)->pnd_dirent_len = dents_len;
652 struct perfuse_node_data *pnd = PERFUSE_NODE_DATA(opc);
668 error = node_lookup_common(pu, opc, NULL,
734 PERFUSE_NODE_DATA(opc)->pnd_dirent_len = written;
740 readdir_buffered(puffs_cookie_t opc, struct dirent *dent, off_t *readoff,
747 pnd = PERFUSE_NODE_DATA(opc);
783 node_ref(puffs_cookie_t opc)
785 struct perfuse_node_data *pnd = PERFUSE_NODE_DATA(opc);
789 DERRX(EX_SOFTWARE, "Use of freed node opc = %p", opc);
797 node_rele(puffs_cookie_t opc)
799 struct perfuse_node_data *pnd = PERFUSE_NODE_DATA(opc);
803 DERRX(EX_SOFTWARE, "Use of freed node opc = %p", opc);
809 (void)dequeue_requests(opc, PCQ_REF, DEQUEUE_ALL);
815 requeue_request(struct puffs_usermount *pu, puffs_cookie_t opc,
821 pnd = PERFUSE_NODE_DATA(opc);
828 DPRINTF("%s: REQUEUE opc = %p, pcc = %p (%s)\n",
829 __func__, (void *)opc, pcq.pcq_cc,
838 DPRINTF("%s: RESUME opc = %p, pcc = %p (%s)\n",
839 __func__, (void *)opc, pcq.pcq_cc,
847 dequeue_requests(puffs_cookie_t opc, enum perfuse_qtype type, int max)
853 pnd = PERFUSE_NODE_DATA(opc);
861 DPRINTF("%s: SCHEDULE opc = %p, pcc = %p (%s)\n",
862 __func__, (void *)opc, pcq->pcq_cc,
873 DPRINTF("%s: DONE opc = %p\n", __func__, (void *)opc);
927 puffs_cookie_t opc;
931 opc = (puffs_cookie_t)puffs_getroot(pu);
937 pm = ps->ps_new_msg(pu, opc, FUSE_DESTROY, 0, NULL);
939 if ((error = xchg_msg(pu, opc, pm, UNSPEC_REPLY_LEN, wait_reply)) != 0){
962 puffs_cookie_t opc;
967 opc = (puffs_cookie_t)puffs_getroot(pu);
973 pm = ps->ps_new_msg(pu, opc, FUSE_STATFS, 0, NULL);
975 if ((error = xchg_msg(pu, opc, pm, sizeof(*fso), wait_reply)) != 0)
982 svfsb->f_iosize = ((struct puffs_node *)opc)->pn_va.va_blocksize;
1070 perfuse_node_lookup(struct puffs_usermount *pu, puffs_cookie_t opc,
1079 node_ref(opc);
1099 if ((error = mode_access(opc, pcn->pcn_cred, mode)) != 0)
1102 error = node_lookup_common(pu, (puffs_cookie_t)opc, pni,
1112 if ((opc == (puffs_cookie_t)pn) && (strcmp(pcn->pcn_name, ".") != 0)) {
1114 pcn->pcn_name, perfuse_node_path(ps, opc));
1136 error = sticky_access(opc, pn, pcn->pcn_cred);
1152 node_rele(opc);
1157 perfuse_node_create(struct puffs_usermount *pu, puffs_cookie_t opc,
1172 if (PERFUSE_NODE_DATA(opc)->pnd_flags & PND_REMOVED)
1175 node_ref(opc);
1183 error = node_lookup_common(pu, opc, NULL, pcn->pcn_name,
1191 error = perfuse_node_mknod(pu, opc, pni, pcn, vap);
1195 error = node_lookup_common(pu, opc, NULL, pcn->pcn_name,
1223 pm = ps->ps_new_msg(pu, opc, FUSE_CREATE, len, pcn->pcn_cred);
1231 if ((error = xchg_msg(pu, opc, pm, len, wait_reply)) != 0) {
1238 error = perfuse_node_create(pu, opc, pni, pcn, vap);
1253 pn = perfuse_new_pn(pu, name, opc);
1271 DPRINTF("%s: opc = %p, file = \"%s\", flags = 0x%x "
1282 node_rele(opc);
1288 perfuse_node_mknod(struct puffs_usermount *pu, puffs_cookie_t opc,
1299 if (PERFUSE_NODE_DATA(opc)->pnd_flags & PND_REMOVED)
1302 node_ref(opc);
1332 pm = ps->ps_new_msg(pu, opc, FUSE_MKNOD, len, pcn->pcn_cred);
1339 error = node_mk_common(pu, opc, pni, pcn, pm);
1342 node_rele(opc);
1348 perfuse_node_open(struct puffs_usermount *pu, puffs_cookie_t opc, int mode,
1351 return perfuse_node_open2(pu, opc, mode, pcr, NULL);
1355 perfuse_node_open2(struct puffs_usermount *pu, puffs_cookie_t opc, int mode,
1368 pnd = PERFUSE_NODE_DATA(opc);
1374 node_ref(opc);
1376 if (PN_ISDIR(opc))
1431 requeue_request(pu, opc, PCQ_OPEN);
1441 pm = ps->ps_new_msg(pu, opc, op, sizeof(*foi), pcr);
1446 if ((error = xchg_msg(pu, opc, pm, sizeof(*foo), wait_reply)) != 0)
1455 perfuse_new_fh(opc, foo->fh, mode);
1465 DPRINTF("%s: opc = %p, file = \"%s\", "
1467 __func__, (void *)opc, perfuse_node_path(ps, opc),
1476 (void)dequeue_requests(opc, PCQ_OPEN, DEQUEUE_ALL);
1478 node_rele(opc);
1484 perfuse_node_close(struct puffs_usermount *pu, puffs_cookie_t opc, int flags,
1489 pnd = PERFUSE_NODE_DATA(opc);
1501 perfuse_node_access(struct puffs_usermount *pu, puffs_cookie_t opc, int mode,
1509 if (PERFUSE_NODE_DATA(opc)->pnd_flags & PND_REMOVED)
1512 node_ref(opc);
1523 vap = puffs_pn_getvap((struct puffs_node *)opc);
1535 pm = ps->ps_new_msg(pu, opc, FUSE_ACCESS, sizeof(*fai), pcr);
1542 error = xchg_msg(pu, opc, pm, NO_PAYLOAD_REPLY_LEN, wait_reply);
1551 error = perfuse_node_access(pu, opc, mode, pcr);
1555 node_rele(opc);
1560 perfuse_node_getattr(struct puffs_usermount *pu, puffs_cookie_t opc,
1563 return perfuse_node_getattr_ttl(pu, opc, vap, pcr, NULL);
1567 perfuse_node_getattr_ttl(struct puffs_usermount *pu, puffs_cookie_t opc,
1573 struct perfuse_node_data *pnd = PERFUSE_NODE_DATA(opc);
1581 node_ref(opc);
1587 requeue_request(pu, opc, PCQ_RESIZE);
1596 pm = ps->ps_new_msg(pu, opc, FUSE_GETATTR, sizeof(*fgi), pcr);
1602 if (!PN_ISDIR(opc) && PERFUSE_NODE_DATA(opc)->pnd_flags & PND_OPEN) {
1603 fgi->fh = perfuse_get_fh(opc, FREAD);
1609 DPRINTF(">> %s %p %" PRIu64 "\n", __func__, (void *)opc,
1613 if ((error = xchg_msg(pu, opc, pm, sizeof(*fao), wait_reply)) != 0)
1621 (void *)opc, vap->va_size, fao->attr.size);
1641 (void)dequeue_requests(opc, PCQ_RESIZE, DEQUEUE_ALL);
1643 node_rele(opc);
1648 perfuse_node_setattr(struct puffs_usermount *pu, puffs_cookie_t opc,
1651 return perfuse_node_setattr_ttl(pu, opc,
1656 perfuse_node_setattr_ttl(struct puffs_usermount *pu, puffs_cookie_t opc,
1674 pnd = PERFUSE_NODE_DATA(opc);
1689 old_va = puffs_pn_getvap((struct puffs_node *)opc);
1697 (error = mode_access(opc, pcr, PUFFS_VWRITE)) != 0)
1734 node_ref(opc);
1736 if (!PN_ISDIR(opc) && pnd->pnd_flags & PND_WFH)
1737 fh = perfuse_get_fh(opc, FWRITE);
1755 if ((error = perfuse_node_setattr_ttl(pu, opc, &resize_va,
1762 pm = ps->ps_new_msg(pu, opc, FUSE_SETATTR, sizeof(*fsi), pcr);
1787 requeue_request(pu, opc, PCQ_RESIZE);
1877 old_vap = puffs_pn_getvap((struct puffs_node *)opc);
1884 (void *)opc,
1885 puffs_pn_getvap((struct puffs_node *)opc)->va_size,
1899 if ((error = xchg_msg(pu, opc, pm, sizeof(*fao), reply)) != 0)
1913 (void *)opc, old_vap->va_size, fao->attr.size);
1930 (void)dequeue_requests(opc, PCQ_RESIZE, DEQUEUE_ALL);
1934 node_rele(opc);
1939 perfuse_node_poll(struct puffs_usermount *pu, puffs_cookie_t opc, int *events)
1947 node_ref(opc);
1960 pm = ps->ps_new_msg(pu, opc, FUSE_POLL, sizeof(*fpi), NULL);
1962 fpi->fh = PN_ISDIR(opc) ? FUSE_UNKNOWN_FH : perfuse_get_fh(opc, FREAD);
1968 DPRINTF("%s: opc = %p, nodeid = 0x%"PRIx64", "
1969 "fh = 0x%"PRIx64"\n", __func__, (void *)opc,
1970 PERFUSE_NODE_DATA(opc)->pnd_nodeid, fpi->fh);
1972 if ((error = xchg_msg(pu, opc, pm, sizeof(*fpo), wait_reply)) != 0)
1982 node_rele(opc);
1988 perfuse_node_fsync(struct puffs_usermount *pu, puffs_cookie_t opc,
2001 pnd = PERFUSE_NODE_DATA(opc);
2016 node_ref(opc);
2018 if (PN_ISDIR(opc))
2029 DPRINTF("%s: TEST opc = %p, file = \"%s\" is %sdirty\n",
2030 __func__, (void*)opc, perfuse_node_path(ps, opc),
2046 if ((error = perfuse_node_open(pu, opc, FREAD, pcr)) != 0)
2051 fh = perfuse_get_fh(opc, FREAD);
2053 fh = perfuse_get_fh(opc, FWRITE);
2058 pm = ps->ps_new_msg(pu, opc, op, sizeof(*ffi), pcr);
2065 DPRINTF("%s: opc = %p, nodeid = 0x%"PRIx64", fh = 0x%"PRIx64"\n",
2066 __func__, (void *)opc,
2067 PERFUSE_NODE_DATA(opc)->pnd_nodeid, ffi->fh);
2070 if ((error = xchg_msg(pu, opc, pm,
2082 DPRINTF("%s: CLEAR opc = %p, file = \"%s\"\n",
2083 __func__, (void*)opc, perfuse_node_path(ps, opc));
2096 node_rele(opc);
2101 perfuse_node_remove(struct puffs_usermount *pu, puffs_cookie_t opc,
2112 pnd = PERFUSE_NODE_DATA(opc);
2123 DPRINTF("%s: opc = %p, remove opc = %p, file = \"%s\"\n",
2124 __func__, (void *)opc, (void *)targ, pcn->pcn_name);
2126 node_ref(opc);
2138 pnd = PERFUSE_NODE_DATA(opc);
2142 pm = ps->ps_new_msg(pu, opc, FUSE_UNLINK, len, pcn->pcn_cred);
2146 if ((error = xchg_msg(pu, opc, pm, UNSPEC_REPLY_LEN, wait_reply)) != 0)
2158 PERFUSE_NODE_DATA(opc)->pnd_flags |= PND_DIRTY;
2170 node_rele(opc);
2176 perfuse_node_link(struct puffs_usermount *pu, puffs_cookie_t opc,
2187 if (PERFUSE_NODE_DATA(opc)->pnd_flags & PND_REMOVED)
2190 node_ref(opc);
2197 pm = ps->ps_new_msg(pu, opc, FUSE_LINK, len, pcn->pcn_cred);
2202 if ((error = xchg_msg(pu, opc, pm, UNSPEC_REPLY_LEN, wait_reply)) != 0)
2209 node_rele(opc);
2215 perfuse_node_rename(struct puffs_usermount *pu, puffs_cookie_t opc,
2232 if ((PERFUSE_NODE_DATA(opc)->pnd_flags & PND_REMOVED) ||
2237 node_ref(opc);
2261 pm = ps->ps_new_msg(pu, opc, FUSE_RENAME, len, pcn_targ->pcn_cred);
2269 if ((error = xchg_msg(pu, opc, pm, UNSPEC_REPLY_LEN, wait_reply)) != 0)
2279 if (opc != targ_dir)
2288 PERFUSE_NODE_DATA(opc)->pnd_flags |= PND_DIRTY;
2301 PERFUSE_NODE_DATA(opc)->pnd_nodeid,
2310 node_rele(opc);
2319 perfuse_node_mkdir(struct puffs_usermount *pu, puffs_cookie_t opc,
2330 if (PERFUSE_NODE_DATA(opc)->pnd_flags & PND_REMOVED)
2333 node_ref(opc);
2338 pm = ps->ps_new_msg(pu, opc, FUSE_MKDIR, len, pcn->pcn_cred);
2344 error = node_mk_common(pu, opc, pni, pcn, pm);
2346 node_rele(opc);
2352 perfuse_node_rmdir(struct puffs_usermount *pu, puffs_cookie_t opc,
2363 pnd = PERFUSE_NODE_DATA(opc);
2375 node_ref(opc);
2390 pm = ps->ps_new_msg(pu, opc, FUSE_RMDIR, len, pcn->pcn_cred);
2394 if ((error = xchg_msg(pu, opc, pm, UNSPEC_REPLY_LEN, wait_reply)) != 0)
2406 PERFUSE_NODE_DATA(opc)->pnd_flags |= PND_DIRTY;
2418 node_rele(opc);
2426 perfuse_node_symlink(struct puffs_usermount *pu, puffs_cookie_t opc,
2439 if (PERFUSE_NODE_DATA(opc)->pnd_flags & PND_REMOVED)
2442 node_ref(opc);
2449 pm = ps->ps_new_msg(pu, opc, FUSE_SYMLINK, len, pcn_src->pcn_cred);
2455 error = node_mk_common(pu, opc, pni, pcn_src, pm);
2457 node_rele(opc);
2463 perfuse_node_readdir(struct puffs_usermount *pu, puffs_cookie_t opc,
2480 node_ref(opc);
2489 pnd = PERFUSE_NODE_DATA(opc);
2491 requeue_request(pu, opc, PCQ_READDIR);
2496 DPRINTF("%s: READDIR opc = %p enter critical section\n",
2497 __func__, (void *)opc);
2517 if ((error = perfuse_node_open(pu, opc, FREAD, pcr)) != 0)
2521 fh = perfuse_get_fh(opc, FREAD);
2525 DPRINTF("%s: opc = %p, nodeid = 0x%"PRIx64", "
2526 "rfh = 0x%"PRIx64"\n", __func__, (void *)opc,
2527 PERFUSE_NODE_DATA(opc)->pnd_nodeid, fh);
2538 pm = ps->ps_new_msg(pu, opc, FUSE_READDIR, sizeof(*fri), pcr);
2551 if ((error = xchg_msg(pu, opc, pm,
2606 if (fuse_to_dirent(pu, opc, pnd->pnd_all_fd,
2619 readdir_buffered(opc, dent, readoff, reslen);
2625 (void)dequeue_requests(opc, PCQ_READDIR, DEQUEUE_ALL);
2629 DPRINTF("%s: READDIR opc = %p exit critical section\n",
2630 __func__, (void *)opc);
2633 node_rele(opc);
2638 perfuse_node_readlink(struct puffs_usermount *pu, puffs_cookie_t opc,
2647 if (PERFUSE_NODE_DATA(opc)->pnd_flags & PND_REMOVED)
2650 node_ref(opc);
2653 pm = ps->ps_new_msg(pu, opc, FUSE_READLINK, 0, pcr);
2655 if ((error = xchg_msg(pu, opc, pm, UNSPEC_REPLY_LEN, wait_reply)) != 0)
2680 node_rele(opc);
2686 puffs_cookie_t opc, int nlookup)
2695 DPRINTF("%s called with opc = %p, nlookup = %d\n",
2696 __func__, (void *)opc, nlookup);
2698 if (opc == 0 || nlookup == 0) {
2703 pnd = PERFUSE_NODE_DATA(opc);
2714 perfuse_node_path(ps, opc), pnd->pnd_nodeid,
2726 node_ref(opc);
2733 perfuse_node_path(ps, opc), pnd->pnd_nodeid,
2748 perfuse_cache_flush(opc);
2755 requeue_request(pu, opc, PCQ_REF);
2760 DERRX(EX_SOFTWARE, "%s: opc = %p \"%s\": still open",
2761 __func__, opc, pnd->pnd_name);
2765 DERRX(EX_SOFTWARE, "%s: opc = %p: queued operations",
2766 __func__, opc);
2769 DERRX(EX_SOFTWARE, "%s: opc = %p: ongoing operations",
2770 __func__, opc);
2780 pm = ps->ps_new_msg(pu, opc, FUSE_FORGET,
2788 (void)xchg_msg(pu, opc, pm, UNSPEC_REPLY_LEN, no_reply);
2790 perfuse_destroy_pn(pu, opc);
2796 perfuse_node_reclaim(struct puffs_usermount *pu, puffs_cookie_t opc)
2802 return perfuse_node_reclaim2(pu, opc, 1);
2806 perfuse_node_inactive(struct puffs_usermount *pu, puffs_cookie_t opc)
2811 if (opc == 0)
2814 pnd = PERFUSE_NODE_DATA(opc);
2818 node_ref(opc);
2827 requeue_request(pu, opc, PCQ_AFTERWRITE);
2843 if ((error = perfuse_node_fsync(pu, opc, NULL, 0, 0, 0)) != 0)
2853 if ((error = perfuse_node_close_common(pu, opc, FWRITE)) != 0)
2859 if ((error = perfuse_node_close_common(pu, opc, FREAD)) != 0)
2874 (void)dequeue_requests(opc, PCQ_OPEN, DEQUEUE_ALL);
2880 node_rele(opc);
2887 perfuse_node_print(struct puffs_usermount *pu, puffs_cookie_t opc)
2894 perfuse_node_pathconf(struct puffs_usermount *pu, puffs_cookie_t opc,
2936 pm = ps->ps_new_msg(pu, opc, FUSE_STATFS, 0, NULL);
2938 error = xchg_msg(pu, opc, pm, sizeof(*fso), wait_reply);
2958 perfuse_node_advlock(struct puffs_usermount *pu, puffs_cookie_t opc,
2972 node_ref(opc);
2985 if ((fh = perfuse_get_fh(opc, FREAD)) == FUSE_UNKNOWN_FH) {
3004 pm = ps->ps_new_msg(pu, opc, fop, sizeof(*fli), NULL);
3018 DPRINTF("%s: opc = %p, nodeid = 0x%"PRIx64", fh = 0x%"PRIx64"\n",
3019 __func__, (void *)opc,
3020 PERFUSE_NODE_DATA(opc)->pnd_nodeid, fli->fh);
3023 if ((error = xchg_msg(pu, opc, pm, UNSPEC_REPLY_LEN, wait_reply)) != 0)
3046 PERFUSE_NODE_DATA(opc)->pnd_lock_owner = flo->lk.pid;
3055 PERFUSE_NODE_DATA(opc)->pnd_lock_owner = owner;
3072 node_rele(opc);
3077 perfuse_node_read(struct puffs_usermount *pu, puffs_cookie_t opc, uint8_t *buf,
3091 pnd = PERFUSE_NODE_DATA(opc);
3092 vap = puffs_pn_getvap((struct puffs_node *)opc);
3101 fh = perfuse_get_fh(opc, FREAD); /* Cannot be VDIR */
3111 pm = ps->ps_new_msg(pu, opc, FUSE_READ, sizeof(*fri), pcr);
3123 DPRINTF("%s: opc = %p, nodeid = 0x%"PRIx64", fh = 0x%"PRIx64"\n",
3124 __func__, (void *)opc, pnd->pnd_nodeid, fri->fh);
3126 error = xchg_msg(pu, opc, pm, UNSPEC_REPLY_LEN, wait_reply);
3157 perfuse_node_write(struct puffs_usermount *pu, puffs_cookie_t opc,
3161 return perfuse_node_write2(pu, opc, buf, offset, resid, pcr, ioflag, 0);
3166 perfuse_node_write2(struct puffs_usermount *pu, puffs_cookie_t opc,
3184 pnd = PERFUSE_NODE_DATA(opc);
3185 vap = puffs_pn_getvap((struct puffs_node *)opc);
3193 node_ref(opc);
3200 requeue_request(pu, opc, PCQ_WRITE);
3208 if ((error = perfuse_node_getattr(pu, opc, vap, pcr)) != 0)
3219 requeue_request(pu, opc, PCQ_RESIZE);
3227 (void *)opc, vap->va_size);
3230 fh = perfuse_get_fh(opc, FWRITE); /* Cannot be VDIR */
3253 pm = ps->ps_new_msg(pu, opc, FUSE_WRITE, payload_len, pcr);
3268 DPRINTF("%s: opc = %p, nodeid = 0x%"PRIx64", "
3270 (void *)opc, pnd->pnd_nodeid, fwi->fh);
3272 if ((error = xchg_msg(pu, opc, pm,
3303 (void *)opc, vap->va_size, (long long)offset);
3305 DPRINTF("<< %s %p \n", __func__, (void *)opc);
3330 DPRINTF("%s: DIRTY opc = %p, file = \"%s\"\n",
3331 __func__, (void*)opc, perfuse_node_path(ps, opc));
3340 (void)dequeue_requests(opc, PCQ_RESIZE, DEQUEUE_ALL);
3358 if (dequeue_requests(opc, PCQ_WRITE, 1) == 0)
3359 (void)dequeue_requests(opc, PCQ_AFTERWRITE, DEQUEUE_ALL);
3361 node_rele(opc);
3367 perfuse_cache_write(struct puffs_usermount *pu, puffs_cookie_t opc, size_t size,
3375 perfuse_node_getextattr(struct puffs_usermount *pu, puffs_cookie_t opc,
3394 node_ref(opc);
3400 pm = ps->ps_new_msg(pu, opc, FUSE_GETXATTR, len, pcr);
3406 if ((error = xchg_msg(pu, opc, pm, UNSPEC_REPLY_LEN, wait_reply)) != 0)
3450 node_rele(opc);
3455 perfuse_node_setextattr(struct puffs_usermount *pu, puffs_cookie_t opc,
3473 node_ref(opc);
3481 pm = ps->ps_new_msg(pu, opc, FUSE_SETXATTR, len, pcr);
3491 if ((error = xchg_msg(pu, opc, pm,
3501 node_rele(opc);
3507 perfuse_node_listextattr(struct puffs_usermount *pu, puffs_cookie_t opc,
3524 node_ref(opc);
3529 pm = ps->ps_new_msg(pu, opc, FUSE_LISTXATTR, len, pcr);
3536 if ((error = xchg_msg(pu, opc, pm, UNSPEC_REPLY_LEN, wait_reply)) != 0)
3606 node_rele(opc);
3611 perfuse_node_deleteextattr(struct puffs_usermount *pu, puffs_cookie_t opc,
3625 node_ref(opc);
3631 pm = ps->ps_new_msg(pu, opc, FUSE_REMOVEXATTR, attrnamelen, pcr);
3635 error = xchg_msg(pu, opc, pm, NO_PAYLOAD_REPLY_LEN, wait_reply);
3642 node_rele(opc);
3647 perfuse_node_fallocate(struct puffs_usermount *pu, puffs_cookie_t opc,
3659 node_ref(opc);
3661 pm = ps->ps_new_msg(pu, opc, FUSE_FALLOCATE, sizeof(*fai), NULL);
3664 fai->fh = PN_ISDIR(opc) ? FUSE_UNKNOWN_FH : perfuse_get_fh(opc, FWRITE);
3669 error = xchg_msg(pu, opc, pm, NO_PAYLOAD_REPLY_LEN, wait_reply);
3680 node_rele(opc);