Lines Matching refs:req

84 static void fuse_release_end(struct fuse_conn *fc, struct fuse_req *req)  in fuse_release_end()  argument
86 iput(req->misc.release.inode); in fuse_release_end()
92 struct fuse_req *req = ff->reserved_req; in fuse_file_put() local
99 req->background = 0; in fuse_file_put()
100 iput(req->misc.release.inode); in fuse_file_put()
101 fuse_put_request(ff->fc, req); in fuse_file_put()
103 req->background = 0; in fuse_file_put()
104 fuse_request_send(ff->fc, req); in fuse_file_put()
105 iput(req->misc.release.inode); in fuse_file_put()
106 fuse_put_request(ff->fc, req); in fuse_file_put()
108 req->end = fuse_release_end; in fuse_file_put()
109 req->background = 1; in fuse_file_put()
110 fuse_request_send_background(ff->fc, req); in fuse_file_put()
226 struct fuse_req *req = ff->reserved_req; in fuse_prepare_release() local
227 struct fuse_release_in *inarg = &req->misc.release.in; in fuse_prepare_release()
239 req->in.h.opcode = opcode; in fuse_prepare_release()
240 req->in.h.nodeid = ff->nodeid; in fuse_prepare_release()
241 req->in.numargs = 1; in fuse_prepare_release()
242 req->in.args[0].size = sizeof(struct fuse_release_in); in fuse_prepare_release()
243 req->in.args[0].value = inarg; in fuse_prepare_release()
249 struct fuse_req *req; in fuse_release_common() local
255 req = ff->reserved_req; in fuse_release_common()
259 struct fuse_release_in *inarg = &req->misc.release.in; in fuse_release_common()
265 req->misc.release.inode = igrab(file_inode(file)); in fuse_release_common()
343 struct fuse_req *req; in fuse_range_is_writeback() local
347 list_for_each_entry(req, &fi->writepages, writepages_entry) { in fuse_range_is_writeback()
350 BUG_ON(req->inode != inode); in fuse_range_is_writeback()
351 curr_index = req->misc.write.in.offset >> PAGE_CACHE_SHIFT; in fuse_range_is_writeback()
352 if (idx_from < curr_index + req->num_pages && in fuse_range_is_writeback()
402 struct fuse_req *req; in fuse_flush() local
420 req = fuse_get_req_nofail_nopages(fc, file); in fuse_flush()
424 req->in.h.opcode = FUSE_FLUSH; in fuse_flush()
425 req->in.h.nodeid = get_node_id(inode); in fuse_flush()
426 req->in.numargs = 1; in fuse_flush()
427 req->in.args[0].size = sizeof(inarg); in fuse_flush()
428 req->in.args[0].value = &inarg; in fuse_flush()
429 req->force = 1; in fuse_flush()
430 fuse_request_send(fc, req); in fuse_flush()
431 err = req->out.h.error; in fuse_flush()
432 fuse_put_request(fc, req); in fuse_flush()
499 void fuse_read_fill(struct fuse_req *req, struct file *file, loff_t pos, in fuse_read_fill() argument
502 struct fuse_read_in *inarg = &req->misc.read.in; in fuse_read_fill()
509 req->in.h.opcode = opcode; in fuse_read_fill()
510 req->in.h.nodeid = ff->nodeid; in fuse_read_fill()
511 req->in.numargs = 1; in fuse_read_fill()
512 req->in.args[0].size = sizeof(struct fuse_read_in); in fuse_read_fill()
513 req->in.args[0].value = inarg; in fuse_read_fill()
514 req->out.argvar = 1; in fuse_read_fill()
515 req->out.numargs = 1; in fuse_read_fill()
516 req->out.args[0].size = count; in fuse_read_fill()
519 static void fuse_release_user_pages(struct fuse_req *req, int write) in fuse_release_user_pages() argument
523 for (i = 0; i < req->num_pages; i++) { in fuse_release_user_pages()
524 struct page *page = req->pages[i]; in fuse_release_user_pages()
598 static void fuse_aio_complete_req(struct fuse_conn *fc, struct fuse_req *req) in fuse_aio_complete_req() argument
600 struct fuse_io_priv *io = req->io; in fuse_aio_complete_req()
603 fuse_release_user_pages(req, !io->write); in fuse_aio_complete_req()
606 if (req->misc.write.in.size != req->misc.write.out.size) in fuse_aio_complete_req()
607 pos = req->misc.write.in.offset - io->offset + in fuse_aio_complete_req()
608 req->misc.write.out.size; in fuse_aio_complete_req()
610 if (req->misc.read.in.size != req->out.args[0].size) in fuse_aio_complete_req()
611 pos = req->misc.read.in.offset - io->offset + in fuse_aio_complete_req()
612 req->out.args[0].size; in fuse_aio_complete_req()
615 fuse_aio_complete(io, req->out.h.error, pos); in fuse_aio_complete_req()
618 static size_t fuse_async_req_send(struct fuse_conn *fc, struct fuse_req *req, in fuse_async_req_send() argument
627 req->io = io; in fuse_async_req_send()
628 req->end = fuse_aio_complete_req; in fuse_async_req_send()
630 __fuse_get_request(req); in fuse_async_req_send()
631 fuse_request_send_background(fc, req); in fuse_async_req_send()
636 static size_t fuse_send_read(struct fuse_req *req, struct fuse_io_priv *io, in fuse_send_read() argument
643 fuse_read_fill(req, file, pos, count, FUSE_READ); in fuse_send_read()
645 struct fuse_read_in *inarg = &req->misc.read.in; in fuse_send_read()
652 return fuse_async_req_send(fc, req, count, io); in fuse_send_read()
654 fuse_request_send(fc, req); in fuse_send_read()
655 return req->out.args[0].size; in fuse_send_read()
673 static void fuse_short_read(struct fuse_req *req, struct inode *inode, in fuse_short_read() argument
676 size_t num_read = req->out.args[0].size; in fuse_short_read()
689 for (i = start_idx; i < req->num_pages; i++) { in fuse_short_read()
690 zero_user_segment(req->pages[i], off, PAGE_CACHE_SIZE); in fuse_short_read()
694 loff_t pos = page_offset(req->pages[0]) + num_read; in fuse_short_read()
704 struct fuse_req *req; in fuse_do_readpage() local
718 req = fuse_get_req(fc, 1); in fuse_do_readpage()
719 if (IS_ERR(req)) in fuse_do_readpage()
720 return PTR_ERR(req); in fuse_do_readpage()
724 req->out.page_zeroing = 1; in fuse_do_readpage()
725 req->out.argpages = 1; in fuse_do_readpage()
726 req->num_pages = 1; in fuse_do_readpage()
727 req->pages[0] = page; in fuse_do_readpage()
728 req->page_descs[0].length = count; in fuse_do_readpage()
729 num_read = fuse_send_read(req, &io, pos, count, NULL); in fuse_do_readpage()
730 err = req->out.h.error; in fuse_do_readpage()
737 fuse_short_read(req, inode, attr_ver); in fuse_do_readpage()
742 fuse_put_request(fc, req); in fuse_do_readpage()
763 static void fuse_readpages_end(struct fuse_conn *fc, struct fuse_req *req) in fuse_readpages_end() argument
766 size_t count = req->misc.read.in.size; in fuse_readpages_end()
767 size_t num_read = req->out.args[0].size; in fuse_readpages_end()
770 for (i = 0; mapping == NULL && i < req->num_pages; i++) in fuse_readpages_end()
771 mapping = req->pages[i]->mapping; in fuse_readpages_end()
779 if (!req->out.h.error && num_read < count) in fuse_readpages_end()
780 fuse_short_read(req, inode, req->misc.read.attr_ver); in fuse_readpages_end()
785 for (i = 0; i < req->num_pages; i++) { in fuse_readpages_end()
786 struct page *page = req->pages[i]; in fuse_readpages_end()
787 if (!req->out.h.error) in fuse_readpages_end()
794 if (req->ff) in fuse_readpages_end()
795 fuse_file_put(req->ff, false); in fuse_readpages_end()
798 static void fuse_send_readpages(struct fuse_req *req, struct file *file) in fuse_send_readpages() argument
802 loff_t pos = page_offset(req->pages[0]); in fuse_send_readpages()
803 size_t count = req->num_pages << PAGE_CACHE_SHIFT; in fuse_send_readpages()
805 req->out.argpages = 1; in fuse_send_readpages()
806 req->out.page_zeroing = 1; in fuse_send_readpages()
807 req->out.page_replace = 1; in fuse_send_readpages()
808 fuse_read_fill(req, file, pos, count, FUSE_READ); in fuse_send_readpages()
809 req->misc.read.attr_ver = fuse_get_attr_version(fc); in fuse_send_readpages()
811 req->ff = fuse_file_get(ff); in fuse_send_readpages()
812 req->end = fuse_readpages_end; in fuse_send_readpages()
813 fuse_request_send_background(fc, req); in fuse_send_readpages()
815 fuse_request_send(fc, req); in fuse_send_readpages()
816 fuse_readpages_end(fc, req); in fuse_send_readpages()
817 fuse_put_request(fc, req); in fuse_send_readpages()
822 struct fuse_req *req; member
831 struct fuse_req *req = data->req; in fuse_readpages_fill() local
837 if (req->num_pages && in fuse_readpages_fill()
838 (req->num_pages == FUSE_MAX_PAGES_PER_REQ || in fuse_readpages_fill()
839 (req->num_pages + 1) * PAGE_CACHE_SIZE > fc->max_read || in fuse_readpages_fill()
840 req->pages[req->num_pages - 1]->index + 1 != page->index)) { in fuse_readpages_fill()
843 fuse_send_readpages(req, data->file); in fuse_readpages_fill()
845 req = fuse_get_req_for_background(fc, nr_alloc); in fuse_readpages_fill()
847 req = fuse_get_req(fc, nr_alloc); in fuse_readpages_fill()
849 data->req = req; in fuse_readpages_fill()
850 if (IS_ERR(req)) { in fuse_readpages_fill()
852 return PTR_ERR(req); in fuse_readpages_fill()
856 if (WARN_ON(req->num_pages >= req->max_pages)) { in fuse_readpages_fill()
857 fuse_put_request(fc, req); in fuse_readpages_fill()
862 req->pages[req->num_pages] = page; in fuse_readpages_fill()
863 req->page_descs[req->num_pages].length = PAGE_SIZE; in fuse_readpages_fill()
864 req->num_pages++; in fuse_readpages_fill()
885 data.req = fuse_get_req_for_background(fc, nr_alloc); in fuse_readpages()
887 data.req = fuse_get_req(fc, nr_alloc); in fuse_readpages()
889 err = PTR_ERR(data.req); in fuse_readpages()
890 if (IS_ERR(data.req)) in fuse_readpages()
895 if (data.req->num_pages) in fuse_readpages()
896 fuse_send_readpages(data.req, file); in fuse_readpages()
898 fuse_put_request(fc, data.req); in fuse_readpages()
925 static void fuse_write_fill(struct fuse_req *req, struct fuse_file *ff, in fuse_write_fill() argument
928 struct fuse_write_in *inarg = &req->misc.write.in; in fuse_write_fill()
929 struct fuse_write_out *outarg = &req->misc.write.out; in fuse_write_fill()
934 req->in.h.opcode = FUSE_WRITE; in fuse_write_fill()
935 req->in.h.nodeid = ff->nodeid; in fuse_write_fill()
936 req->in.numargs = 2; in fuse_write_fill()
938 req->in.args[0].size = FUSE_COMPAT_WRITE_IN_SIZE; in fuse_write_fill()
940 req->in.args[0].size = sizeof(struct fuse_write_in); in fuse_write_fill()
941 req->in.args[0].value = inarg; in fuse_write_fill()
942 req->in.args[1].size = count; in fuse_write_fill()
943 req->out.numargs = 1; in fuse_write_fill()
944 req->out.args[0].size = sizeof(struct fuse_write_out); in fuse_write_fill()
945 req->out.args[0].value = outarg; in fuse_write_fill()
948 static size_t fuse_send_write(struct fuse_req *req, struct fuse_io_priv *io, in fuse_send_write() argument
954 struct fuse_write_in *inarg = &req->misc.write.in; in fuse_send_write()
956 fuse_write_fill(req, ff, pos, count); in fuse_send_write()
964 return fuse_async_req_send(fc, req, count, io); in fuse_send_write()
966 fuse_request_send(fc, req); in fuse_send_write()
967 return req->misc.write.out.size; in fuse_send_write()
987 static size_t fuse_send_write_pages(struct fuse_req *req, struct file *file, in fuse_send_write_pages() argument
996 for (i = 0; i < req->num_pages; i++) in fuse_send_write_pages()
997 fuse_wait_on_page_writeback(inode, req->pages[i]->index); in fuse_send_write_pages()
999 res = fuse_send_write(req, &io, pos, count, NULL); in fuse_send_write_pages()
1001 offset = req->page_descs[0].offset; in fuse_send_write_pages()
1003 for (i = 0; i < req->num_pages; i++) { in fuse_send_write_pages()
1004 struct page *page = req->pages[i]; in fuse_send_write_pages()
1006 if (!req->out.h.error && !offset && count >= PAGE_CACHE_SIZE) in fuse_send_write_pages()
1022 static ssize_t fuse_fill_write_pages(struct fuse_req *req, in fuse_fill_write_pages() argument
1031 req->in.argpages = 1; in fuse_fill_write_pages()
1032 req->page_descs[0].offset = offset; in fuse_fill_write_pages()
1068 req->pages[req->num_pages] = page; in fuse_fill_write_pages()
1069 req->page_descs[req->num_pages].length = tmp; in fuse_fill_write_pages()
1070 req->num_pages++; in fuse_fill_write_pages()
1081 req->num_pages < req->max_pages && offset == 0); in fuse_fill_write_pages()
1111 struct fuse_req *req; in fuse_perform_write() local
1115 req = fuse_get_req(fc, nr_pages); in fuse_perform_write()
1116 if (IS_ERR(req)) { in fuse_perform_write()
1117 err = PTR_ERR(req); in fuse_perform_write()
1121 count = fuse_fill_write_pages(req, mapping, ii, pos); in fuse_perform_write()
1127 num_written = fuse_send_write_pages(req, file, inode, in fuse_perform_write()
1129 err = req->out.h.error; in fuse_perform_write()
1139 fuse_put_request(fc, req); in fuse_perform_write()
1225 static inline void fuse_page_descs_length_init(struct fuse_req *req, in fuse_page_descs_length_init() argument
1231 req->page_descs[i].length = PAGE_SIZE - in fuse_page_descs_length_init()
1232 req->page_descs[i].offset; in fuse_page_descs_length_init()
1246 static int fuse_get_user_pages(struct fuse_req *req, struct iov_iter *ii, in fuse_get_user_pages() argument
1257 req->in.args[1].value = (void *) user_addr; in fuse_get_user_pages()
1259 req->out.args[0].value = (void *) user_addr; in fuse_get_user_pages()
1266 while (nbytes < *nbytesp && req->num_pages < req->max_pages) { in fuse_get_user_pages()
1270 &req->pages[req->num_pages], in fuse_get_user_pages()
1272 req->max_pages - req->num_pages, in fuse_get_user_pages()
1283 req->page_descs[req->num_pages].offset = start; in fuse_get_user_pages()
1284 fuse_page_descs_length_init(req, req->num_pages, npages); in fuse_get_user_pages()
1286 req->num_pages += npages; in fuse_get_user_pages()
1287 req->page_descs[req->num_pages - 1].length -= in fuse_get_user_pages()
1292 req->in.argpages = 1; in fuse_get_user_pages()
1294 req->out.argpages = 1; in fuse_get_user_pages()
1321 struct fuse_req *req; in fuse_direct_io() local
1324 req = fuse_get_req_for_background(fc, fuse_iter_npages(iter)); in fuse_direct_io()
1326 req = fuse_get_req(fc, fuse_iter_npages(iter)); in fuse_direct_io()
1327 if (IS_ERR(req)) in fuse_direct_io()
1328 return PTR_ERR(req); in fuse_direct_io()
1342 int err = fuse_get_user_pages(req, iter, &nbytes, write); in fuse_direct_io()
1349 nres = fuse_send_write(req, io, pos, nbytes, owner); in fuse_direct_io()
1351 nres = fuse_send_read(req, io, pos, nbytes, owner); in fuse_direct_io()
1354 fuse_release_user_pages(req, !write); in fuse_direct_io()
1355 if (req->out.h.error) { in fuse_direct_io()
1357 res = req->out.h.error; in fuse_direct_io()
1369 fuse_put_request(fc, req); in fuse_direct_io()
1371 req = fuse_get_req_for_background(fc, in fuse_direct_io()
1374 req = fuse_get_req(fc, fuse_iter_npages(iter)); in fuse_direct_io()
1375 if (IS_ERR(req)) in fuse_direct_io()
1379 if (!IS_ERR(req)) in fuse_direct_io()
1380 fuse_put_request(fc, req); in fuse_direct_io()
1435 static void fuse_writepage_free(struct fuse_conn *fc, struct fuse_req *req) in fuse_writepage_free() argument
1439 for (i = 0; i < req->num_pages; i++) in fuse_writepage_free()
1440 __free_page(req->pages[i]); in fuse_writepage_free()
1442 if (req->ff) in fuse_writepage_free()
1443 fuse_file_put(req->ff, false); in fuse_writepage_free()
1446 static void fuse_writepage_finish(struct fuse_conn *fc, struct fuse_req *req) in fuse_writepage_finish() argument
1448 struct inode *inode = req->inode; in fuse_writepage_finish()
1453 list_del(&req->writepages_entry); in fuse_writepage_finish()
1454 for (i = 0; i < req->num_pages; i++) { in fuse_writepage_finish()
1456 dec_zone_page_state(req->pages[i], NR_WRITEBACK_TEMP); in fuse_writepage_finish()
1463 static void fuse_send_writepage(struct fuse_conn *fc, struct fuse_req *req, in fuse_send_writepage() argument
1468 struct fuse_inode *fi = get_fuse_inode(req->inode); in fuse_send_writepage()
1469 struct fuse_write_in *inarg = &req->misc.write.in; in fuse_send_writepage()
1470 __u64 data_size = req->num_pages * PAGE_CACHE_SIZE; in fuse_send_writepage()
1484 req->in.args[1].size = inarg->size; in fuse_send_writepage()
1486 fuse_request_send_background_locked(fc, req); in fuse_send_writepage()
1490 fuse_writepage_finish(fc, req); in fuse_send_writepage()
1492 fuse_writepage_free(fc, req); in fuse_send_writepage()
1493 fuse_put_request(fc, req); in fuse_send_writepage()
1510 struct fuse_req *req; in fuse_flush_writepages() local
1513 req = list_entry(fi->queued_writes.next, struct fuse_req, list); in fuse_flush_writepages()
1514 list_del_init(&req->list); in fuse_flush_writepages()
1515 fuse_send_writepage(fc, req, crop); in fuse_flush_writepages()
1519 static void fuse_writepage_end(struct fuse_conn *fc, struct fuse_req *req) in fuse_writepage_end() argument
1521 struct inode *inode = req->inode; in fuse_writepage_end()
1524 mapping_set_error(inode->i_mapping, req->out.h.error); in fuse_writepage_end()
1526 while (req->misc.write.next) { in fuse_writepage_end()
1528 struct fuse_write_in *inarg = &req->misc.write.in; in fuse_writepage_end()
1529 struct fuse_req *next = req->misc.write.next; in fuse_writepage_end()
1530 req->misc.write.next = next->misc.write.next; in fuse_writepage_end()
1532 next->ff = fuse_file_get(req->ff); in fuse_writepage_end()
1561 fuse_writepage_finish(fc, req); in fuse_writepage_end()
1563 fuse_writepage_free(fc, req); in fuse_writepage_end()
1611 struct fuse_req *req; in fuse_writepage_locked() local
1617 req = fuse_request_alloc_nofs(1); in fuse_writepage_locked()
1618 if (!req) in fuse_writepage_locked()
1621 req->background = 1; /* writeback always goes to bg_queue */ in fuse_writepage_locked()
1627 req->ff = fuse_write_file_get(fc, fi); in fuse_writepage_locked()
1628 if (!req->ff) in fuse_writepage_locked()
1631 fuse_write_fill(req, req->ff, page_offset(page), 0); in fuse_writepage_locked()
1634 req->misc.write.in.write_flags |= FUSE_WRITE_CACHE; in fuse_writepage_locked()
1635 req->misc.write.next = NULL; in fuse_writepage_locked()
1636 req->in.argpages = 1; in fuse_writepage_locked()
1637 req->num_pages = 1; in fuse_writepage_locked()
1638 req->pages[0] = tmp_page; in fuse_writepage_locked()
1639 req->page_descs[0].offset = 0; in fuse_writepage_locked()
1640 req->page_descs[0].length = PAGE_SIZE; in fuse_writepage_locked()
1641 req->end = fuse_writepage_end; in fuse_writepage_locked()
1642 req->inode = inode; in fuse_writepage_locked()
1648 list_add(&req->writepages_entry, &fi->writepages); in fuse_writepage_locked()
1649 list_add_tail(&req->list, &fi->queued_writes); in fuse_writepage_locked()
1660 fuse_request_free(req); in fuse_writepage_locked()
1689 struct fuse_req *req; member
1697 struct fuse_req *req = data->req; in fuse_writepages_send() local
1701 int num_pages = req->num_pages; in fuse_writepages_send()
1704 req->ff = fuse_file_get(data->ff); in fuse_writepages_send()
1706 list_add_tail(&req->list, &fi->queued_writes); in fuse_writepages_send()
1779 struct fuse_req *req = data->req; in fuse_writepages_fill() local
1801 if (req && req->num_pages && in fuse_writepages_fill()
1802 (is_writeback || req->num_pages == FUSE_MAX_PAGES_PER_REQ || in fuse_writepages_fill()
1803 (req->num_pages + 1) * PAGE_CACHE_SIZE > fc->max_write || in fuse_writepages_fill()
1804 data->orig_pages[req->num_pages - 1]->index + 1 != page->index)) { in fuse_writepages_fill()
1806 data->req = NULL; in fuse_writepages_fill()
1826 if (data->req == NULL) { in fuse_writepages_fill()
1830 req = fuse_request_alloc_nofs(FUSE_MAX_PAGES_PER_REQ); in fuse_writepages_fill()
1831 if (!req) { in fuse_writepages_fill()
1836 fuse_write_fill(req, data->ff, page_offset(page), 0); in fuse_writepages_fill()
1837 req->misc.write.in.write_flags |= FUSE_WRITE_CACHE; in fuse_writepages_fill()
1838 req->misc.write.next = NULL; in fuse_writepages_fill()
1839 req->in.argpages = 1; in fuse_writepages_fill()
1840 req->background = 1; in fuse_writepages_fill()
1841 req->num_pages = 0; in fuse_writepages_fill()
1842 req->end = fuse_writepage_end; in fuse_writepages_fill()
1843 req->inode = inode; in fuse_writepages_fill()
1846 list_add(&req->writepages_entry, &fi->writepages); in fuse_writepages_fill()
1849 data->req = req; in fuse_writepages_fill()
1854 req->pages[req->num_pages] = tmp_page; in fuse_writepages_fill()
1855 req->page_descs[req->num_pages].offset = 0; in fuse_writepages_fill()
1856 req->page_descs[req->num_pages].length = PAGE_SIZE; in fuse_writepages_fill()
1862 if (is_writeback && fuse_writepage_in_flight(req, page)) { in fuse_writepages_fill()
1864 data->req = NULL; in fuse_writepages_fill()
1867 data->orig_pages[req->num_pages] = page; in fuse_writepages_fill()
1874 req->num_pages++; in fuse_writepages_fill()
1895 data.req = NULL; in fuse_writepages()
1906 if (data.req) { in fuse_writepages()
1908 BUG_ON(!data.req->num_pages); in fuse_writepages()
2448 struct fuse_req *req = NULL; in fuse_do_ioctl() local
2515 req = fuse_get_req(fc, num_pages); in fuse_do_ioctl()
2516 if (IS_ERR(req)) { in fuse_do_ioctl()
2517 err = PTR_ERR(req); in fuse_do_ioctl()
2518 req = NULL; in fuse_do_ioctl()
2521 memcpy(req->pages, pages, sizeof(req->pages[0]) * num_pages); in fuse_do_ioctl()
2522 req->num_pages = num_pages; in fuse_do_ioctl()
2523 fuse_page_descs_length_init(req, 0, req->num_pages); in fuse_do_ioctl()
2526 req->in.h.opcode = FUSE_IOCTL; in fuse_do_ioctl()
2527 req->in.h.nodeid = ff->nodeid; in fuse_do_ioctl()
2528 req->in.numargs = 1; in fuse_do_ioctl()
2529 req->in.args[0].size = sizeof(inarg); in fuse_do_ioctl()
2530 req->in.args[0].value = &inarg; in fuse_do_ioctl()
2532 req->in.numargs++; in fuse_do_ioctl()
2533 req->in.args[1].size = in_size; in fuse_do_ioctl()
2534 req->in.argpages = 1; in fuse_do_ioctl()
2542 req->out.numargs = 2; in fuse_do_ioctl()
2543 req->out.args[0].size = sizeof(outarg); in fuse_do_ioctl()
2544 req->out.args[0].value = &outarg; in fuse_do_ioctl()
2545 req->out.args[1].size = out_size; in fuse_do_ioctl()
2546 req->out.argpages = 1; in fuse_do_ioctl()
2547 req->out.argvar = 1; in fuse_do_ioctl()
2549 fuse_request_send(fc, req); in fuse_do_ioctl()
2550 err = req->out.h.error; in fuse_do_ioctl()
2551 transferred = req->out.args[1].size; in fuse_do_ioctl()
2552 fuse_put_request(fc, req); in fuse_do_ioctl()
2553 req = NULL; in fuse_do_ioctl()
2607 if (req) in fuse_do_ioctl()
2608 fuse_put_request(fc, req); in fuse_do_ioctl()