Lines Matching refs:rdata
3789 struct cifs_readdata *rdata; in cifs_readdata_alloc() local
3791 rdata = kzalloc(sizeof(*rdata), GFP_KERNEL); in cifs_readdata_alloc()
3792 if (rdata) { in cifs_readdata_alloc()
3793 kref_init(&rdata->refcount); in cifs_readdata_alloc()
3794 INIT_LIST_HEAD(&rdata->list); in cifs_readdata_alloc()
3795 init_completion(&rdata->done); in cifs_readdata_alloc()
3796 INIT_WORK(&rdata->work, complete); in cifs_readdata_alloc()
3799 return rdata; in cifs_readdata_alloc()
3805 struct cifs_readdata *rdata = container_of(refcount, in cifs_readdata_release() local
3808 if (rdata->ctx) in cifs_readdata_release()
3809 kref_put(&rdata->ctx->refcount, cifs_aio_ctx_release); in cifs_readdata_release()
3811 if (rdata->mr) { in cifs_readdata_release()
3812 smbd_deregister_mr(rdata->mr); in cifs_readdata_release()
3813 rdata->mr = NULL; in cifs_readdata_release()
3816 if (rdata->cfile) in cifs_readdata_release()
3817 cifsFileInfo_put(rdata->cfile); in cifs_readdata_release()
3819 kfree(rdata); in cifs_readdata_release()
3827 struct cifs_readdata *rdata = container_of(work, in cifs_uncached_readv_complete() local
3830 complete(&rdata->done); in cifs_uncached_readv_complete()
3831 collect_uncached_read_data(rdata->ctx); in cifs_uncached_readv_complete()
3833 kref_put(&rdata->refcount, cifs_readdata_release); in cifs_uncached_readv_complete()
3836 static int cifs_resend_rdata(struct cifs_readdata *rdata, in cifs_resend_rdata() argument
3846 server = rdata->server; in cifs_resend_rdata()
3849 if (rdata->cfile->invalidHandle) { in cifs_resend_rdata()
3850 rc = cifs_reopen_file(rdata->cfile, true); in cifs_resend_rdata()
3863 rc = server->ops->wait_mtu_credits(server, rdata->bytes, in cifs_resend_rdata()
3869 if (rsize < rdata->bytes) { in cifs_resend_rdata()
3873 } while (rsize < rdata->bytes); in cifs_resend_rdata()
3874 rdata->credits = credits; in cifs_resend_rdata()
3876 rc = adjust_credits(server, &rdata->credits, rdata->bytes); in cifs_resend_rdata()
3878 if (rdata->cfile->invalidHandle) in cifs_resend_rdata()
3882 if (rdata->mr) { in cifs_resend_rdata()
3883 rdata->mr->need_invalidate = true; in cifs_resend_rdata()
3884 smbd_deregister_mr(rdata->mr); in cifs_resend_rdata()
3885 rdata->mr = NULL; in cifs_resend_rdata()
3888 rc = server->ops->async_readv(rdata); in cifs_resend_rdata()
3895 list_add_tail(&rdata->list, rdata_list); in cifs_resend_rdata()
3900 add_credits_and_wake_if(server, &rdata->credits, 0); in cifs_resend_rdata()
3904 kref_put(&rdata->refcount, cifs_readdata_release); in cifs_resend_rdata()
3913 struct cifs_readdata *rdata; in cifs_send_async_read() local
3965 rdata = cifs_readdata_alloc(cifs_uncached_readv_complete); in cifs_send_async_read()
3966 if (!rdata) { in cifs_send_async_read()
3972 rdata->server = server; in cifs_send_async_read()
3973 rdata->cfile = cifsFileInfo_get(open_file); in cifs_send_async_read()
3974 rdata->offset = fpos; in cifs_send_async_read()
3975 rdata->bytes = cur_len; in cifs_send_async_read()
3976 rdata->pid = pid; in cifs_send_async_read()
3977 rdata->credits = credits_on_stack; in cifs_send_async_read()
3978 rdata->ctx = ctx; in cifs_send_async_read()
3981 rdata->iter = ctx->iter; in cifs_send_async_read()
3982 iov_iter_truncate(&rdata->iter, cur_len); in cifs_send_async_read()
3984 rc = adjust_credits(server, &rdata->credits, rdata->bytes); in cifs_send_async_read()
3987 if (rdata->cfile->invalidHandle) in cifs_send_async_read()
3990 rc = server->ops->async_readv(rdata); in cifs_send_async_read()
3994 add_credits_and_wake_if(server, &rdata->credits, 0); in cifs_send_async_read()
3995 kref_put(&rdata->refcount, cifs_readdata_release); in cifs_send_async_read()
4001 list_add_tail(&rdata->list, rdata_list); in cifs_send_async_read()
4013 struct cifs_readdata *rdata, *tmp; in collect_uncached_read_data() local
4029 list_for_each_entry_safe(rdata, tmp, &ctx->list, list) { in collect_uncached_read_data()
4031 if (!try_wait_for_completion(&rdata->done)) { in collect_uncached_read_data()
4036 if (rdata->result == -EAGAIN) { in collect_uncached_read_data()
4039 unsigned int got_bytes = rdata->got_bytes; in collect_uncached_read_data()
4041 list_del_init(&rdata->list); in collect_uncached_read_data()
4050 rdata, in collect_uncached_read_data()
4054 rdata->offset + got_bytes, in collect_uncached_read_data()
4055 rdata->bytes - got_bytes, in collect_uncached_read_data()
4056 rdata->cfile, cifs_sb, in collect_uncached_read_data()
4059 kref_put(&rdata->refcount, in collect_uncached_read_data()
4066 } else if (rdata->result) in collect_uncached_read_data()
4067 rc = rdata->result; in collect_uncached_read_data()
4070 if (rdata->got_bytes && rdata->got_bytes < rdata->bytes) in collect_uncached_read_data()
4073 ctx->total_len += rdata->got_bytes; in collect_uncached_read_data()
4075 list_del_init(&rdata->list); in collect_uncached_read_data()
4076 kref_put(&rdata->refcount, cifs_readdata_release); in collect_uncached_read_data()
4448 struct cifs_readdata *rdata = container_of(work, in cifs_readahead_complete() local
4452 bool good = rdata->result == 0 || (rdata->result == -EAGAIN && rdata->got_bytes); in cifs_readahead_complete()
4454 XA_STATE(xas, &rdata->mapping->i_pages, rdata->offset / PAGE_SIZE); in cifs_readahead_complete()
4457 cifs_readahead_to_fscache(rdata->mapping->host, in cifs_readahead_complete()
4458 rdata->offset, rdata->bytes); in cifs_readahead_complete()
4460 if (iov_iter_count(&rdata->iter) > 0) in cifs_readahead_complete()
4461 iov_iter_zero(iov_iter_count(&rdata->iter), &rdata->iter); in cifs_readahead_complete()
4463 last = (rdata->offset + rdata->bytes - 1) / PAGE_SIZE; in cifs_readahead_complete()
4475 kref_put(&rdata->refcount, cifs_readdata_release); in cifs_readahead_complete()
4515 struct cifs_readdata *rdata; in cifs_readahead() local
4595 rdata = cifs_readdata_alloc(cifs_readahead_complete); in cifs_readahead()
4596 if (!rdata) { in cifs_readahead()
4602 rdata->offset = ra_index * PAGE_SIZE; in cifs_readahead()
4603 rdata->bytes = nr_pages * PAGE_SIZE; in cifs_readahead()
4604 rdata->cfile = cifsFileInfo_get(open_file); in cifs_readahead()
4605 rdata->server = server; in cifs_readahead()
4606 rdata->mapping = ractl->mapping; in cifs_readahead()
4607 rdata->pid = pid; in cifs_readahead()
4608 rdata->credits = credits_on_stack; in cifs_readahead()
4617 iov_iter_xarray(&rdata->iter, ITER_DEST, &rdata->mapping->i_pages, in cifs_readahead()
4618 rdata->offset, rdata->bytes); in cifs_readahead()
4620 rc = adjust_credits(server, &rdata->credits, rdata->bytes); in cifs_readahead()
4622 if (rdata->cfile->invalidHandle) in cifs_readahead()
4625 rc = server->ops->async_readv(rdata); in cifs_readahead()
4629 add_credits_and_wake_if(server, &rdata->credits, 0); in cifs_readahead()
4630 cifs_unlock_folios(rdata->mapping, in cifs_readahead()
4631 rdata->offset / PAGE_SIZE, in cifs_readahead()
4632 (rdata->offset + rdata->bytes - 1) / PAGE_SIZE); in cifs_readahead()
4634 kref_put(&rdata->refcount, cifs_readdata_release); in cifs_readahead()
4638 kref_put(&rdata->refcount, cifs_readdata_release); in cifs_readahead()