Lines Matching refs:wdata
1954 struct cifs_writedata *wdata = container_of(refcount, in cifs_writedata_release() local
1957 if (wdata->mr) { in cifs_writedata_release()
1958 smbd_deregister_mr(wdata->mr); in cifs_writedata_release()
1959 wdata->mr = NULL; in cifs_writedata_release()
1963 if (wdata->cfile) in cifs_writedata_release()
1964 cifsFileInfo_put(wdata->cfile); in cifs_writedata_release()
1966 kvfree(wdata->pages); in cifs_writedata_release()
1967 kfree(wdata); in cifs_writedata_release()
1975 cifs_writev_requeue(struct cifs_writedata *wdata) in cifs_writev_requeue() argument
1978 struct inode *inode = d_inode(wdata->cfile->dentry); in cifs_writev_requeue()
1982 server = tlink_tcon(wdata->cfile->tlink)->ses->server; in cifs_writev_requeue()
1984 rest_len = wdata->bytes; in cifs_writev_requeue()
2011 wdata2->pages[j] = wdata->pages[i + j]; in cifs_writev_requeue()
2016 wdata2->sync_mode = wdata->sync_mode; in cifs_writev_requeue()
2050 } while (i < wdata->nr_pages); in cifs_writev_requeue()
2053 kref_put(&wdata->refcount, cifs_writedata_release); in cifs_writev_requeue()
2059 struct cifs_writedata *wdata = container_of(work, in cifs_writev_complete() local
2061 struct inode *inode = d_inode(wdata->cfile->dentry); in cifs_writev_complete()
2064 if (wdata->result == 0) { in cifs_writev_complete()
2066 cifs_update_eof(CIFS_I(inode), wdata->offset, wdata->bytes); in cifs_writev_complete()
2068 cifs_stats_bytes_written(tlink_tcon(wdata->cfile->tlink), in cifs_writev_complete()
2069 wdata->bytes); in cifs_writev_complete()
2070 } else if (wdata->sync_mode == WB_SYNC_ALL && wdata->result == -EAGAIN) in cifs_writev_complete()
2071 return cifs_writev_requeue(wdata); in cifs_writev_complete()
2073 for (i = 0; i < wdata->nr_pages; i++) { in cifs_writev_complete()
2074 struct page *page = wdata->pages[i]; in cifs_writev_complete()
2075 if (wdata->result == -EAGAIN) in cifs_writev_complete()
2077 else if (wdata->result < 0) in cifs_writev_complete()
2082 if (wdata->result != -EAGAIN) in cifs_writev_complete()
2083 mapping_set_error(inode->i_mapping, wdata->result); in cifs_writev_complete()
2084 kref_put(&wdata->refcount, cifs_writedata_release); in cifs_writev_complete()
2101 struct cifs_writedata *wdata; in cifs_writedata_direct_alloc() local
2103 wdata = kzalloc(sizeof(*wdata), GFP_NOFS); in cifs_writedata_direct_alloc()
2104 if (wdata != NULL) { in cifs_writedata_direct_alloc()
2105 wdata->pages = pages; in cifs_writedata_direct_alloc()
2106 kref_init(&wdata->refcount); in cifs_writedata_direct_alloc()
2107 INIT_LIST_HEAD(&wdata->list); in cifs_writedata_direct_alloc()
2108 init_completion(&wdata->done); in cifs_writedata_direct_alloc()
2109 INIT_WORK(&wdata->work, complete); in cifs_writedata_direct_alloc()
2111 return wdata; in cifs_writedata_direct_alloc()
2121 struct cifs_writedata *wdata = mid->callback_data; in cifs_writev_callback() local
2122 struct cifs_tcon *tcon = tlink_tcon(wdata->cfile->tlink); in cifs_writev_callback()
2128 wdata->result = cifs_check_receive(mid, tcon->ses->server, 0); in cifs_writev_callback()
2129 if (wdata->result != 0) in cifs_writev_callback()
2141 if (written > wdata->bytes) in cifs_writev_callback()
2144 if (written < wdata->bytes) in cifs_writev_callback()
2145 wdata->result = -ENOSPC; in cifs_writev_callback()
2147 wdata->bytes = written; in cifs_writev_callback()
2151 wdata->result = -EAGAIN; in cifs_writev_callback()
2154 wdata->result = -EIO; in cifs_writev_callback()
2158 queue_work(cifsiod_wq, &wdata->work); in cifs_writev_callback()
2165 cifs_async_writev(struct cifs_writedata *wdata, in cifs_async_writev() argument
2171 struct cifs_tcon *tcon = tlink_tcon(wdata->cfile->tlink); in cifs_async_writev()
2179 if (wdata->offset >> 32 > 0) { in cifs_async_writev()
2189 smb->hdr.Pid = cpu_to_le16((__u16)wdata->pid); in cifs_async_writev()
2190 smb->hdr.PidHigh = cpu_to_le16((__u16)(wdata->pid >> 16)); in cifs_async_writev()
2193 smb->Fid = wdata->cfile->fid.netfid; in cifs_async_writev()
2194 smb->OffsetLow = cpu_to_le32(wdata->offset & 0xFFFFFFFF); in cifs_async_writev()
2196 smb->OffsetHigh = cpu_to_le32(wdata->offset >> 32); in cifs_async_writev()
2212 rqst.rq_pages = wdata->pages; in cifs_async_writev()
2213 rqst.rq_npages = wdata->nr_pages; in cifs_async_writev()
2214 rqst.rq_pagesz = wdata->pagesz; in cifs_async_writev()
2215 rqst.rq_tailsz = wdata->tailsz; in cifs_async_writev()
2218 wdata->offset, wdata->bytes); in cifs_async_writev()
2220 smb->DataLengthLow = cpu_to_le16(wdata->bytes & 0xFFFF); in cifs_async_writev()
2221 smb->DataLengthHigh = cpu_to_le16(wdata->bytes >> 16); in cifs_async_writev()
2224 inc_rfc1001_len(&smb->hdr, wdata->bytes + 1); in cifs_async_writev()
2225 put_bcc(wdata->bytes + 1, &smb->hdr); in cifs_async_writev()
2230 inc_rfc1001_len(&smbw->hdr, wdata->bytes + 5); in cifs_async_writev()
2231 put_bcc(wdata->bytes + 5, &smbw->hdr); in cifs_async_writev()
2235 kref_get(&wdata->refcount); in cifs_async_writev()
2237 cifs_writev_callback, NULL, wdata, 0); in cifs_async_writev()
2242 kref_put(&wdata->refcount, release); in cifs_async_writev()