Lines Matching refs:wdata
2415 struct cifs_writedata *wdata = container_of(refcount, in cifs_writedata_release() local
2418 if (wdata->mr) { in cifs_writedata_release()
2419 smbd_deregister_mr(wdata->mr); in cifs_writedata_release()
2420 wdata->mr = NULL; in cifs_writedata_release()
2424 if (wdata->cfile) in cifs_writedata_release()
2425 cifsFileInfo_put(wdata->cfile); in cifs_writedata_release()
2427 kfree(wdata); in cifs_writedata_release()
2435 cifs_writev_requeue(struct cifs_writedata *wdata) in cifs_writev_requeue() argument
2438 struct inode *inode = d_inode(wdata->cfile->dentry); in cifs_writev_requeue()
2440 unsigned int rest_len = wdata->bytes; in cifs_writev_requeue()
2441 loff_t fpos = wdata->offset; in cifs_writev_requeue()
2443 server = tlink_tcon(wdata->cfile->tlink)->ses->server; in cifs_writev_requeue()
2465 wdata2->sync_mode = wdata->sync_mode; in cifs_writev_requeue()
2468 wdata2->iter = wdata->iter; in cifs_writev_requeue()
2470 iov_iter_advance(&wdata2->iter, fpos - wdata->offset); in cifs_writev_requeue()
2508 if (iov_iter_is_xarray(&wdata->iter)) in cifs_writev_requeue()
2513 kref_put(&wdata->refcount, cifs_writedata_release); in cifs_writev_requeue()
2519 struct cifs_writedata *wdata = container_of(work, in cifs_writev_complete() local
2521 struct inode *inode = d_inode(wdata->cfile->dentry); in cifs_writev_complete()
2523 if (wdata->result == 0) { in cifs_writev_complete()
2525 cifs_update_eof(CIFS_I(inode), wdata->offset, wdata->bytes); in cifs_writev_complete()
2527 cifs_stats_bytes_written(tlink_tcon(wdata->cfile->tlink), in cifs_writev_complete()
2528 wdata->bytes); in cifs_writev_complete()
2529 } else if (wdata->sync_mode == WB_SYNC_ALL && wdata->result == -EAGAIN) in cifs_writev_complete()
2530 return cifs_writev_requeue(wdata); in cifs_writev_complete()
2532 if (wdata->result == -EAGAIN) in cifs_writev_complete()
2533 cifs_pages_write_redirty(inode, wdata->offset, wdata->bytes); in cifs_writev_complete()
2534 else if (wdata->result < 0) in cifs_writev_complete()
2535 cifs_pages_write_failed(inode, wdata->offset, wdata->bytes); in cifs_writev_complete()
2537 cifs_pages_written_back(inode, wdata->offset, wdata->bytes); in cifs_writev_complete()
2539 if (wdata->result != -EAGAIN) in cifs_writev_complete()
2540 mapping_set_error(inode->i_mapping, wdata->result); in cifs_writev_complete()
2541 kref_put(&wdata->refcount, cifs_writedata_release); in cifs_writev_complete()
2546 struct cifs_writedata *wdata; in cifs_writedata_alloc() local
2548 wdata = kzalloc(sizeof(*wdata), GFP_NOFS); in cifs_writedata_alloc()
2549 if (wdata != NULL) { in cifs_writedata_alloc()
2550 kref_init(&wdata->refcount); in cifs_writedata_alloc()
2551 INIT_LIST_HEAD(&wdata->list); in cifs_writedata_alloc()
2552 init_completion(&wdata->done); in cifs_writedata_alloc()
2553 INIT_WORK(&wdata->work, complete); in cifs_writedata_alloc()
2555 return wdata; in cifs_writedata_alloc()
2732 struct cifs_writedata *wdata; in cifs_write_back_from_locked_folio() local
2764 wdata = cifs_writedata_alloc(cifs_writev_complete); in cifs_write_back_from_locked_folio()
2765 if (!wdata) { in cifs_write_back_from_locked_folio()
2770 wdata->sync_mode = wbc->sync_mode; in cifs_write_back_from_locked_folio()
2771 wdata->offset = folio_pos(folio); in cifs_write_back_from_locked_folio()
2772 wdata->pid = cfile->pid; in cifs_write_back_from_locked_folio()
2773 wdata->credits = credits_on_stack; in cifs_write_back_from_locked_folio()
2774 wdata->cfile = cfile; in cifs_write_back_from_locked_folio()
2775 wdata->server = server; in cifs_write_back_from_locked_folio()
2806 wdata->bytes = len; in cifs_write_back_from_locked_folio()
2815 iov_iter_xarray(&wdata->iter, ITER_SOURCE, &mapping->i_pages, in cifs_write_back_from_locked_folio()
2818 rc = adjust_credits(wdata->server, &wdata->credits, wdata->bytes); in cifs_write_back_from_locked_folio()
2822 if (wdata->cfile->invalidHandle) in cifs_write_back_from_locked_folio()
2825 rc = wdata->server->ops->async_writev(wdata, in cifs_write_back_from_locked_folio()
2828 kref_put(&wdata->refcount, cifs_writedata_release); in cifs_write_back_from_locked_folio()
2838 kref_put(&wdata->refcount, cifs_writedata_release); in cifs_write_back_from_locked_folio()
3230 struct cifs_writedata *wdata = container_of(refcount, in cifs_uncached_writedata_release() local
3233 kref_put(&wdata->ctx->refcount, cifs_aio_ctx_release); in cifs_uncached_writedata_release()
3242 struct cifs_writedata *wdata = container_of(work, in cifs_uncached_writev_complete() local
3244 struct inode *inode = d_inode(wdata->cfile->dentry); in cifs_uncached_writev_complete()
3248 cifs_update_eof(cifsi, wdata->offset, wdata->bytes); in cifs_uncached_writev_complete()
3253 complete(&wdata->done); in cifs_uncached_writev_complete()
3254 collect_uncached_write_data(wdata->ctx); in cifs_uncached_writev_complete()
3256 kref_put(&wdata->refcount, cifs_uncached_writedata_release); in cifs_uncached_writev_complete()
3260 cifs_resend_wdata(struct cifs_writedata *wdata, struct list_head *wdata_list, in cifs_resend_wdata() argument
3266 struct TCP_Server_Info *server = wdata->server; in cifs_resend_wdata()
3269 if (wdata->cfile->invalidHandle) { in cifs_resend_wdata()
3270 rc = cifs_reopen_file(wdata->cfile, false); in cifs_resend_wdata()
3284 rc = server->ops->wait_mtu_credits(server, wdata->bytes, in cifs_resend_wdata()
3289 if (wsize < wdata->bytes) { in cifs_resend_wdata()
3293 } while (wsize < wdata->bytes); in cifs_resend_wdata()
3294 wdata->credits = credits; in cifs_resend_wdata()
3296 rc = adjust_credits(server, &wdata->credits, wdata->bytes); in cifs_resend_wdata()
3299 if (wdata->cfile->invalidHandle) in cifs_resend_wdata()
3303 if (wdata->mr) { in cifs_resend_wdata()
3304 wdata->mr->need_invalidate = true; in cifs_resend_wdata()
3305 smbd_deregister_mr(wdata->mr); in cifs_resend_wdata()
3306 wdata->mr = NULL; in cifs_resend_wdata()
3309 rc = server->ops->async_writev(wdata, in cifs_resend_wdata()
3316 list_add_tail(&wdata->list, wdata_list); in cifs_resend_wdata()
3321 add_credits_and_wake_if(server, &wdata->credits, 0); in cifs_resend_wdata()
3325 kref_put(&wdata->refcount, cifs_uncached_writedata_release); in cifs_resend_wdata()
3377 struct cifs_writedata *wdata; in cifs_write_from_iter() local
3434 wdata = cifs_writedata_alloc(cifs_uncached_writev_complete); in cifs_write_from_iter()
3435 if (!wdata) { in cifs_write_from_iter()
3441 wdata->sync_mode = WB_SYNC_ALL; in cifs_write_from_iter()
3442 wdata->offset = (__u64)fpos; in cifs_write_from_iter()
3443 wdata->cfile = cifsFileInfo_get(open_file); in cifs_write_from_iter()
3444 wdata->server = server; in cifs_write_from_iter()
3445 wdata->pid = pid; in cifs_write_from_iter()
3446 wdata->bytes = cur_len; in cifs_write_from_iter()
3447 wdata->credits = credits_on_stack; in cifs_write_from_iter()
3448 wdata->iter = *from; in cifs_write_from_iter()
3449 wdata->ctx = ctx; in cifs_write_from_iter()
3452 iov_iter_truncate(&wdata->iter, cur_len); in cifs_write_from_iter()
3454 rc = adjust_credits(server, &wdata->credits, wdata->bytes); in cifs_write_from_iter()
3457 if (wdata->cfile->invalidHandle) in cifs_write_from_iter()
3460 rc = server->ops->async_writev(wdata, in cifs_write_from_iter()
3465 add_credits_and_wake_if(server, &wdata->credits, 0); in cifs_write_from_iter()
3466 kref_put(&wdata->refcount, in cifs_write_from_iter()
3473 list_add_tail(&wdata->list, wdata_list); in cifs_write_from_iter()
3485 struct cifs_writedata *wdata, *tmp; in collect_uncached_write_data() local
3508 list_for_each_entry_safe(wdata, tmp, &ctx->list, list) { in collect_uncached_write_data()
3510 if (!try_wait_for_completion(&wdata->done)) { in collect_uncached_write_data()
3515 if (wdata->result) in collect_uncached_write_data()
3516 rc = wdata->result; in collect_uncached_write_data()
3518 ctx->total_len += wdata->bytes; in collect_uncached_write_data()
3526 list_del_init(&wdata->list); in collect_uncached_write_data()
3530 wdata, &tmp_list, ctx); in collect_uncached_write_data()
3533 wdata->offset - ctx->pos); in collect_uncached_write_data()
3535 rc = cifs_write_from_iter(wdata->offset, in collect_uncached_write_data()
3536 wdata->bytes, &tmp_from, in collect_uncached_write_data()
3540 kref_put(&wdata->refcount, in collect_uncached_write_data()
3548 list_del_init(&wdata->list); in collect_uncached_write_data()
3549 kref_put(&wdata->refcount, cifs_uncached_writedata_release); in collect_uncached_write_data()