Lines Matching refs:wdata

2199 	struct cifs_writedata *wdata;
2201 wdata = cifs_writedata_alloc((unsigned int)tofind,
2203 if (!wdata)
2207 PAGECACHE_TAG_DIRTY, tofind, wdata->pages);
2208 return wdata;
2212 wdata_prepare_pages(struct cifs_writedata *wdata, unsigned int found_pages,
2221 page = wdata->pages[i];
2272 wdata->pages[i] = page;
2279 *index = wdata->pages[0]->index + 1;
2283 put_page(wdata->pages[i]);
2284 wdata->pages[i] = NULL;
2291 wdata_send_pages(struct cifs_writedata *wdata, unsigned int nr_pages,
2296 wdata->sync_mode = wbc->sync_mode;
2297 wdata->nr_pages = nr_pages;
2298 wdata->offset = page_offset(wdata->pages[0]);
2299 wdata->pagesz = PAGE_SIZE;
2300 wdata->tailsz = min(i_size_read(mapping->host) -
2301 page_offset(wdata->pages[nr_pages - 1]),
2303 wdata->bytes = ((nr_pages - 1) * PAGE_SIZE) + wdata->tailsz;
2304 wdata->pid = wdata->cfile->pid;
2306 rc = adjust_credits(wdata->server, &wdata->credits, wdata->bytes);
2310 if (wdata->cfile->invalidHandle)
2313 rc = wdata->server->ops->async_writev(wdata,
2327 struct cifs_writedata *wdata;
2379 wdata = wdata_alloc_and_fillpages(tofind, mapping, end, &index,
2381 if (!wdata) {
2389 kref_put(&wdata->refcount, cifs_writedata_release);
2394 nr_pages = wdata_prepare_pages(wdata, found_pages, mapping, wbc,
2399 kref_put(&wdata->refcount, cifs_writedata_release);
2404 wdata->credits = credits_on_stack;
2405 wdata->cfile = cfile;
2406 wdata->server = server;
2409 if (!wdata->cfile) {
2417 rc = wdata_send_pages(wdata, nr_pages, mapping, wbc);
2420 unlock_page(wdata->pages[i]);
2424 add_credits_and_wake_if(server, &wdata->credits, 0);
2428 wdata->pages[i]);
2430 SetPageError(wdata->pages[i]);
2431 end_page_writeback(wdata->pages[i]);
2432 put_page(wdata->pages[i]);
2437 kref_put(&wdata->refcount, cifs_writedata_release);
2753 struct cifs_writedata *wdata = container_of(refcount,
2756 kref_put(&wdata->ctx->refcount, cifs_aio_ctx_release);
2757 for (i = 0; i < wdata->nr_pages; i++)
2758 put_page(wdata->pages[i]);
2767 struct cifs_writedata *wdata = container_of(work,
2769 struct inode *inode = d_inode(wdata->cfile->dentry);
2773 cifs_update_eof(cifsi, wdata->offset, wdata->bytes);
2778 complete(&wdata->done);
2779 collect_uncached_write_data(wdata->ctx);
2781 kref_put(&wdata->refcount, cifs_uncached_writedata_release);
2785 wdata_fill_from_iovec(struct cifs_writedata *wdata, struct iov_iter *from,
2794 copied = copy_page_from_iter(wdata->pages[i], 0, bytes, from);
2827 cifs_resend_wdata(struct cifs_writedata *wdata, struct list_head *wdata_list,
2833 struct TCP_Server_Info *server = wdata->server;
2836 if (wdata->cfile->invalidHandle) {
2837 rc = cifs_reopen_file(wdata->cfile, false);
2846 * Wait for credits to resend this wdata.
2847 * Note: we are attempting to resend the whole wdata not in
2851 rc = server->ops->wait_mtu_credits(server, wdata->bytes,
2856 if (wsize < wdata->bytes) {
2860 } while (wsize < wdata->bytes);
2861 wdata->credits = credits;
2863 rc = adjust_credits(server, &wdata->credits, wdata->bytes);
2866 if (wdata->cfile->invalidHandle)
2870 if (wdata->mr) {
2871 wdata->mr->need_invalidate = true;
2872 smbd_deregister_mr(wdata->mr);
2873 wdata->mr = NULL;
2876 rc = server->ops->async_writev(wdata,
2883 list_add_tail(&wdata->list, wdata_list);
2888 add_credits_and_wake_if(server, &wdata->credits, 0);
2892 kref_put(&wdata->refcount, cifs_uncached_writedata_release);
2905 struct cifs_writedata *wdata;
2964 wdata = cifs_writedata_direct_alloc(pagevec,
2966 if (!wdata) {
2973 wdata->page_offset = start;
2974 wdata->tailsz =
2981 wdata = cifs_writedata_alloc(nr_pages,
2983 if (!wdata) {
2989 rc = cifs_write_allocate_pages(wdata->pages, nr_pages);
2991 kvfree(wdata->pages);
2992 kfree(wdata);
2999 wdata, from, &cur_len, &num_pages);
3002 put_page(wdata->pages[i]);
3003 kvfree(wdata->pages);
3004 kfree(wdata);
3014 put_page(wdata->pages[nr_pages - 1]);
3016 wdata->tailsz = cur_len - ((nr_pages - 1) * PAGE_SIZE);
3019 wdata->sync_mode = WB_SYNC_ALL;
3020 wdata->nr_pages = nr_pages;
3021 wdata->offset = (__u64)offset;
3022 wdata->cfile = cifsFileInfo_get(open_file);
3023 wdata->server = server;
3024 wdata->pid = pid;
3025 wdata->bytes = cur_len;
3026 wdata->pagesz = PAGE_SIZE;
3027 wdata->credits = credits_on_stack;
3028 wdata->ctx = ctx;
3031 rc = adjust_credits(server, &wdata->credits, wdata->bytes);
3034 if (wdata->cfile->invalidHandle)
3037 rc = server->ops->async_writev(wdata,
3042 add_credits_and_wake_if(server, &wdata->credits, 0);
3043 kref_put(&wdata->refcount,
3053 list_add_tail(&wdata->list, wdata_list);
3064 struct cifs_writedata *wdata, *tmp;
3087 list_for_each_entry_safe(wdata, tmp, &ctx->list, list) {
3089 if (!try_wait_for_completion(&wdata->done)) {
3094 if (wdata->result)
3095 rc = wdata->result;
3097 ctx->total_len += wdata->bytes;
3105 list_del_init(&wdata->list);
3109 wdata, &tmp_list, ctx);
3112 wdata->offset - ctx->pos);
3114 rc = cifs_write_from_iter(wdata->offset,
3115 wdata->bytes, &tmp_from,
3119 kref_put(&wdata->refcount,
3127 list_del_init(&wdata->list);
3128 kref_put(&wdata->refcount, cifs_uncached_writedata_release);