Lines Matching refs:wdata
1973 struct cifs_writedata *wdata = container_of(refcount, in cifs_writedata_release() local
1976 if (wdata->mr) { in cifs_writedata_release()
1977 smbd_deregister_mr(wdata->mr); in cifs_writedata_release()
1978 wdata->mr = NULL; in cifs_writedata_release()
1982 if (wdata->cfile) in cifs_writedata_release()
1983 cifsFileInfo_put(wdata->cfile); in cifs_writedata_release()
1985 kvfree(wdata->pages); in cifs_writedata_release()
1986 kfree(wdata); in cifs_writedata_release()
1994 cifs_writev_requeue(struct cifs_writedata *wdata) in cifs_writev_requeue() argument
1997 struct inode *inode = d_inode(wdata->cfile->dentry); in cifs_writev_requeue()
2001 server = tlink_tcon(wdata->cfile->tlink)->ses->server; in cifs_writev_requeue()
2003 rest_len = wdata->bytes; in cifs_writev_requeue()
2030 wdata2->pages[j] = wdata->pages[i + j]; in cifs_writev_requeue()
2035 wdata2->sync_mode = wdata->sync_mode; in cifs_writev_requeue()
2074 } while (i < wdata->nr_pages); in cifs_writev_requeue()
2077 for (; i < wdata->nr_pages; i++) { in cifs_writev_requeue()
2078 SetPageError(wdata->pages[i]); in cifs_writev_requeue()
2079 end_page_writeback(wdata->pages[i]); in cifs_writev_requeue()
2080 put_page(wdata->pages[i]); in cifs_writev_requeue()
2085 kref_put(&wdata->refcount, cifs_writedata_release); in cifs_writev_requeue()
2091 struct cifs_writedata *wdata = container_of(work, in cifs_writev_complete() local
2093 struct inode *inode = d_inode(wdata->cfile->dentry); in cifs_writev_complete()
2096 if (wdata->result == 0) { in cifs_writev_complete()
2098 cifs_update_eof(CIFS_I(inode), wdata->offset, wdata->bytes); in cifs_writev_complete()
2100 cifs_stats_bytes_written(tlink_tcon(wdata->cfile->tlink), in cifs_writev_complete()
2101 wdata->bytes); in cifs_writev_complete()
2102 } else if (wdata->sync_mode == WB_SYNC_ALL && wdata->result == -EAGAIN) in cifs_writev_complete()
2103 return cifs_writev_requeue(wdata); in cifs_writev_complete()
2105 for (i = 0; i < wdata->nr_pages; i++) { in cifs_writev_complete()
2106 struct page *page = wdata->pages[i]; in cifs_writev_complete()
2107 if (wdata->result == -EAGAIN) in cifs_writev_complete()
2109 else if (wdata->result < 0) in cifs_writev_complete()
2114 if (wdata->result != -EAGAIN) in cifs_writev_complete()
2115 mapping_set_error(inode->i_mapping, wdata->result); in cifs_writev_complete()
2116 kref_put(&wdata->refcount, cifs_writedata_release); in cifs_writev_complete()
2133 struct cifs_writedata *wdata; in cifs_writedata_direct_alloc() local
2135 wdata = kzalloc(sizeof(*wdata), GFP_NOFS); in cifs_writedata_direct_alloc()
2136 if (wdata != NULL) { in cifs_writedata_direct_alloc()
2137 wdata->pages = pages; in cifs_writedata_direct_alloc()
2138 kref_init(&wdata->refcount); in cifs_writedata_direct_alloc()
2139 INIT_LIST_HEAD(&wdata->list); in cifs_writedata_direct_alloc()
2140 init_completion(&wdata->done); in cifs_writedata_direct_alloc()
2141 INIT_WORK(&wdata->work, complete); in cifs_writedata_direct_alloc()
2143 return wdata; in cifs_writedata_direct_alloc()
2153 struct cifs_writedata *wdata = mid->callback_data; in cifs_writev_callback() local
2154 struct cifs_tcon *tcon = tlink_tcon(wdata->cfile->tlink); in cifs_writev_callback()
2161 wdata->result = cifs_check_receive(mid, tcon->ses->server, 0); in cifs_writev_callback()
2162 if (wdata->result != 0) in cifs_writev_callback()
2174 if (written > wdata->bytes) in cifs_writev_callback()
2177 if (written < wdata->bytes) in cifs_writev_callback()
2178 wdata->result = -ENOSPC; in cifs_writev_callback()
2180 wdata->bytes = written; in cifs_writev_callback()
2184 wdata->result = -EAGAIN; in cifs_writev_callback()
2187 wdata->result = -EIO; in cifs_writev_callback()
2191 queue_work(cifsiod_wq, &wdata->work); in cifs_writev_callback()
2198 cifs_async_writev(struct cifs_writedata *wdata, in cifs_async_writev() argument
2204 struct cifs_tcon *tcon = tlink_tcon(wdata->cfile->tlink); in cifs_async_writev()
2212 if (wdata->offset >> 32 > 0) { in cifs_async_writev()
2222 smb->hdr.Pid = cpu_to_le16((__u16)wdata->pid); in cifs_async_writev()
2223 smb->hdr.PidHigh = cpu_to_le16((__u16)(wdata->pid >> 16)); in cifs_async_writev()
2226 smb->Fid = wdata->cfile->fid.netfid; in cifs_async_writev()
2227 smb->OffsetLow = cpu_to_le32(wdata->offset & 0xFFFFFFFF); in cifs_async_writev()
2229 smb->OffsetHigh = cpu_to_le32(wdata->offset >> 32); in cifs_async_writev()
2245 rqst.rq_pages = wdata->pages; in cifs_async_writev()
2246 rqst.rq_offset = wdata->page_offset; in cifs_async_writev()
2247 rqst.rq_npages = wdata->nr_pages; in cifs_async_writev()
2248 rqst.rq_pagesz = wdata->pagesz; in cifs_async_writev()
2249 rqst.rq_tailsz = wdata->tailsz; in cifs_async_writev()
2252 wdata->offset, wdata->bytes); in cifs_async_writev()
2254 smb->DataLengthLow = cpu_to_le16(wdata->bytes & 0xFFFF); in cifs_async_writev()
2255 smb->DataLengthHigh = cpu_to_le16(wdata->bytes >> 16); in cifs_async_writev()
2258 inc_rfc1001_len(&smb->hdr, wdata->bytes + 1); in cifs_async_writev()
2259 put_bcc(wdata->bytes + 1, &smb->hdr); in cifs_async_writev()
2264 inc_rfc1001_len(&smbw->hdr, wdata->bytes + 5); in cifs_async_writev()
2265 put_bcc(wdata->bytes + 5, &smbw->hdr); in cifs_async_writev()
2269 kref_get(&wdata->refcount); in cifs_async_writev()
2271 cifs_writev_callback, NULL, wdata, 0, NULL); in cifs_async_writev()
2276 kref_put(&wdata->refcount, release); in cifs_async_writev()