Commit ab58fbde authored by David Howells's avatar David Howells

cifs: Use more fields from netfs_io_subrequest

Use more fields from netfs_io_subrequest instead of those incorporated into
cifs_io_subrequest from cifs_readdata and cifs_writedata.
Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
cc: Steve French <sfrench@samba.org>
cc: Shyam Prasad N <nspmangalore@gmail.com>
cc: Rohith Surabattula <rohiths.msft@gmail.com>
cc: Jeff Layton <jlayton@kernel.org>
cc: linux-cifs@vger.kernel.org
cc: netfs@lists.linux.dev
cc: linux-fsdevel@vger.kernel.org
cc: linux-mm@kvack.org
parent a975a2f2
...@@ -1515,9 +1515,6 @@ struct cifs_io_subrequest { ...@@ -1515,9 +1515,6 @@ struct cifs_io_subrequest {
struct list_head list; struct list_head list;
struct completion done; struct completion done;
struct work_struct work; struct work_struct work;
struct iov_iter iter;
__u64 offset;
unsigned int bytes;
}; };
/* /*
......
...@@ -1269,12 +1269,12 @@ cifs_readv_callback(struct mid_q_entry *mid) ...@@ -1269,12 +1269,12 @@ cifs_readv_callback(struct mid_q_entry *mid)
struct TCP_Server_Info *server = tcon->ses->server; struct TCP_Server_Info *server = tcon->ses->server;
struct smb_rqst rqst = { .rq_iov = rdata->iov, struct smb_rqst rqst = { .rq_iov = rdata->iov,
.rq_nvec = 2, .rq_nvec = 2,
.rq_iter = rdata->iter }; .rq_iter = rdata->subreq.io_iter };
struct cifs_credits credits = { .value = 1, .instance = 0 }; struct cifs_credits credits = { .value = 1, .instance = 0 };
cifs_dbg(FYI, "%s: mid=%llu state=%d result=%d bytes=%u\n", cifs_dbg(FYI, "%s: mid=%llu state=%d result=%d bytes=%zu\n",
__func__, mid->mid, mid->mid_state, rdata->result, __func__, mid->mid, mid->mid_state, rdata->result,
rdata->bytes); rdata->subreq.len);
switch (mid->mid_state) { switch (mid->mid_state) {
case MID_RESPONSE_RECEIVED: case MID_RESPONSE_RECEIVED:
...@@ -1322,14 +1322,14 @@ cifs_async_readv(struct cifs_io_subrequest *rdata) ...@@ -1322,14 +1322,14 @@ cifs_async_readv(struct cifs_io_subrequest *rdata)
struct smb_rqst rqst = { .rq_iov = rdata->iov, struct smb_rqst rqst = { .rq_iov = rdata->iov,
.rq_nvec = 2 }; .rq_nvec = 2 };
cifs_dbg(FYI, "%s: offset=%llu bytes=%u\n", cifs_dbg(FYI, "%s: offset=%llu bytes=%zu\n",
__func__, rdata->offset, rdata->bytes); __func__, rdata->subreq.start, rdata->subreq.len);
if (tcon->ses->capabilities & CAP_LARGE_FILES) if (tcon->ses->capabilities & CAP_LARGE_FILES)
wct = 12; wct = 12;
else { else {
wct = 10; /* old style read */ wct = 10; /* old style read */
if ((rdata->offset >> 32) > 0) { if ((rdata->subreq.start >> 32) > 0) {
/* can not handle this big offset for old */ /* can not handle this big offset for old */
return -EIO; return -EIO;
} }
...@@ -1344,12 +1344,12 @@ cifs_async_readv(struct cifs_io_subrequest *rdata) ...@@ -1344,12 +1344,12 @@ cifs_async_readv(struct cifs_io_subrequest *rdata)
smb->AndXCommand = 0xFF; /* none */ smb->AndXCommand = 0xFF; /* none */
smb->Fid = rdata->cfile->fid.netfid; smb->Fid = rdata->cfile->fid.netfid;
smb->OffsetLow = cpu_to_le32(rdata->offset & 0xFFFFFFFF); smb->OffsetLow = cpu_to_le32(rdata->subreq.start & 0xFFFFFFFF);
if (wct == 12) if (wct == 12)
smb->OffsetHigh = cpu_to_le32(rdata->offset >> 32); smb->OffsetHigh = cpu_to_le32(rdata->subreq.start >> 32);
smb->Remaining = 0; smb->Remaining = 0;
smb->MaxCount = cpu_to_le16(rdata->bytes & 0xFFFF); smb->MaxCount = cpu_to_le16(rdata->subreq.len & 0xFFFF);
smb->MaxCountHigh = cpu_to_le32(rdata->bytes >> 16); smb->MaxCountHigh = cpu_to_le32(rdata->subreq.len >> 16);
if (wct == 12) if (wct == 12)
smb->ByteCount = 0; smb->ByteCount = 0;
else { else {
...@@ -1633,13 +1633,13 @@ cifs_writev_callback(struct mid_q_entry *mid) ...@@ -1633,13 +1633,13 @@ cifs_writev_callback(struct mid_q_entry *mid)
* client. OS/2 servers are known to set incorrect * client. OS/2 servers are known to set incorrect
* CountHigh values. * CountHigh values.
*/ */
if (written > wdata->bytes) if (written > wdata->subreq.len)
written &= 0xFFFF; written &= 0xFFFF;
if (written < wdata->bytes) if (written < wdata->subreq.len)
wdata->result = -ENOSPC; wdata->result = -ENOSPC;
else else
wdata->bytes = written; wdata->subreq.len = written;
break; break;
case MID_REQUEST_SUBMITTED: case MID_REQUEST_SUBMITTED:
case MID_RETRY_NEEDED: case MID_RETRY_NEEDED:
...@@ -1670,7 +1670,7 @@ cifs_async_writev(struct cifs_io_subrequest *wdata) ...@@ -1670,7 +1670,7 @@ cifs_async_writev(struct cifs_io_subrequest *wdata)
wct = 14; wct = 14;
} else { } else {
wct = 12; wct = 12;
if (wdata->offset >> 32 > 0) { if (wdata->subreq.start >> 32 > 0) {
/* can not handle big offset for old srv */ /* can not handle big offset for old srv */
return -EIO; return -EIO;
} }
...@@ -1685,9 +1685,9 @@ cifs_async_writev(struct cifs_io_subrequest *wdata) ...@@ -1685,9 +1685,9 @@ cifs_async_writev(struct cifs_io_subrequest *wdata)
smb->AndXCommand = 0xFF; /* none */ smb->AndXCommand = 0xFF; /* none */
smb->Fid = wdata->cfile->fid.netfid; smb->Fid = wdata->cfile->fid.netfid;
smb->OffsetLow = cpu_to_le32(wdata->offset & 0xFFFFFFFF); smb->OffsetLow = cpu_to_le32(wdata->subreq.start & 0xFFFFFFFF);
if (wct == 14) if (wct == 14)
smb->OffsetHigh = cpu_to_le32(wdata->offset >> 32); smb->OffsetHigh = cpu_to_le32(wdata->subreq.start >> 32);
smb->Reserved = 0xFFFFFFFF; smb->Reserved = 0xFFFFFFFF;
smb->WriteMode = 0; smb->WriteMode = 0;
smb->Remaining = 0; smb->Remaining = 0;
...@@ -1703,24 +1703,24 @@ cifs_async_writev(struct cifs_io_subrequest *wdata) ...@@ -1703,24 +1703,24 @@ cifs_async_writev(struct cifs_io_subrequest *wdata)
rqst.rq_iov = iov; rqst.rq_iov = iov;
rqst.rq_nvec = 2; rqst.rq_nvec = 2;
rqst.rq_iter = wdata->iter; rqst.rq_iter = wdata->subreq.io_iter;
rqst.rq_iter_size = iov_iter_count(&wdata->iter); rqst.rq_iter_size = iov_iter_count(&wdata->subreq.io_iter);
cifs_dbg(FYI, "async write at %llu %u bytes\n", cifs_dbg(FYI, "async write at %llu %zu bytes\n",
wdata->offset, wdata->bytes); wdata->subreq.start, wdata->subreq.len);
smb->DataLengthLow = cpu_to_le16(wdata->bytes & 0xFFFF); smb->DataLengthLow = cpu_to_le16(wdata->subreq.len & 0xFFFF);
smb->DataLengthHigh = cpu_to_le16(wdata->bytes >> 16); smb->DataLengthHigh = cpu_to_le16(wdata->subreq.len >> 16);
if (wct == 14) { if (wct == 14) {
inc_rfc1001_len(&smb->hdr, wdata->bytes + 1); inc_rfc1001_len(&smb->hdr, wdata->subreq.len + 1);
put_bcc(wdata->bytes + 1, &smb->hdr); put_bcc(wdata->subreq.len + 1, &smb->hdr);
} else { } else {
/* wct == 12 */ /* wct == 12 */
struct smb_com_writex_req *smbw = struct smb_com_writex_req *smbw =
(struct smb_com_writex_req *)smb; (struct smb_com_writex_req *)smb;
inc_rfc1001_len(&smbw->hdr, wdata->bytes + 5); inc_rfc1001_len(&smbw->hdr, wdata->subreq.len + 5);
put_bcc(wdata->bytes + 5, &smbw->hdr); put_bcc(wdata->subreq.len + 5, &smbw->hdr);
iov[1].iov_len += 4; /* pad bigger by four bytes */ iov[1].iov_len += 4; /* pad bigger by four bytes */
} }
......
This diff is collapsed.
...@@ -4592,7 +4592,7 @@ handle_read_data(struct TCP_Server_Info *server, struct mid_q_entry *mid, ...@@ -4592,7 +4592,7 @@ handle_read_data(struct TCP_Server_Info *server, struct mid_q_entry *mid,
/* Copy the data to the output I/O iterator. */ /* Copy the data to the output I/O iterator. */
rdata->result = cifs_copy_pages_to_iter(pages, pages_len, rdata->result = cifs_copy_pages_to_iter(pages, pages_len,
cur_off, &rdata->iter); cur_off, &rdata->subreq.io_iter);
if (rdata->result != 0) { if (rdata->result != 0) {
if (is_offloaded) if (is_offloaded)
mid->mid_state = MID_RESPONSE_MALFORMED; mid->mid_state = MID_RESPONSE_MALFORMED;
...@@ -4606,7 +4606,7 @@ handle_read_data(struct TCP_Server_Info *server, struct mid_q_entry *mid, ...@@ -4606,7 +4606,7 @@ handle_read_data(struct TCP_Server_Info *server, struct mid_q_entry *mid,
/* read response payload is in buf */ /* read response payload is in buf */
WARN_ONCE(pages && !xa_empty(pages), WARN_ONCE(pages && !xa_empty(pages),
"read data can be either in buf or in pages"); "read data can be either in buf or in pages");
length = copy_to_iter(buf + data_offset, data_len, &rdata->iter); length = copy_to_iter(buf + data_offset, data_len, &rdata->subreq.io_iter);
if (length < 0) if (length < 0)
return length; return length;
rdata->got_bytes = data_len; rdata->got_bytes = data_len;
......
...@@ -4434,7 +4434,7 @@ smb2_new_read_req(void **buf, unsigned int *total_len, ...@@ -4434,7 +4434,7 @@ smb2_new_read_req(void **buf, unsigned int *total_len,
struct smbd_buffer_descriptor_v1 *v1; struct smbd_buffer_descriptor_v1 *v1;
bool need_invalidate = server->dialect == SMB30_PROT_ID; bool need_invalidate = server->dialect == SMB30_PROT_ID;
rdata->mr = smbd_register_mr(server->smbd_conn, &rdata->iter, rdata->mr = smbd_register_mr(server->smbd_conn, &rdata->subreq.io_iter,
true, need_invalidate); true, need_invalidate);
if (!rdata->mr) if (!rdata->mr)
return -EAGAIN; return -EAGAIN;
...@@ -4494,17 +4494,17 @@ smb2_readv_callback(struct mid_q_entry *mid) ...@@ -4494,17 +4494,17 @@ smb2_readv_callback(struct mid_q_entry *mid)
struct smb_rqst rqst = { .rq_iov = &rdata->iov[1], .rq_nvec = 1 }; struct smb_rqst rqst = { .rq_iov = &rdata->iov[1], .rq_nvec = 1 };
if (rdata->got_bytes) { if (rdata->got_bytes) {
rqst.rq_iter = rdata->iter; rqst.rq_iter = rdata->subreq.io_iter;
rqst.rq_iter_size = iov_iter_count(&rdata->iter); rqst.rq_iter_size = iov_iter_count(&rdata->subreq.io_iter);
} }
WARN_ONCE(rdata->server != mid->server, WARN_ONCE(rdata->server != mid->server,
"rdata server %p != mid server %p", "rdata server %p != mid server %p",
rdata->server, mid->server); rdata->server, mid->server);
cifs_dbg(FYI, "%s: mid=%llu state=%d result=%d bytes=%u\n", cifs_dbg(FYI, "%s: mid=%llu state=%d result=%d bytes=%zu\n",
__func__, mid->mid, mid->mid_state, rdata->result, __func__, mid->mid, mid->mid_state, rdata->result,
rdata->bytes); rdata->subreq.len);
switch (mid->mid_state) { switch (mid->mid_state) {
case MID_RESPONSE_RECEIVED: case MID_RESPONSE_RECEIVED:
...@@ -4557,13 +4557,13 @@ smb2_readv_callback(struct mid_q_entry *mid) ...@@ -4557,13 +4557,13 @@ smb2_readv_callback(struct mid_q_entry *mid)
cifs_stats_fail_inc(tcon, SMB2_READ_HE); cifs_stats_fail_inc(tcon, SMB2_READ_HE);
trace_smb3_read_err(0 /* xid */, trace_smb3_read_err(0 /* xid */,
rdata->cfile->fid.persistent_fid, rdata->cfile->fid.persistent_fid,
tcon->tid, tcon->ses->Suid, rdata->offset, tcon->tid, tcon->ses->Suid, rdata->subreq.start,
rdata->bytes, rdata->result); rdata->subreq.len, rdata->result);
} else } else
trace_smb3_read_done(0 /* xid */, trace_smb3_read_done(0 /* xid */,
rdata->cfile->fid.persistent_fid, rdata->cfile->fid.persistent_fid,
tcon->tid, tcon->ses->Suid, tcon->tid, tcon->ses->Suid,
rdata->offset, rdata->got_bytes); rdata->subreq.start, rdata->got_bytes);
queue_work(cifsiod_wq, &rdata->work); queue_work(cifsiod_wq, &rdata->work);
release_mid(mid); release_mid(mid);
...@@ -4585,16 +4585,16 @@ smb2_async_readv(struct cifs_io_subrequest *rdata) ...@@ -4585,16 +4585,16 @@ smb2_async_readv(struct cifs_io_subrequest *rdata)
unsigned int total_len; unsigned int total_len;
int credit_request; int credit_request;
cifs_dbg(FYI, "%s: offset=%llu bytes=%u\n", cifs_dbg(FYI, "%s: offset=%llu bytes=%zu\n",
__func__, rdata->offset, rdata->bytes); __func__, rdata->subreq.start, rdata->subreq.len);
if (!rdata->server) if (!rdata->server)
rdata->server = cifs_pick_channel(tcon->ses); rdata->server = cifs_pick_channel(tcon->ses);
io_parms.tcon = tlink_tcon(rdata->cfile->tlink); io_parms.tcon = tlink_tcon(rdata->cfile->tlink);
io_parms.server = server = rdata->server; io_parms.server = server = rdata->server;
io_parms.offset = rdata->offset; io_parms.offset = rdata->subreq.start;
io_parms.length = rdata->bytes; io_parms.length = rdata->subreq.len;
io_parms.persistent_fid = rdata->cfile->fid.persistent_fid; io_parms.persistent_fid = rdata->cfile->fid.persistent_fid;
io_parms.volatile_fid = rdata->cfile->fid.volatile_fid; io_parms.volatile_fid = rdata->cfile->fid.volatile_fid;
io_parms.pid = rdata->pid; io_parms.pid = rdata->pid;
...@@ -4613,7 +4613,7 @@ smb2_async_readv(struct cifs_io_subrequest *rdata) ...@@ -4613,7 +4613,7 @@ smb2_async_readv(struct cifs_io_subrequest *rdata)
shdr = (struct smb2_hdr *)buf; shdr = (struct smb2_hdr *)buf;
if (rdata->credits.value > 0) { if (rdata->credits.value > 0) {
shdr->CreditCharge = cpu_to_le16(DIV_ROUND_UP(rdata->bytes, shdr->CreditCharge = cpu_to_le16(DIV_ROUND_UP(rdata->subreq.len,
SMB2_MAX_BUFFER_SIZE)); SMB2_MAX_BUFFER_SIZE));
credit_request = le16_to_cpu(shdr->CreditCharge) + 8; credit_request = le16_to_cpu(shdr->CreditCharge) + 8;
if (server->credits >= server->max_credits) if (server->credits >= server->max_credits)
...@@ -4623,7 +4623,7 @@ smb2_async_readv(struct cifs_io_subrequest *rdata) ...@@ -4623,7 +4623,7 @@ smb2_async_readv(struct cifs_io_subrequest *rdata)
min_t(int, server->max_credits - min_t(int, server->max_credits -
server->credits, credit_request)); server->credits, credit_request));
rc = adjust_credits(server, &rdata->credits, rdata->bytes); rc = adjust_credits(server, &rdata->credits, rdata->subreq.len);
if (rc) if (rc)
goto async_readv_out; goto async_readv_out;
...@@ -4763,13 +4763,13 @@ smb2_writev_callback(struct mid_q_entry *mid) ...@@ -4763,13 +4763,13 @@ smb2_writev_callback(struct mid_q_entry *mid)
* client. OS/2 servers are known to set incorrect * client. OS/2 servers are known to set incorrect
* CountHigh values. * CountHigh values.
*/ */
if (written > wdata->bytes) if (written > wdata->subreq.len)
written &= 0xFFFF; written &= 0xFFFF;
if (written < wdata->bytes) if (written < wdata->subreq.len)
wdata->result = -ENOSPC; wdata->result = -ENOSPC;
else else
wdata->bytes = written; wdata->subreq.len = written;
break; break;
case MID_REQUEST_SUBMITTED: case MID_REQUEST_SUBMITTED:
case MID_RETRY_NEEDED: case MID_RETRY_NEEDED:
...@@ -4800,8 +4800,8 @@ smb2_writev_callback(struct mid_q_entry *mid) ...@@ -4800,8 +4800,8 @@ smb2_writev_callback(struct mid_q_entry *mid)
cifs_stats_fail_inc(tcon, SMB2_WRITE_HE); cifs_stats_fail_inc(tcon, SMB2_WRITE_HE);
trace_smb3_write_err(0 /* no xid */, trace_smb3_write_err(0 /* no xid */,
wdata->cfile->fid.persistent_fid, wdata->cfile->fid.persistent_fid,
tcon->tid, tcon->ses->Suid, wdata->offset, tcon->tid, tcon->ses->Suid, wdata->subreq.start,
wdata->bytes, wdata->result); wdata->subreq.len, wdata->result);
if (wdata->result == -ENOSPC) if (wdata->result == -ENOSPC)
pr_warn_once("Out of space writing to %s\n", pr_warn_once("Out of space writing to %s\n",
tcon->tree_name); tcon->tree_name);
...@@ -4809,7 +4809,7 @@ smb2_writev_callback(struct mid_q_entry *mid) ...@@ -4809,7 +4809,7 @@ smb2_writev_callback(struct mid_q_entry *mid)
trace_smb3_write_done(0 /* no xid */, trace_smb3_write_done(0 /* no xid */,
wdata->cfile->fid.persistent_fid, wdata->cfile->fid.persistent_fid,
tcon->tid, tcon->ses->Suid, tcon->tid, tcon->ses->Suid,
wdata->offset, wdata->bytes); wdata->subreq.start, wdata->subreq.len);
queue_work(cifsiod_wq, &wdata->work); queue_work(cifsiod_wq, &wdata->work);
release_mid(mid); release_mid(mid);
...@@ -4842,8 +4842,8 @@ smb2_async_writev(struct cifs_io_subrequest *wdata) ...@@ -4842,8 +4842,8 @@ smb2_async_writev(struct cifs_io_subrequest *wdata)
_io_parms = (struct cifs_io_parms) { _io_parms = (struct cifs_io_parms) {
.tcon = tcon, .tcon = tcon,
.server = server, .server = server,
.offset = wdata->offset, .offset = wdata->subreq.start,
.length = wdata->bytes, .length = wdata->subreq.len,
.persistent_fid = wdata->cfile->fid.persistent_fid, .persistent_fid = wdata->cfile->fid.persistent_fid,
.volatile_fid = wdata->cfile->fid.volatile_fid, .volatile_fid = wdata->cfile->fid.volatile_fid,
.pid = wdata->pid, .pid = wdata->pid,
...@@ -4885,10 +4885,10 @@ smb2_async_writev(struct cifs_io_subrequest *wdata) ...@@ -4885,10 +4885,10 @@ smb2_async_writev(struct cifs_io_subrequest *wdata)
*/ */
if (smb3_use_rdma_offload(io_parms)) { if (smb3_use_rdma_offload(io_parms)) {
struct smbd_buffer_descriptor_v1 *v1; struct smbd_buffer_descriptor_v1 *v1;
size_t data_size = iov_iter_count(&wdata->iter); size_t data_size = iov_iter_count(&wdata->subreq.io_iter);
bool need_invalidate = server->dialect == SMB30_PROT_ID; bool need_invalidate = server->dialect == SMB30_PROT_ID;
wdata->mr = smbd_register_mr(server->smbd_conn, &wdata->iter, wdata->mr = smbd_register_mr(server->smbd_conn, &wdata->subreq.io_iter,
false, need_invalidate); false, need_invalidate);
if (!wdata->mr) { if (!wdata->mr) {
rc = -EAGAIN; rc = -EAGAIN;
...@@ -4915,7 +4915,7 @@ smb2_async_writev(struct cifs_io_subrequest *wdata) ...@@ -4915,7 +4915,7 @@ smb2_async_writev(struct cifs_io_subrequest *wdata)
rqst.rq_iov = iov; rqst.rq_iov = iov;
rqst.rq_nvec = 1; rqst.rq_nvec = 1;
rqst.rq_iter = wdata->iter; rqst.rq_iter = wdata->subreq.io_iter;
rqst.rq_iter_size = iov_iter_count(&rqst.rq_iter); rqst.rq_iter_size = iov_iter_count(&rqst.rq_iter);
if (wdata->replay) if (wdata->replay)
smb2_set_replay(server, &rqst); smb2_set_replay(server, &rqst);
...@@ -4935,7 +4935,7 @@ smb2_async_writev(struct cifs_io_subrequest *wdata) ...@@ -4935,7 +4935,7 @@ smb2_async_writev(struct cifs_io_subrequest *wdata)
#endif #endif
if (wdata->credits.value > 0) { if (wdata->credits.value > 0) {
shdr->CreditCharge = cpu_to_le16(DIV_ROUND_UP(wdata->bytes, shdr->CreditCharge = cpu_to_le16(DIV_ROUND_UP(wdata->subreq.len,
SMB2_MAX_BUFFER_SIZE)); SMB2_MAX_BUFFER_SIZE));
credit_request = le16_to_cpu(shdr->CreditCharge) + 8; credit_request = le16_to_cpu(shdr->CreditCharge) + 8;
if (server->credits >= server->max_credits) if (server->credits >= server->max_credits)
......
...@@ -1707,8 +1707,8 @@ cifs_readv_receive(struct TCP_Server_Info *server, struct mid_q_entry *mid) ...@@ -1707,8 +1707,8 @@ cifs_readv_receive(struct TCP_Server_Info *server, struct mid_q_entry *mid)
unsigned int buflen = server->pdu_size + HEADER_PREAMBLE_SIZE(server); unsigned int buflen = server->pdu_size + HEADER_PREAMBLE_SIZE(server);
bool use_rdma_mr = false; bool use_rdma_mr = false;
cifs_dbg(FYI, "%s: mid=%llu offset=%llu bytes=%u\n", cifs_dbg(FYI, "%s: mid=%llu offset=%llu bytes=%zu\n",
__func__, mid->mid, rdata->offset, rdata->bytes); __func__, mid->mid, rdata->subreq.start, rdata->subreq.len);
/* /*
* read the rest of READ_RSP header (sans Data array), or whatever we * read the rest of READ_RSP header (sans Data array), or whatever we
...@@ -1813,7 +1813,7 @@ cifs_readv_receive(struct TCP_Server_Info *server, struct mid_q_entry *mid) ...@@ -1813,7 +1813,7 @@ cifs_readv_receive(struct TCP_Server_Info *server, struct mid_q_entry *mid)
length = data_len; /* An RDMA read is already done. */ length = data_len; /* An RDMA read is already done. */
else else
#endif #endif
length = cifs_read_iter_from_socket(server, &rdata->iter, length = cifs_read_iter_from_socket(server, &rdata->subreq.io_iter,
data_len); data_len);
if (length > 0) if (length > 0)
rdata->got_bytes += length; rdata->got_bytes += length;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment