Lines Matching refs:wdata
1902 struct cifs_writedata *wdata = container_of(refcount, in cifs_writedata_release() local
1905 if (wdata->cfile) in cifs_writedata_release()
1906 cifsFileInfo_put(wdata->cfile); in cifs_writedata_release()
1908 kfree(wdata); in cifs_writedata_release()
1916 cifs_writev_requeue(struct cifs_writedata *wdata) in cifs_writev_requeue() argument
1919 struct inode *inode = d_inode(wdata->cfile->dentry); in cifs_writev_requeue()
1923 server = tlink_tcon(wdata->cfile->tlink)->ses->server; in cifs_writev_requeue()
1925 rest_len = wdata->bytes; in cifs_writev_requeue()
1952 wdata2->pages[j] = wdata->pages[i + j]; in cifs_writev_requeue()
1957 wdata2->sync_mode = wdata->sync_mode; in cifs_writev_requeue()
1991 } while (i < wdata->nr_pages); in cifs_writev_requeue()
1994 kref_put(&wdata->refcount, cifs_writedata_release); in cifs_writev_requeue()
2000 struct cifs_writedata *wdata = container_of(work, in cifs_writev_complete() local
2002 struct inode *inode = d_inode(wdata->cfile->dentry); in cifs_writev_complete()
2005 if (wdata->result == 0) { in cifs_writev_complete()
2007 cifs_update_eof(CIFS_I(inode), wdata->offset, wdata->bytes); in cifs_writev_complete()
2009 cifs_stats_bytes_written(tlink_tcon(wdata->cfile->tlink), in cifs_writev_complete()
2010 wdata->bytes); in cifs_writev_complete()
2011 } else if (wdata->sync_mode == WB_SYNC_ALL && wdata->result == -EAGAIN) in cifs_writev_complete()
2012 return cifs_writev_requeue(wdata); in cifs_writev_complete()
2014 for (i = 0; i < wdata->nr_pages; i++) { in cifs_writev_complete()
2015 struct page *page = wdata->pages[i]; in cifs_writev_complete()
2016 if (wdata->result == -EAGAIN) in cifs_writev_complete()
2018 else if (wdata->result < 0) in cifs_writev_complete()
2023 if (wdata->result != -EAGAIN) in cifs_writev_complete()
2024 mapping_set_error(inode->i_mapping, wdata->result); in cifs_writev_complete()
2025 kref_put(&wdata->refcount, cifs_writedata_release); in cifs_writev_complete()
2031 struct cifs_writedata *wdata; in cifs_writedata_alloc() local
2034 wdata = kzalloc(sizeof(*wdata) + in cifs_writedata_alloc()
2036 if (wdata != NULL) { in cifs_writedata_alloc()
2037 kref_init(&wdata->refcount); in cifs_writedata_alloc()
2038 INIT_LIST_HEAD(&wdata->list); in cifs_writedata_alloc()
2039 init_completion(&wdata->done); in cifs_writedata_alloc()
2040 INIT_WORK(&wdata->work, complete); in cifs_writedata_alloc()
2042 return wdata; in cifs_writedata_alloc()
2052 struct cifs_writedata *wdata = mid->callback_data; in cifs_writev_callback() local
2053 struct cifs_tcon *tcon = tlink_tcon(wdata->cfile->tlink); in cifs_writev_callback()
2060 wdata->result = cifs_check_receive(mid, tcon->ses->server, 0); in cifs_writev_callback()
2061 if (wdata->result != 0) in cifs_writev_callback()
2073 if (written > wdata->bytes) in cifs_writev_callback()
2076 if (written < wdata->bytes) in cifs_writev_callback()
2077 wdata->result = -ENOSPC; in cifs_writev_callback()
2079 wdata->bytes = written; in cifs_writev_callback()
2083 wdata->result = -EAGAIN; in cifs_writev_callback()
2086 wdata->result = -EIO; in cifs_writev_callback()
2090 queue_work(cifsiod_wq, &wdata->work); in cifs_writev_callback()
2099 cifs_async_writev(struct cifs_writedata *wdata, in cifs_async_writev() argument
2105 struct cifs_tcon *tcon = tlink_tcon(wdata->cfile->tlink); in cifs_async_writev()
2113 if (wdata->offset >> 32 > 0) { in cifs_async_writev()
2123 smb->hdr.Pid = cpu_to_le16((__u16)wdata->pid); in cifs_async_writev()
2124 smb->hdr.PidHigh = cpu_to_le16((__u16)(wdata->pid >> 16)); in cifs_async_writev()
2127 smb->Fid = wdata->cfile->fid.netfid; in cifs_async_writev()
2128 smb->OffsetLow = cpu_to_le32(wdata->offset & 0xFFFFFFFF); in cifs_async_writev()
2130 smb->OffsetHigh = cpu_to_le32(wdata->offset >> 32); in cifs_async_writev()
2144 rqst.rq_pages = wdata->pages; in cifs_async_writev()
2145 rqst.rq_npages = wdata->nr_pages; in cifs_async_writev()
2146 rqst.rq_pagesz = wdata->pagesz; in cifs_async_writev()
2147 rqst.rq_tailsz = wdata->tailsz; in cifs_async_writev()
2150 wdata->offset, wdata->bytes); in cifs_async_writev()
2152 smb->DataLengthLow = cpu_to_le16(wdata->bytes & 0xFFFF); in cifs_async_writev()
2153 smb->DataLengthHigh = cpu_to_le16(wdata->bytes >> 16); in cifs_async_writev()
2156 inc_rfc1001_len(&smb->hdr, wdata->bytes + 1); in cifs_async_writev()
2157 put_bcc(wdata->bytes + 1, &smb->hdr); in cifs_async_writev()
2162 inc_rfc1001_len(&smbw->hdr, wdata->bytes + 5); in cifs_async_writev()
2163 put_bcc(wdata->bytes + 5, &smbw->hdr); in cifs_async_writev()
2167 kref_get(&wdata->refcount); in cifs_async_writev()
2169 cifs_writev_callback, wdata, 0); in cifs_async_writev()
2174 kref_put(&wdata->refcount, release); in cifs_async_writev()