Lines Matching refs:rdata
2750 struct cifs_readdata *rdata; in cifs_readdata_alloc() local
2752 rdata = kzalloc(sizeof(*rdata) + (sizeof(struct page *) * nr_pages), in cifs_readdata_alloc()
2754 if (rdata != NULL) { in cifs_readdata_alloc()
2755 kref_init(&rdata->refcount); in cifs_readdata_alloc()
2756 INIT_LIST_HEAD(&rdata->list); in cifs_readdata_alloc()
2757 init_completion(&rdata->done); in cifs_readdata_alloc()
2758 INIT_WORK(&rdata->work, complete); in cifs_readdata_alloc()
2761 return rdata; in cifs_readdata_alloc()
2767 struct cifs_readdata *rdata = container_of(refcount, in cifs_readdata_release() local
2770 if (rdata->cfile) in cifs_readdata_release()
2771 cifsFileInfo_put(rdata->cfile); in cifs_readdata_release()
2773 kfree(rdata); in cifs_readdata_release()
2777 cifs_read_allocate_pages(struct cifs_readdata *rdata, unsigned int nr_pages) in cifs_read_allocate_pages() argument
2789 rdata->pages[i] = page; in cifs_read_allocate_pages()
2794 put_page(rdata->pages[i]); in cifs_read_allocate_pages()
2795 rdata->pages[i] = NULL; in cifs_read_allocate_pages()
2804 struct cifs_readdata *rdata = container_of(refcount, in cifs_uncached_readdata_release() local
2808 for (i = 0; i < rdata->nr_pages; i++) { in cifs_uncached_readdata_release()
2809 put_page(rdata->pages[i]); in cifs_uncached_readdata_release()
2810 rdata->pages[i] = NULL; in cifs_uncached_readdata_release()
2825 cifs_readdata_to_iov(struct cifs_readdata *rdata, struct iov_iter *iter) in cifs_readdata_to_iov() argument
2827 size_t remaining = rdata->got_bytes; in cifs_readdata_to_iov()
2830 for (i = 0; i < rdata->nr_pages; i++) { in cifs_readdata_to_iov()
2831 struct page *page = rdata->pages[i]; in cifs_readdata_to_iov()
2844 struct cifs_readdata *rdata = container_of(work, in cifs_uncached_readv_complete() local
2847 complete(&rdata->done); in cifs_uncached_readv_complete()
2848 kref_put(&rdata->refcount, cifs_uncached_readdata_release); in cifs_uncached_readv_complete()
2853 struct cifs_readdata *rdata, unsigned int len) in cifs_uncached_read_into_pages() argument
2857 unsigned int nr_pages = rdata->nr_pages; in cifs_uncached_read_into_pages()
2860 rdata->got_bytes = 0; in cifs_uncached_read_into_pages()
2861 rdata->tailsz = PAGE_SIZE; in cifs_uncached_read_into_pages()
2863 struct page *page = rdata->pages[i]; in cifs_uncached_read_into_pages()
2879 rdata->tailsz = len; in cifs_uncached_read_into_pages()
2883 rdata->pages[i] = NULL; in cifs_uncached_read_into_pages()
2884 rdata->nr_pages--; in cifs_uncached_read_into_pages()
2894 rdata->got_bytes += result; in cifs_uncached_read_into_pages()
2897 return rdata->got_bytes > 0 && result != -ECONNABORTED ? in cifs_uncached_read_into_pages()
2898 rdata->got_bytes : result; in cifs_uncached_read_into_pages()
2905 struct cifs_readdata *rdata; in cifs_send_async_read() local
2929 rdata = cifs_readdata_alloc(npages, in cifs_send_async_read()
2931 if (!rdata) { in cifs_send_async_read()
2937 rc = cifs_read_allocate_pages(rdata, npages); in cifs_send_async_read()
2941 rdata->cfile = cifsFileInfo_get(open_file); in cifs_send_async_read()
2942 rdata->nr_pages = npages; in cifs_send_async_read()
2943 rdata->offset = offset; in cifs_send_async_read()
2944 rdata->bytes = cur_len; in cifs_send_async_read()
2945 rdata->pid = pid; in cifs_send_async_read()
2946 rdata->pagesz = PAGE_SIZE; in cifs_send_async_read()
2947 rdata->read_into_pages = cifs_uncached_read_into_pages; in cifs_send_async_read()
2948 rdata->credits = credits; in cifs_send_async_read()
2950 if (!rdata->cfile->invalidHandle || in cifs_send_async_read()
2951 !cifs_reopen_file(rdata->cfile, true)) in cifs_send_async_read()
2952 rc = server->ops->async_readv(rdata); in cifs_send_async_read()
2955 add_credits_and_wake_if(server, rdata->credits, 0); in cifs_send_async_read()
2956 kref_put(&rdata->refcount, in cifs_send_async_read()
2963 list_add_tail(&rdata->list, rdata_list); in cifs_send_async_read()
2981 struct cifs_readdata *rdata, *tmp; in cifs_user_readv() local
3008 list_for_each_entry_safe(rdata, tmp, &rdata_list, list) { in cifs_user_readv()
3011 rc = wait_for_completion_killable(&rdata->done); in cifs_user_readv()
3014 else if (rdata->result == -EAGAIN) { in cifs_user_readv()
3017 unsigned int got_bytes = rdata->got_bytes; in cifs_user_readv()
3019 list_del_init(&rdata->list); in cifs_user_readv()
3027 if (got_bytes && got_bytes < rdata->bytes) { in cifs_user_readv()
3028 rc = cifs_readdata_to_iov(rdata, to); in cifs_user_readv()
3030 kref_put(&rdata->refcount, in cifs_user_readv()
3037 rdata->offset + got_bytes, in cifs_user_readv()
3038 rdata->bytes - got_bytes, in cifs_user_readv()
3039 rdata->cfile, cifs_sb, in cifs_user_readv()
3044 kref_put(&rdata->refcount, in cifs_user_readv()
3047 } else if (rdata->result) in cifs_user_readv()
3048 rc = rdata->result; in cifs_user_readv()
3050 rc = cifs_readdata_to_iov(rdata, to); in cifs_user_readv()
3053 if (rdata->got_bytes && rdata->got_bytes < rdata->bytes) in cifs_user_readv()
3056 list_del_init(&rdata->list); in cifs_user_readv()
3057 kref_put(&rdata->refcount, cifs_uncached_readdata_release); in cifs_user_readv()
3268 struct cifs_readdata *rdata = container_of(work, in cifs_readv_complete() local
3271 got_bytes = rdata->got_bytes; in cifs_readv_complete()
3272 for (i = 0; i < rdata->nr_pages; i++) { in cifs_readv_complete()
3273 struct page *page = rdata->pages[i]; in cifs_readv_complete()
3277 if (rdata->result == 0 || in cifs_readv_complete()
3278 (rdata->result == -EAGAIN && got_bytes)) { in cifs_readv_complete()
3285 if (rdata->result == 0 || in cifs_readv_complete()
3286 (rdata->result == -EAGAIN && got_bytes)) in cifs_readv_complete()
3287 cifs_readpage_to_fscache(rdata->mapping->host, page); in cifs_readv_complete()
3292 rdata->pages[i] = NULL; in cifs_readv_complete()
3294 kref_put(&rdata->refcount, cifs_readdata_release); in cifs_readv_complete()
3299 struct cifs_readdata *rdata, unsigned int len) in cifs_readpages_read_into_pages() argument
3305 unsigned int nr_pages = rdata->nr_pages; in cifs_readpages_read_into_pages()
3309 eof = CIFS_I(rdata->mapping->host)->server_eof; in cifs_readpages_read_into_pages()
3313 rdata->got_bytes = 0; in cifs_readpages_read_into_pages()
3314 rdata->tailsz = PAGE_CACHE_SIZE; in cifs_readpages_read_into_pages()
3316 struct page *page = rdata->pages[i]; in cifs_readpages_read_into_pages()
3333 rdata->tailsz = len; in cifs_readpages_read_into_pages()
3350 rdata->pages[i] = NULL; in cifs_readpages_read_into_pages()
3351 rdata->nr_pages--; in cifs_readpages_read_into_pages()
3358 rdata->pages[i] = NULL; in cifs_readpages_read_into_pages()
3359 rdata->nr_pages--; in cifs_readpages_read_into_pages()
3368 rdata->got_bytes += result; in cifs_readpages_read_into_pages()
3371 return rdata->got_bytes > 0 && result != -ECONNABORTED ? in cifs_readpages_read_into_pages()
3372 rdata->got_bytes : result; in cifs_readpages_read_into_pages()
3482 struct cifs_readdata *rdata; in cifs_readpages() local
3508 rdata = cifs_readdata_alloc(nr_pages, cifs_readv_complete); in cifs_readpages()
3509 if (!rdata) { in cifs_readpages()
3522 rdata->cfile = cifsFileInfo_get(open_file); in cifs_readpages()
3523 rdata->mapping = mapping; in cifs_readpages()
3524 rdata->offset = offset; in cifs_readpages()
3525 rdata->bytes = bytes; in cifs_readpages()
3526 rdata->pid = pid; in cifs_readpages()
3527 rdata->pagesz = PAGE_CACHE_SIZE; in cifs_readpages()
3528 rdata->read_into_pages = cifs_readpages_read_into_pages; in cifs_readpages()
3529 rdata->credits = credits; in cifs_readpages()
3533 rdata->pages[rdata->nr_pages++] = page; in cifs_readpages()
3536 if (!rdata->cfile->invalidHandle || in cifs_readpages()
3537 !cifs_reopen_file(rdata->cfile, true)) in cifs_readpages()
3538 rc = server->ops->async_readv(rdata); in cifs_readpages()
3540 add_credits_and_wake_if(server, rdata->credits, 0); in cifs_readpages()
3541 for (i = 0; i < rdata->nr_pages; i++) { in cifs_readpages()
3542 page = rdata->pages[i]; in cifs_readpages()
3548 kref_put(&rdata->refcount, cifs_readdata_release); in cifs_readpages()
3552 kref_put(&rdata->refcount, cifs_readdata_release); in cifs_readpages()