Commit 4a55d362 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'afs-next-20191121' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs

Pull AFS updates from David Howells:
 "Minor cleanups and fix:

   - Minor fix to make some debugging statements display information
     from the correct iov_iter.

   - Rename some members and variables to make things more obvious or
     consistent.

   - Provide a helper to wrap increments of the usage count on the
     afs_read struct.

   - Use scnprintf() to print into a stack buffer rather than sprintf().

   - Remove some set but unused variables"

* tag 'afs-next-20191121' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs:
  afs: Remove set but not used variable 'ret'
  afs: Remove set but not used variables 'before', 'after'
  afs: xattr: use scnprintf
  afs: Introduce an afs_get_read() refcount helper
  afs: Rename desc -> req in afs_fetch_data()
  afs: Switch the naming of call->iter and call->_iter
  afs: Use call->_iter not &call->iter in debugging statements
parents 50b8b3f8 4fe171bb
...@@ -342,14 +342,14 @@ static int afs_deliver_cb_callback(struct afs_call *call) ...@@ -342,14 +342,14 @@ static int afs_deliver_cb_callback(struct afs_call *call)
if (call->count2 != call->count && call->count2 != 0) if (call->count2 != call->count && call->count2 != 0)
return afs_protocol_error(call, -EBADMSG, return afs_protocol_error(call, -EBADMSG,
afs_eproto_cb_count); afs_eproto_cb_count);
call->_iter = &call->iter; call->iter = &call->def_iter;
iov_iter_discard(&call->iter, READ, call->count2 * 3 * 4); iov_iter_discard(&call->def_iter, READ, call->count2 * 3 * 4);
call->unmarshall++; call->unmarshall++;
/* Fall through */ /* Fall through */
case 4: case 4:
_debug("extract discard %zu/%u", _debug("extract discard %zu/%u",
iov_iter_count(&call->iter), call->count2 * 3 * 4); iov_iter_count(call->iter), call->count2 * 3 * 4);
ret = afs_extract_data(call, false); ret = afs_extract_data(call, false);
if (ret < 0) if (ret < 0)
......
...@@ -68,13 +68,11 @@ static int afs_find_contig_bits(union afs_xdr_dir_block *block, unsigned int nr_ ...@@ -68,13 +68,11 @@ static int afs_find_contig_bits(union afs_xdr_dir_block *block, unsigned int nr_
static void afs_set_contig_bits(union afs_xdr_dir_block *block, static void afs_set_contig_bits(union afs_xdr_dir_block *block,
int bit, unsigned int nr_slots) int bit, unsigned int nr_slots)
{ {
u64 mask, before, after; u64 mask;
mask = (1 << nr_slots) - 1; mask = (1 << nr_slots) - 1;
mask <<= bit; mask <<= bit;
before = *(u64 *)block->hdr.bitmap;
block->hdr.bitmap[0] |= (u8)(mask >> 0 * 8); block->hdr.bitmap[0] |= (u8)(mask >> 0 * 8);
block->hdr.bitmap[1] |= (u8)(mask >> 1 * 8); block->hdr.bitmap[1] |= (u8)(mask >> 1 * 8);
block->hdr.bitmap[2] |= (u8)(mask >> 2 * 8); block->hdr.bitmap[2] |= (u8)(mask >> 2 * 8);
...@@ -83,8 +81,6 @@ static void afs_set_contig_bits(union afs_xdr_dir_block *block, ...@@ -83,8 +81,6 @@ static void afs_set_contig_bits(union afs_xdr_dir_block *block,
block->hdr.bitmap[5] |= (u8)(mask >> 5 * 8); block->hdr.bitmap[5] |= (u8)(mask >> 5 * 8);
block->hdr.bitmap[6] |= (u8)(mask >> 6 * 8); block->hdr.bitmap[6] |= (u8)(mask >> 6 * 8);
block->hdr.bitmap[7] |= (u8)(mask >> 7 * 8); block->hdr.bitmap[7] |= (u8)(mask >> 7 * 8);
after = *(u64 *)block->hdr.bitmap;
} }
/* /*
...@@ -93,13 +89,11 @@ static void afs_set_contig_bits(union afs_xdr_dir_block *block, ...@@ -93,13 +89,11 @@ static void afs_set_contig_bits(union afs_xdr_dir_block *block,
static void afs_clear_contig_bits(union afs_xdr_dir_block *block, static void afs_clear_contig_bits(union afs_xdr_dir_block *block,
int bit, unsigned int nr_slots) int bit, unsigned int nr_slots)
{ {
u64 mask, before, after; u64 mask;
mask = (1 << nr_slots) - 1; mask = (1 << nr_slots) - 1;
mask <<= bit; mask <<= bit;
before = *(u64 *)block->hdr.bitmap;
block->hdr.bitmap[0] &= ~(u8)(mask >> 0 * 8); block->hdr.bitmap[0] &= ~(u8)(mask >> 0 * 8);
block->hdr.bitmap[1] &= ~(u8)(mask >> 1 * 8); block->hdr.bitmap[1] &= ~(u8)(mask >> 1 * 8);
block->hdr.bitmap[2] &= ~(u8)(mask >> 2 * 8); block->hdr.bitmap[2] &= ~(u8)(mask >> 2 * 8);
...@@ -108,8 +102,6 @@ static void afs_clear_contig_bits(union afs_xdr_dir_block *block, ...@@ -108,8 +102,6 @@ static void afs_clear_contig_bits(union afs_xdr_dir_block *block,
block->hdr.bitmap[5] &= ~(u8)(mask >> 5 * 8); block->hdr.bitmap[5] &= ~(u8)(mask >> 5 * 8);
block->hdr.bitmap[6] &= ~(u8)(mask >> 6 * 8); block->hdr.bitmap[6] &= ~(u8)(mask >> 6 * 8);
block->hdr.bitmap[7] &= ~(u8)(mask >> 7 * 8); block->hdr.bitmap[7] &= ~(u8)(mask >> 7 * 8);
after = *(u64 *)block->hdr.bitmap;
} }
/* /*
......
...@@ -223,7 +223,7 @@ static void afs_file_readpage_read_complete(struct page *page, ...@@ -223,7 +223,7 @@ static void afs_file_readpage_read_complete(struct page *page,
/* /*
* Fetch file data from the volume. * Fetch file data from the volume.
*/ */
int afs_fetch_data(struct afs_vnode *vnode, struct key *key, struct afs_read *desc) int afs_fetch_data(struct afs_vnode *vnode, struct key *key, struct afs_read *req)
{ {
struct afs_fs_cursor fc; struct afs_fs_cursor fc;
struct afs_status_cb *scb; struct afs_status_cb *scb;
...@@ -246,7 +246,7 @@ int afs_fetch_data(struct afs_vnode *vnode, struct key *key, struct afs_read *de ...@@ -246,7 +246,7 @@ int afs_fetch_data(struct afs_vnode *vnode, struct key *key, struct afs_read *de
while (afs_select_fileserver(&fc)) { while (afs_select_fileserver(&fc)) {
fc.cb_break = afs_calc_vnode_cb_break(vnode); fc.cb_break = afs_calc_vnode_cb_break(vnode);
afs_fs_fetch_data(&fc, scb, desc); afs_fs_fetch_data(&fc, scb, req);
} }
afs_check_for_remote_deletion(&fc, vnode); afs_check_for_remote_deletion(&fc, vnode);
...@@ -257,7 +257,7 @@ int afs_fetch_data(struct afs_vnode *vnode, struct key *key, struct afs_read *de ...@@ -257,7 +257,7 @@ int afs_fetch_data(struct afs_vnode *vnode, struct key *key, struct afs_read *de
if (ret == 0) { if (ret == 0) {
afs_stat_v(vnode, n_fetches); afs_stat_v(vnode, n_fetches);
atomic_long_add(desc->actual_len, atomic_long_add(req->actual_len,
&afs_v2net(vnode)->n_fetch_bytes); &afs_v2net(vnode)->n_fetch_bytes);
} }
......
...@@ -323,7 +323,7 @@ static int afs_deliver_fs_fetch_data(struct afs_call *call) ...@@ -323,7 +323,7 @@ static int afs_deliver_fs_fetch_data(struct afs_call *call)
int ret; int ret;
_enter("{%u,%zu/%llu}", _enter("{%u,%zu/%llu}",
call->unmarshall, iov_iter_count(&call->iter), req->actual_len); call->unmarshall, iov_iter_count(call->iter), req->actual_len);
switch (call->unmarshall) { switch (call->unmarshall) {
case 0: case 0:
...@@ -363,14 +363,14 @@ static int afs_deliver_fs_fetch_data(struct afs_call *call) ...@@ -363,14 +363,14 @@ static int afs_deliver_fs_fetch_data(struct afs_call *call)
call->bvec[0].bv_len = size; call->bvec[0].bv_len = size;
call->bvec[0].bv_offset = req->offset; call->bvec[0].bv_offset = req->offset;
call->bvec[0].bv_page = req->pages[req->index]; call->bvec[0].bv_page = req->pages[req->index];
iov_iter_bvec(&call->iter, READ, call->bvec, 1, size); iov_iter_bvec(&call->def_iter, READ, call->bvec, 1, size);
ASSERTCMP(size, <=, PAGE_SIZE); ASSERTCMP(size, <=, PAGE_SIZE);
/* Fall through */ /* Fall through */
/* extract the returned data */ /* extract the returned data */
case 2: case 2:
_debug("extract data %zu/%llu", _debug("extract data %zu/%llu",
iov_iter_count(&call->iter), req->remain); iov_iter_count(call->iter), req->remain);
ret = afs_extract_data(call, true); ret = afs_extract_data(call, true);
if (ret < 0) if (ret < 0)
...@@ -398,7 +398,7 @@ static int afs_deliver_fs_fetch_data(struct afs_call *call) ...@@ -398,7 +398,7 @@ static int afs_deliver_fs_fetch_data(struct afs_call *call)
case 3: case 3:
_debug("extract discard %zu/%llu", _debug("extract discard %zu/%llu",
iov_iter_count(&call->iter), req->actual_len - req->len); iov_iter_count(call->iter), req->actual_len - req->len);
ret = afs_extract_data(call, true); ret = afs_extract_data(call, true);
if (ret < 0) if (ret < 0)
...@@ -490,7 +490,7 @@ static int afs_fs_fetch_data64(struct afs_fs_cursor *fc, ...@@ -490,7 +490,7 @@ static int afs_fs_fetch_data64(struct afs_fs_cursor *fc,
call->key = fc->key; call->key = fc->key;
call->out_scb = scb; call->out_scb = scb;
call->out_volsync = NULL; call->out_volsync = NULL;
call->read_request = req; call->read_request = afs_get_read(req);
/* marshall the parameters */ /* marshall the parameters */
bp = call->request; bp = call->request;
...@@ -503,7 +503,6 @@ static int afs_fs_fetch_data64(struct afs_fs_cursor *fc, ...@@ -503,7 +503,6 @@ static int afs_fs_fetch_data64(struct afs_fs_cursor *fc,
bp[6] = 0; bp[6] = 0;
bp[7] = htonl(lower_32_bits(req->len)); bp[7] = htonl(lower_32_bits(req->len));
refcount_inc(&req->usage);
afs_use_fs_server(call, fc->cbi); afs_use_fs_server(call, fc->cbi);
trace_afs_make_fs_call(call, &vnode->fid); trace_afs_make_fs_call(call, &vnode->fid);
afs_set_fc_call(call, fc); afs_set_fc_call(call, fc);
...@@ -540,7 +539,7 @@ int afs_fs_fetch_data(struct afs_fs_cursor *fc, ...@@ -540,7 +539,7 @@ int afs_fs_fetch_data(struct afs_fs_cursor *fc,
call->key = fc->key; call->key = fc->key;
call->out_scb = scb; call->out_scb = scb;
call->out_volsync = NULL; call->out_volsync = NULL;
call->read_request = req; call->read_request = afs_get_read(req);
/* marshall the parameters */ /* marshall the parameters */
bp = call->request; bp = call->request;
...@@ -551,7 +550,6 @@ int afs_fs_fetch_data(struct afs_fs_cursor *fc, ...@@ -551,7 +550,6 @@ int afs_fs_fetch_data(struct afs_fs_cursor *fc,
bp[4] = htonl(lower_32_bits(req->pos)); bp[4] = htonl(lower_32_bits(req->pos));
bp[5] = htonl(lower_32_bits(req->len)); bp[5] = htonl(lower_32_bits(req->len));
refcount_inc(&req->usage);
afs_use_fs_server(call, fc->cbi); afs_use_fs_server(call, fc->cbi);
trace_afs_make_fs_call(call, &vnode->fid); trace_afs_make_fs_call(call, &vnode->fid);
afs_set_fc_call(call, fc); afs_set_fc_call(call, fc);
...@@ -1852,7 +1850,7 @@ static int afs_deliver_fs_get_capabilities(struct afs_call *call) ...@@ -1852,7 +1850,7 @@ static int afs_deliver_fs_get_capabilities(struct afs_call *call)
u32 count; u32 count;
int ret; int ret;
_enter("{%u,%zu}", call->unmarshall, iov_iter_count(&call->iter)); _enter("{%u,%zu}", call->unmarshall, iov_iter_count(call->iter));
switch (call->unmarshall) { switch (call->unmarshall) {
case 0: case 0:
......
...@@ -115,9 +115,9 @@ struct afs_call { ...@@ -115,9 +115,9 @@ struct afs_call {
struct afs_vnode *lvnode; /* vnode being locked */ struct afs_vnode *lvnode; /* vnode being locked */
void *request; /* request data (first part) */ void *request; /* request data (first part) */
struct address_space *mapping; /* Pages being written from */ struct address_space *mapping; /* Pages being written from */
struct iov_iter iter; /* Buffer iterator */ struct iov_iter def_iter; /* Default buffer/data iterator */
struct iov_iter *_iter; /* Iterator currently in use */ struct iov_iter *iter; /* Iterator currently in use */
union { /* Convenience for ->iter */ union { /* Convenience for ->def_iter */
struct kvec kvec[1]; struct kvec kvec[1];
struct bio_vec bvec[1]; struct bio_vec bvec[1];
}; };
...@@ -934,6 +934,12 @@ extern int afs_fetch_data(struct afs_vnode *, struct key *, struct afs_read *); ...@@ -934,6 +934,12 @@ extern int afs_fetch_data(struct afs_vnode *, struct key *, struct afs_read *);
extern int afs_page_filler(void *, struct page *); extern int afs_page_filler(void *, struct page *);
extern void afs_put_read(struct afs_read *); extern void afs_put_read(struct afs_read *);
static inline struct afs_read *afs_get_read(struct afs_read *req)
{
refcount_inc(&req->usage);
return req;
}
/* /*
* flock.c * flock.c
*/ */
...@@ -1136,7 +1142,7 @@ static inline void afs_extract_begin(struct afs_call *call, void *buf, size_t si ...@@ -1136,7 +1142,7 @@ static inline void afs_extract_begin(struct afs_call *call, void *buf, size_t si
{ {
call->kvec[0].iov_base = buf; call->kvec[0].iov_base = buf;
call->kvec[0].iov_len = size; call->kvec[0].iov_len = size;
iov_iter_kvec(&call->iter, READ, call->kvec, 1, size); iov_iter_kvec(&call->def_iter, READ, call->kvec, 1, size);
} }
static inline void afs_extract_to_tmp(struct afs_call *call) static inline void afs_extract_to_tmp(struct afs_call *call)
...@@ -1151,7 +1157,7 @@ static inline void afs_extract_to_tmp64(struct afs_call *call) ...@@ -1151,7 +1157,7 @@ static inline void afs_extract_to_tmp64(struct afs_call *call)
static inline void afs_extract_discard(struct afs_call *call, size_t size) static inline void afs_extract_discard(struct afs_call *call, size_t size)
{ {
iov_iter_discard(&call->iter, READ, size); iov_iter_discard(&call->def_iter, READ, size);
} }
static inline void afs_extract_to_buf(struct afs_call *call, size_t size) static inline void afs_extract_to_buf(struct afs_call *call, size_t size)
......
...@@ -152,7 +152,7 @@ static struct afs_call *afs_alloc_call(struct afs_net *net, ...@@ -152,7 +152,7 @@ static struct afs_call *afs_alloc_call(struct afs_net *net,
INIT_WORK(&call->async_work, afs_process_async_call); INIT_WORK(&call->async_work, afs_process_async_call);
init_waitqueue_head(&call->waitq); init_waitqueue_head(&call->waitq);
spin_lock_init(&call->state_lock); spin_lock_init(&call->state_lock);
call->_iter = &call->iter; call->iter = &call->def_iter;
o = atomic_inc_return(&net->nr_outstanding_calls); o = atomic_inc_return(&net->nr_outstanding_calls);
trace_afs_call(call, afs_call_trace_alloc, 1, o, trace_afs_call(call, afs_call_trace_alloc, 1, o,
...@@ -513,12 +513,12 @@ static void afs_deliver_to_call(struct afs_call *call) ...@@ -513,12 +513,12 @@ static void afs_deliver_to_call(struct afs_call *call)
state == AFS_CALL_SV_AWAIT_ACK state == AFS_CALL_SV_AWAIT_ACK
) { ) {
if (state == AFS_CALL_SV_AWAIT_ACK) { if (state == AFS_CALL_SV_AWAIT_ACK) {
iov_iter_kvec(&call->iter, READ, NULL, 0, 0); iov_iter_kvec(&call->def_iter, READ, NULL, 0, 0);
ret = rxrpc_kernel_recv_data(call->net->socket, ret = rxrpc_kernel_recv_data(call->net->socket,
call->rxcall, &call->iter, call->rxcall, &call->def_iter,
false, &remote_abort, false, &remote_abort,
&call->service_id); &call->service_id);
trace_afs_receive_data(call, &call->iter, false, ret); trace_afs_receive_data(call, &call->def_iter, false, ret);
if (ret == -EINPROGRESS || ret == -EAGAIN) if (ret == -EINPROGRESS || ret == -EAGAIN)
return; return;
...@@ -859,7 +859,7 @@ static int afs_deliver_cm_op_id(struct afs_call *call) ...@@ -859,7 +859,7 @@ static int afs_deliver_cm_op_id(struct afs_call *call)
{ {
int ret; int ret;
_enter("{%zu}", iov_iter_count(call->_iter)); _enter("{%zu}", iov_iter_count(call->iter));
/* the operation ID forms the first four bytes of the request data */ /* the operation ID forms the first four bytes of the request data */
ret = afs_extract_data(call, true); ret = afs_extract_data(call, true);
...@@ -975,7 +975,7 @@ void afs_send_simple_reply(struct afs_call *call, const void *buf, size_t len) ...@@ -975,7 +975,7 @@ void afs_send_simple_reply(struct afs_call *call, const void *buf, size_t len)
int afs_extract_data(struct afs_call *call, bool want_more) int afs_extract_data(struct afs_call *call, bool want_more)
{ {
struct afs_net *net = call->net; struct afs_net *net = call->net;
struct iov_iter *iter = call->_iter; struct iov_iter *iter = call->iter;
enum afs_call_state state; enum afs_call_state state;
u32 remote_abort = 0; u32 remote_abort = 0;
int ret; int ret;
......
...@@ -151,7 +151,7 @@ static struct afs_server *afs_install_server(struct afs_net *net, ...@@ -151,7 +151,7 @@ static struct afs_server *afs_install_server(struct afs_net *net,
const struct afs_addr_list *alist; const struct afs_addr_list *alist;
struct afs_server *server; struct afs_server *server;
struct rb_node **pp, *p; struct rb_node **pp, *p;
int ret = -EEXIST, diff; int diff;
_enter("%p", candidate); _enter("%p", candidate);
...@@ -196,7 +196,6 @@ static struct afs_server *afs_install_server(struct afs_net *net, ...@@ -196,7 +196,6 @@ static struct afs_server *afs_install_server(struct afs_net *net,
hlist_add_head_rcu(&server->addr6_link, &net->fs_addresses6); hlist_add_head_rcu(&server->addr6_link, &net->fs_addresses6);
write_sequnlock(&net->fs_addr_lock); write_sequnlock(&net->fs_addr_lock);
ret = 0;
exists: exists:
afs_get_server(server, afs_server_trace_get_install); afs_get_server(server, afs_server_trace_get_install);
......
...@@ -185,7 +185,7 @@ static int afs_deliver_vl_get_addrs_u(struct afs_call *call) ...@@ -185,7 +185,7 @@ static int afs_deliver_vl_get_addrs_u(struct afs_call *call)
int i, ret; int i, ret;
_enter("{%u,%zu/%u}", _enter("{%u,%zu/%u}",
call->unmarshall, iov_iter_count(call->_iter), call->count); call->unmarshall, iov_iter_count(call->iter), call->count);
switch (call->unmarshall) { switch (call->unmarshall) {
case 0: case 0:
...@@ -316,7 +316,7 @@ static int afs_deliver_vl_get_capabilities(struct afs_call *call) ...@@ -316,7 +316,7 @@ static int afs_deliver_vl_get_capabilities(struct afs_call *call)
int ret; int ret;
_enter("{%u,%zu/%u}", _enter("{%u,%zu/%u}",
call->unmarshall, iov_iter_count(call->_iter), call->count); call->unmarshall, iov_iter_count(call->iter), call->count);
switch (call->unmarshall) { switch (call->unmarshall) {
case 0: case 0:
...@@ -425,7 +425,7 @@ static int afs_deliver_yfsvl_get_endpoints(struct afs_call *call) ...@@ -425,7 +425,7 @@ static int afs_deliver_yfsvl_get_endpoints(struct afs_call *call)
int ret; int ret;
_enter("{%u,%zu,%u}", _enter("{%u,%zu,%u}",
call->unmarshall, iov_iter_count(call->_iter), call->count2); call->unmarshall, iov_iter_count(call->iter), call->count2);
switch (call->unmarshall) { switch (call->unmarshall) {
case 0: case 0:
......
...@@ -228,11 +228,11 @@ static int afs_xattr_get_yfs(const struct xattr_handler *handler, ...@@ -228,11 +228,11 @@ static int afs_xattr_get_yfs(const struct xattr_handler *handler,
break; break;
case 1: case 1:
data = buf; data = buf;
dsize = snprintf(buf, sizeof(buf), "%u", yacl->inherit_flag); dsize = scnprintf(buf, sizeof(buf), "%u", yacl->inherit_flag);
break; break;
case 2: case 2:
data = buf; data = buf;
dsize = snprintf(buf, sizeof(buf), "%u", yacl->num_cleaned); dsize = scnprintf(buf, sizeof(buf), "%u", yacl->num_cleaned);
break; break;
case 3: case 3:
data = yacl->vol_acl->data; data = yacl->vol_acl->data;
...@@ -370,13 +370,15 @@ static int afs_xattr_get_fid(const struct xattr_handler *handler, ...@@ -370,13 +370,15 @@ static int afs_xattr_get_fid(const struct xattr_handler *handler,
/* The volume ID is 64-bit, the vnode ID is 96-bit and the /* The volume ID is 64-bit, the vnode ID is 96-bit and the
* uniquifier is 32-bit. * uniquifier is 32-bit.
*/ */
len = sprintf(text, "%llx:", vnode->fid.vid); len = scnprintf(text, sizeof(text), "%llx:", vnode->fid.vid);
if (vnode->fid.vnode_hi) if (vnode->fid.vnode_hi)
len += sprintf(text + len, "%x%016llx", len += scnprintf(text + len, sizeof(text) - len, "%x%016llx",
vnode->fid.vnode_hi, vnode->fid.vnode); vnode->fid.vnode_hi, vnode->fid.vnode);
else else
len += sprintf(text + len, "%llx", vnode->fid.vnode); len += scnprintf(text + len, sizeof(text) - len, "%llx",
len += sprintf(text + len, ":%x", vnode->fid.unique); vnode->fid.vnode);
len += scnprintf(text + len, sizeof(text) - len, ":%x",
vnode->fid.unique);
if (size == 0) if (size == 0)
return len; return len;
......
...@@ -441,7 +441,7 @@ static int yfs_deliver_fs_fetch_data64(struct afs_call *call) ...@@ -441,7 +441,7 @@ static int yfs_deliver_fs_fetch_data64(struct afs_call *call)
int ret; int ret;
_enter("{%u,%zu/%llu}", _enter("{%u,%zu/%llu}",
call->unmarshall, iov_iter_count(&call->iter), req->actual_len); call->unmarshall, iov_iter_count(call->iter), req->actual_len);
switch (call->unmarshall) { switch (call->unmarshall) {
case 0: case 0:
...@@ -476,14 +476,14 @@ static int yfs_deliver_fs_fetch_data64(struct afs_call *call) ...@@ -476,14 +476,14 @@ static int yfs_deliver_fs_fetch_data64(struct afs_call *call)
call->bvec[0].bv_len = size; call->bvec[0].bv_len = size;
call->bvec[0].bv_offset = req->offset; call->bvec[0].bv_offset = req->offset;
call->bvec[0].bv_page = req->pages[req->index]; call->bvec[0].bv_page = req->pages[req->index];
iov_iter_bvec(&call->iter, READ, call->bvec, 1, size); iov_iter_bvec(&call->def_iter, READ, call->bvec, 1, size);
ASSERTCMP(size, <=, PAGE_SIZE); ASSERTCMP(size, <=, PAGE_SIZE);
/* Fall through */ /* Fall through */
/* extract the returned data */ /* extract the returned data */
case 2: case 2:
_debug("extract data %zu/%llu", _debug("extract data %zu/%llu",
iov_iter_count(&call->iter), req->remain); iov_iter_count(call->iter), req->remain);
ret = afs_extract_data(call, true); ret = afs_extract_data(call, true);
if (ret < 0) if (ret < 0)
...@@ -511,7 +511,7 @@ static int yfs_deliver_fs_fetch_data64(struct afs_call *call) ...@@ -511,7 +511,7 @@ static int yfs_deliver_fs_fetch_data64(struct afs_call *call)
case 3: case 3:
_debug("extract discard %zu/%llu", _debug("extract discard %zu/%llu",
iov_iter_count(&call->iter), req->actual_len - req->len); iov_iter_count(call->iter), req->actual_len - req->len);
ret = afs_extract_data(call, true); ret = afs_extract_data(call, true);
if (ret < 0) if (ret < 0)
...@@ -605,7 +605,7 @@ int yfs_fs_fetch_data(struct afs_fs_cursor *fc, struct afs_status_cb *scb, ...@@ -605,7 +605,7 @@ int yfs_fs_fetch_data(struct afs_fs_cursor *fc, struct afs_status_cb *scb,
call->key = fc->key; call->key = fc->key;
call->out_scb = scb; call->out_scb = scb;
call->out_volsync = NULL; call->out_volsync = NULL;
call->read_request = req; call->read_request = afs_get_read(req);
/* marshall the parameters */ /* marshall the parameters */
bp = call->request; bp = call->request;
...@@ -616,7 +616,6 @@ int yfs_fs_fetch_data(struct afs_fs_cursor *fc, struct afs_status_cb *scb, ...@@ -616,7 +616,6 @@ int yfs_fs_fetch_data(struct afs_fs_cursor *fc, struct afs_status_cb *scb,
bp = xdr_encode_u64(bp, req->len); bp = xdr_encode_u64(bp, req->len);
yfs_check_req(call, bp); yfs_check_req(call, bp);
refcount_inc(&req->usage);
afs_use_fs_server(call, fc->cbi); afs_use_fs_server(call, fc->cbi);
trace_afs_make_fs_call(call, &vnode->fid); trace_afs_make_fs_call(call, &vnode->fid);
afs_set_fc_call(call, fc); afs_set_fc_call(call, fc);
......
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