Lines Matching refs:req

85 void v9fs_memwrite(P9Req *req, const void *addr, size_t len)  in v9fs_memwrite()  argument
87 qtest_memwrite(req->qts, req->t_msg + req->t_off, addr, len); in v9fs_memwrite()
88 req->t_off += len; in v9fs_memwrite()
91 void v9fs_memskip(P9Req *req, size_t len) in v9fs_memskip() argument
93 req->r_off += len; in v9fs_memskip()
96 void v9fs_memread(P9Req *req, void *addr, size_t len) in v9fs_memread() argument
98 qtest_memread(req->qts, req->r_msg + req->r_off, addr, len); in v9fs_memread()
99 req->r_off += len; in v9fs_memread()
102 void v9fs_uint8_read(P9Req *req, uint8_t *val) in v9fs_uint8_read() argument
104 v9fs_memread(req, val, 1); in v9fs_uint8_read()
107 void v9fs_uint16_write(P9Req *req, uint16_t val) in v9fs_uint16_write() argument
111 v9fs_memwrite(req, &le_val, 2); in v9fs_uint16_write()
114 void v9fs_uint16_read(P9Req *req, uint16_t *val) in v9fs_uint16_read() argument
116 v9fs_memread(req, val, 2); in v9fs_uint16_read()
120 void v9fs_uint32_write(P9Req *req, uint32_t val) in v9fs_uint32_write() argument
124 v9fs_memwrite(req, &le_val, 4); in v9fs_uint32_write()
127 void v9fs_uint64_write(P9Req *req, uint64_t val) in v9fs_uint64_write() argument
131 v9fs_memwrite(req, &le_val, 8); in v9fs_uint64_write()
134 void v9fs_uint32_read(P9Req *req, uint32_t *val) in v9fs_uint32_read() argument
136 v9fs_memread(req, val, 4); in v9fs_uint32_read()
140 void v9fs_uint64_read(P9Req *req, uint64_t *val) in v9fs_uint64_read() argument
142 v9fs_memread(req, val, 8); in v9fs_uint64_read()
156 void v9fs_string_write(P9Req *req, const char *string) in v9fs_string_write() argument
162 v9fs_uint16_write(req, (uint16_t) len); in v9fs_string_write()
163 v9fs_memwrite(req, string, len); in v9fs_string_write()
166 void v9fs_string_read(P9Req *req, uint16_t *len, char **string) in v9fs_string_read() argument
170 v9fs_uint16_read(req, &local_len); in v9fs_string_read()
176 v9fs_memread(req, *string, local_len); in v9fs_string_read()
179 v9fs_memskip(req, local_len); in v9fs_string_read()
192 P9Req *req = g_new0(P9Req, 1); in v9fs_req_init() local
205 req->qts = global_qtest; in v9fs_req_init()
206 req->v9p = v9p; in v9fs_req_init()
207 req->t_size = total_size; in v9fs_req_init()
208 req->t_msg = guest_alloc(alloc, req->t_size); in v9fs_req_init()
209 v9fs_memwrite(req, &hdr, 7); in v9fs_req_init()
210 req->tag = tag; in v9fs_req_init()
211 return req; in v9fs_req_init()
214 void v9fs_req_send(P9Req *req) in v9fs_req_send() argument
216 QVirtio9P *v9p = req->v9p; in v9fs_req_send()
218 req->r_msg = guest_alloc(alloc, P9_MAX_SIZE); in v9fs_req_send()
219 req->free_head = qvirtqueue_add(req->qts, v9p->vq, req->t_msg, req->t_size, in v9fs_req_send()
221 qvirtqueue_add(req->qts, v9p->vq, req->r_msg, P9_MAX_SIZE, true, false); in v9fs_req_send()
222 qvirtqueue_kick(req->qts, v9p->vdev, v9p->vq, req->free_head); in v9fs_req_send()
223 req->t_off = 0; in v9fs_req_send()
246 void v9fs_req_wait_for_reply(P9Req *req, uint32_t *len) in v9fs_req_wait_for_reply() argument
248 QVirtio9P *v9p = req->v9p; in v9fs_req_wait_for_reply()
250 qvirtio_wait_used_elem(req->qts, v9p->vdev, v9p->vq, req->free_head, len, in v9fs_req_wait_for_reply()
254 void v9fs_req_recv(P9Req *req, uint8_t id) in v9fs_req_recv() argument
258 v9fs_memread(req, &hdr, 7); in v9fs_req_recv()
264 g_assert_cmpint(hdr.tag, ==, req->tag); in v9fs_req_recv()
272 v9fs_uint32_read(req, &err); in v9fs_req_recv()
279 void v9fs_req_free(P9Req *req) in v9fs_req_free() argument
281 guest_free(alloc, req->t_msg); in v9fs_req_free()
282 guest_free(alloc, req->r_msg); in v9fs_req_free()
283 g_free(req); in v9fs_req_free()
287 void v9fs_rlerror(P9Req *req, uint32_t *err) in v9fs_rlerror() argument
289 v9fs_req_recv(req, P9_RLERROR); in v9fs_rlerror()
290 v9fs_uint32_read(req, err); in v9fs_rlerror()
291 v9fs_req_free(req); in v9fs_rlerror()
297 P9Req *req; in v9fs_tversion() local
321 req = v9fs_req_init(opt.client, body_size, P9_TVERSION, opt.tag); in v9fs_tversion()
323 v9fs_uint32_write(req, opt.msize); in v9fs_tversion()
324 v9fs_string_write(req, opt.version); in v9fs_tversion()
325 v9fs_req_send(req); in v9fs_tversion()
328 v9fs_req_wait_for_reply(req, NULL); in v9fs_tversion()
330 v9fs_rlerror(req, &err); in v9fs_tversion()
333 v9fs_rversion(req, &server_len, &server_version); in v9fs_tversion()
337 req = NULL; /* request was freed */ in v9fs_tversion()
341 .req = req, in v9fs_tversion()
346 void v9fs_rversion(P9Req *req, uint16_t *len, char **version) in v9fs_rversion() argument
350 v9fs_req_recv(req, P9_RVERSION); in v9fs_rversion()
351 v9fs_uint32_read(req, &msize); in v9fs_rversion()
356 v9fs_string_read(req, len, version); in v9fs_rversion()
359 v9fs_req_free(req); in v9fs_rversion()
381 P9Req *req = v9fs_req_init(opt.client, 4 + 4 + 2 + 2 + 4, P9_TATTACH, in v9fs_tattach() local
384 v9fs_uint32_write(req, opt.fid); in v9fs_tattach()
385 v9fs_uint32_write(req, P9_NOFID); in v9fs_tattach()
386 v9fs_string_write(req, uname); in v9fs_tattach()
387 v9fs_string_write(req, aname); in v9fs_tattach()
388 v9fs_uint32_write(req, opt.n_uname); in v9fs_tattach()
389 v9fs_req_send(req); in v9fs_tattach()
392 v9fs_req_wait_for_reply(req, NULL); in v9fs_tattach()
394 v9fs_rlerror(req, &err); in v9fs_tattach()
397 v9fs_rattach(req, opt.rattach.qid); in v9fs_tattach()
399 req = NULL; /* request was freed */ in v9fs_tattach()
403 .req = req, in v9fs_tattach()
408 void v9fs_rattach(P9Req *req, v9fs_qid *qid) in v9fs_rattach() argument
410 v9fs_req_recv(req, P9_RATTACH); in v9fs_rattach()
412 v9fs_memread(req, qid, 13); in v9fs_rattach()
414 v9fs_req_free(req); in v9fs_rattach()
420 P9Req *req; in v9fs_twalk() local
447 req = v9fs_req_init(opt.client, body_size, P9_TWALK, opt.tag); in v9fs_twalk()
448 v9fs_uint32_write(req, opt.fid); in v9fs_twalk()
449 v9fs_uint32_write(req, opt.newfid); in v9fs_twalk()
450 v9fs_uint16_write(req, opt.nwname); in v9fs_twalk()
452 v9fs_string_write(req, opt.wnames[i]); in v9fs_twalk()
454 v9fs_req_send(req); in v9fs_twalk()
457 v9fs_req_wait_for_reply(req, NULL); in v9fs_twalk()
459 v9fs_rlerror(req, &err); in v9fs_twalk()
462 v9fs_rwalk(req, opt.rwalk.nwqid, opt.rwalk.wqid); in v9fs_twalk()
464 req = NULL; /* request was freed */ in v9fs_twalk()
471 .req = req, in v9fs_twalk()
476 void v9fs_rwalk(P9Req *req, uint16_t *nwqid, v9fs_qid **wqid) in v9fs_rwalk() argument
480 v9fs_req_recv(req, P9_RWALK); in v9fs_rwalk()
481 v9fs_uint16_read(req, &local_nwqid); in v9fs_rwalk()
487 v9fs_memread(req, *wqid, local_nwqid * 13); in v9fs_rwalk()
489 v9fs_req_free(req); in v9fs_rwalk()
495 P9Req *req; in v9fs_tgetattr() local
506 req = v9fs_req_init(opt.client, 4 + 8, P9_TGETATTR, opt.tag); in v9fs_tgetattr()
507 v9fs_uint32_write(req, opt.fid); in v9fs_tgetattr()
508 v9fs_uint64_write(req, opt.request_mask); in v9fs_tgetattr()
509 v9fs_req_send(req); in v9fs_tgetattr()
512 v9fs_req_wait_for_reply(req, NULL); in v9fs_tgetattr()
514 v9fs_rlerror(req, &err); in v9fs_tgetattr()
517 v9fs_rgetattr(req, opt.rgetattr.attr); in v9fs_tgetattr()
519 req = NULL; /* request was freed */ in v9fs_tgetattr()
522 return (TGetAttrRes) { .req = req }; in v9fs_tgetattr()
532 void v9fs_rgetattr(P9Req *req, v9fs_attr *attr) in v9fs_rgetattr() argument
534 v9fs_req_recv(req, P9_RGETATTR); in v9fs_rgetattr()
536 v9fs_uint64_read(req, &attr->valid); in v9fs_rgetattr()
537 v9fs_memread(req, &attr->qid, 13); in v9fs_rgetattr()
538 v9fs_uint32_read(req, &attr->mode); in v9fs_rgetattr()
539 v9fs_uint32_read(req, &attr->uid); in v9fs_rgetattr()
540 v9fs_uint32_read(req, &attr->gid); in v9fs_rgetattr()
541 v9fs_uint64_read(req, &attr->nlink); in v9fs_rgetattr()
542 v9fs_uint64_read(req, &attr->rdev); in v9fs_rgetattr()
543 v9fs_uint64_read(req, &attr->size); in v9fs_rgetattr()
544 v9fs_uint64_read(req, &attr->blksize); in v9fs_rgetattr()
545 v9fs_uint64_read(req, &attr->blocks); in v9fs_rgetattr()
546 v9fs_uint64_read(req, &attr->atime_sec); in v9fs_rgetattr()
547 v9fs_uint64_read(req, &attr->atime_nsec); in v9fs_rgetattr()
548 v9fs_uint64_read(req, &attr->mtime_sec); in v9fs_rgetattr()
549 v9fs_uint64_read(req, &attr->mtime_nsec); in v9fs_rgetattr()
550 v9fs_uint64_read(req, &attr->ctime_sec); in v9fs_rgetattr()
551 v9fs_uint64_read(req, &attr->ctime_nsec); in v9fs_rgetattr()
552 v9fs_uint64_read(req, &attr->btime_sec); in v9fs_rgetattr()
553 v9fs_uint64_read(req, &attr->btime_nsec); in v9fs_rgetattr()
554 v9fs_uint64_read(req, &attr->gen); in v9fs_rgetattr()
555 v9fs_uint64_read(req, &attr->data_version); in v9fs_rgetattr()
557 v9fs_req_free(req); in v9fs_rgetattr()
563 P9Req *req; in v9fs_treaddir() local
571 req = v9fs_req_init(opt.client, 4 + 8 + 4, P9_TREADDIR, opt.tag); in v9fs_treaddir()
572 v9fs_uint32_write(req, opt.fid); in v9fs_treaddir()
573 v9fs_uint64_write(req, opt.offset); in v9fs_treaddir()
574 v9fs_uint32_write(req, opt.count); in v9fs_treaddir()
575 v9fs_req_send(req); in v9fs_treaddir()
578 v9fs_req_wait_for_reply(req, NULL); in v9fs_treaddir()
580 v9fs_rlerror(req, &err); in v9fs_treaddir()
583 v9fs_rreaddir(req, opt.rreaddir.count, opt.rreaddir.nentries, in v9fs_treaddir()
586 req = NULL; /* request was freed */ in v9fs_treaddir()
589 return (TReadDirRes) { .req = req }; in v9fs_treaddir()
593 void v9fs_rreaddir(P9Req *req, uint32_t *count, uint32_t *nentries, in v9fs_rreaddir() argument
603 v9fs_req_recv(req, P9_RREADDIR); in v9fs_rreaddir()
604 v9fs_uint32_read(req, &local_count); in v9fs_rreaddir()
626 v9fs_memread(req, &e->qid, 13); in v9fs_rreaddir()
627 v9fs_uint64_read(req, &e->offset); in v9fs_rreaddir()
628 v9fs_uint8_read(req, &e->type); in v9fs_rreaddir()
629 v9fs_string_read(req, &slen, &e->name); in v9fs_rreaddir()
637 v9fs_req_free(req); in v9fs_rreaddir()
654 P9Req *req; in v9fs_tlopen() local
661 req = v9fs_req_init(opt.client, 4 + 4, P9_TLOPEN, opt.tag); in v9fs_tlopen()
662 v9fs_uint32_write(req, opt.fid); in v9fs_tlopen()
663 v9fs_uint32_write(req, opt.flags); in v9fs_tlopen()
664 v9fs_req_send(req); in v9fs_tlopen()
667 v9fs_req_wait_for_reply(req, NULL); in v9fs_tlopen()
669 v9fs_rlerror(req, &err); in v9fs_tlopen()
672 v9fs_rlopen(req, opt.rlopen.qid, opt.rlopen.iounit); in v9fs_tlopen()
674 req = NULL; /* request was freed */ in v9fs_tlopen()
677 return (TLOpenRes) { .req = req }; in v9fs_tlopen()
681 void v9fs_rlopen(P9Req *req, v9fs_qid *qid, uint32_t *iounit) in v9fs_rlopen() argument
683 v9fs_req_recv(req, P9_RLOPEN); in v9fs_rlopen()
685 v9fs_memread(req, qid, 13); in v9fs_rlopen()
687 v9fs_memskip(req, 13); in v9fs_rlopen()
690 v9fs_uint32_read(req, iounit); in v9fs_rlopen()
692 v9fs_req_free(req); in v9fs_rlopen()
698 P9Req *req; in v9fs_twrite() local
707 req = v9fs_req_init(opt.client, body_size, P9_TWRITE, opt.tag); in v9fs_twrite()
708 v9fs_uint32_write(req, opt.fid); in v9fs_twrite()
709 v9fs_uint64_write(req, opt.offset); in v9fs_twrite()
710 v9fs_uint32_write(req, opt.count); in v9fs_twrite()
711 v9fs_memwrite(req, opt.data, opt.count); in v9fs_twrite()
712 v9fs_req_send(req); in v9fs_twrite()
715 v9fs_req_wait_for_reply(req, NULL); in v9fs_twrite()
717 v9fs_rlerror(req, &err); in v9fs_twrite()
720 v9fs_rwrite(req, &written); in v9fs_twrite()
722 req = NULL; /* request was freed */ in v9fs_twrite()
726 .req = req, in v9fs_twrite()
732 void v9fs_rwrite(P9Req *req, uint32_t *count) in v9fs_rwrite() argument
734 v9fs_req_recv(req, P9_RWRITE); in v9fs_rwrite()
736 v9fs_uint32_read(req, count); in v9fs_rwrite()
738 v9fs_req_free(req); in v9fs_rwrite()
744 P9Req *req; in v9fs_tflush() local
749 req = v9fs_req_init(opt.client, 2, P9_TFLUSH, opt.tag); in v9fs_tflush()
750 v9fs_uint32_write(req, opt.oldtag); in v9fs_tflush()
751 v9fs_req_send(req); in v9fs_tflush()
754 v9fs_req_wait_for_reply(req, NULL); in v9fs_tflush()
756 v9fs_rlerror(req, &err); in v9fs_tflush()
759 v9fs_rflush(req); in v9fs_tflush()
761 req = NULL; /* request was freed */ in v9fs_tflush()
764 return (TFlushRes) { .req = req }; in v9fs_tflush()
768 void v9fs_rflush(P9Req *req) in v9fs_rflush() argument
770 v9fs_req_recv(req, P9_RFLUSH); in v9fs_rflush()
771 v9fs_req_free(req); in v9fs_rflush()
777 P9Req *req; in v9fs_tmkdir() local
801 req = v9fs_req_init(opt.client, body_size, P9_TMKDIR, opt.tag); in v9fs_tmkdir()
802 v9fs_uint32_write(req, opt.dfid); in v9fs_tmkdir()
803 v9fs_string_write(req, opt.name); in v9fs_tmkdir()
804 v9fs_uint32_write(req, opt.mode); in v9fs_tmkdir()
805 v9fs_uint32_write(req, opt.gid); in v9fs_tmkdir()
806 v9fs_req_send(req); in v9fs_tmkdir()
809 v9fs_req_wait_for_reply(req, NULL); in v9fs_tmkdir()
811 v9fs_rlerror(req, &err); in v9fs_tmkdir()
814 v9fs_rmkdir(req, opt.rmkdir.qid); in v9fs_tmkdir()
816 req = NULL; /* request was freed */ in v9fs_tmkdir()
819 return (TMkdirRes) { .req = req }; in v9fs_tmkdir()
823 void v9fs_rmkdir(P9Req *req, v9fs_qid *qid) in v9fs_rmkdir() argument
825 v9fs_req_recv(req, P9_RMKDIR); in v9fs_rmkdir()
827 v9fs_memread(req, qid, 13); in v9fs_rmkdir()
829 v9fs_memskip(req, 13); in v9fs_rmkdir()
831 v9fs_req_free(req); in v9fs_rmkdir()
837 P9Req *req; in v9fs_tlcreate() local
861 req = v9fs_req_init(opt.client, body_size, P9_TLCREATE, opt.tag); in v9fs_tlcreate()
862 v9fs_uint32_write(req, opt.fid); in v9fs_tlcreate()
863 v9fs_string_write(req, opt.name); in v9fs_tlcreate()
864 v9fs_uint32_write(req, opt.flags); in v9fs_tlcreate()
865 v9fs_uint32_write(req, opt.mode); in v9fs_tlcreate()
866 v9fs_uint32_write(req, opt.gid); in v9fs_tlcreate()
867 v9fs_req_send(req); in v9fs_tlcreate()
870 v9fs_req_wait_for_reply(req, NULL); in v9fs_tlcreate()
872 v9fs_rlerror(req, &err); in v9fs_tlcreate()
875 v9fs_rlcreate(req, opt.rlcreate.qid, opt.rlcreate.iounit); in v9fs_tlcreate()
877 req = NULL; /* request was freed */ in v9fs_tlcreate()
880 return (TlcreateRes) { .req = req }; in v9fs_tlcreate()
884 void v9fs_rlcreate(P9Req *req, v9fs_qid *qid, uint32_t *iounit) in v9fs_rlcreate() argument
886 v9fs_req_recv(req, P9_RLCREATE); in v9fs_rlcreate()
888 v9fs_memread(req, qid, 13); in v9fs_rlcreate()
890 v9fs_memskip(req, 13); in v9fs_rlcreate()
893 v9fs_uint32_read(req, iounit); in v9fs_rlcreate()
895 v9fs_req_free(req); in v9fs_rlcreate()
901 P9Req *req; in v9fs_tsymlink() local
922 req = v9fs_req_init(opt.client, body_size, P9_TSYMLINK, opt.tag); in v9fs_tsymlink()
923 v9fs_uint32_write(req, opt.fid); in v9fs_tsymlink()
924 v9fs_string_write(req, opt.name); in v9fs_tsymlink()
925 v9fs_string_write(req, opt.symtgt); in v9fs_tsymlink()
926 v9fs_uint32_write(req, opt.gid); in v9fs_tsymlink()
927 v9fs_req_send(req); in v9fs_tsymlink()
930 v9fs_req_wait_for_reply(req, NULL); in v9fs_tsymlink()
932 v9fs_rlerror(req, &err); in v9fs_tsymlink()
935 v9fs_rsymlink(req, opt.rsymlink.qid); in v9fs_tsymlink()
937 req = NULL; /* request was freed */ in v9fs_tsymlink()
940 return (TsymlinkRes) { .req = req }; in v9fs_tsymlink()
944 void v9fs_rsymlink(P9Req *req, v9fs_qid *qid) in v9fs_rsymlink() argument
946 v9fs_req_recv(req, P9_RSYMLINK); in v9fs_rsymlink()
948 v9fs_memread(req, qid, 13); in v9fs_rsymlink()
950 v9fs_memskip(req, 13); in v9fs_rsymlink()
952 v9fs_req_free(req); in v9fs_rsymlink()
958 P9Req *req; in v9fs_tlink() local
982 req = v9fs_req_init(opt.client, body_size, P9_TLINK, opt.tag); in v9fs_tlink()
983 v9fs_uint32_write(req, opt.dfid); in v9fs_tlink()
984 v9fs_uint32_write(req, opt.fid); in v9fs_tlink()
985 v9fs_string_write(req, opt.name); in v9fs_tlink()
986 v9fs_req_send(req); in v9fs_tlink()
989 v9fs_req_wait_for_reply(req, NULL); in v9fs_tlink()
991 v9fs_rlerror(req, &err); in v9fs_tlink()
994 v9fs_rlink(req); in v9fs_tlink()
996 req = NULL; /* request was freed */ in v9fs_tlink()
999 return (TlinkRes) { .req = req }; in v9fs_tlink()
1003 void v9fs_rlink(P9Req *req) in v9fs_rlink() argument
1005 v9fs_req_recv(req, P9_RLINK); in v9fs_rlink()
1006 v9fs_req_free(req); in v9fs_rlink()
1012 P9Req *req; in v9fs_tunlinkat() local
1030 req = v9fs_req_init(opt.client, body_size, P9_TUNLINKAT, opt.tag); in v9fs_tunlinkat()
1031 v9fs_uint32_write(req, opt.dirfd); in v9fs_tunlinkat()
1032 v9fs_string_write(req, opt.name); in v9fs_tunlinkat()
1033 v9fs_uint32_write(req, opt.flags); in v9fs_tunlinkat()
1034 v9fs_req_send(req); in v9fs_tunlinkat()
1037 v9fs_req_wait_for_reply(req, NULL); in v9fs_tunlinkat()
1039 v9fs_rlerror(req, &err); in v9fs_tunlinkat()
1042 v9fs_runlinkat(req); in v9fs_tunlinkat()
1044 req = NULL; /* request was freed */ in v9fs_tunlinkat()
1047 return (TunlinkatRes) { .req = req }; in v9fs_tunlinkat()
1051 void v9fs_runlinkat(P9Req *req) in v9fs_runlinkat() argument
1053 v9fs_req_recv(req, P9_RUNLINKAT); in v9fs_runlinkat()
1054 v9fs_req_free(req); in v9fs_runlinkat()