mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-27 04:47:05 +00:00
AFS development
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEqG5UsNXhtOCrfGQP+7dXa6fLC2sFAl3W9UYACgkQ+7dXa6fL C2uO1g//T0NvHmrZr6zHbOWlaKkGXRfhgCLENzuTCtcFt29NV+Jv8D/FNuT29d7f x8PzrZUBDYfpjP8OSHEivZgU5+a4jpI5pSd2mnGnT3523Oxbm2lIz/SXgpkwQdkM 4OcK+voCP1MvHbmO7jyOfQm7SX/aOtF90GQrUog5JqwPD0ddSpk/swNNRKZ6xK8/ cAq9/DHPfYHfLh8wc2FWmhdPA5Px+eKt9kGmMMpwsCulR4yMM7vBCIVNSccSjpYR QJzmFpi/TfOiRMc0oZnXLv6UUG+7hHeRfRosoQA8YGGsjwXfs2I7MfAziJx68tfu v7beYI+u7tc4EhgK9jXxbgPCJF6nFR/zrbzfC3Zlh7Hr3NCGGzH4gwDu+pn4lwfV bpUyA6VwmEt+CVzjj6LB5l4vyRSk+TtVQSwfQvCA7xqvdq0J0/fux6OQ1DwJonQe 6dOpPUd4ip5tW28S9U7MzbbpMv1kP5hMoAu87gBdygUDhPojM7Ut0mFwZDMOunXg vW6oQwKyyFPeJhRcPMKxS7opWQz5889tDe8GPNI/1ociOYCcCkmwZaaG+hYAJ8+N 8bK2OCi4yNGBa/qMPbwATY+TVKdYcceq/7THxcI3vZk8nVrda73UQHfwUXsjwUzf SNNcoMrsEV9BiPSG7gAkCf3VI2gXj+USm3w7SBSjZDM5qR/lRHg= =YjAm -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
4a55d362ff
10 changed files with 50 additions and 54 deletions
|
@ -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_
|
||||||
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,
|
||||||
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,
|
||||||
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,
|
||||||
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,
|
||||||
/*
|
/*
|
||||||
* 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
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
|
|
||||||
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,
|
||||||
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,
|
||||||
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,
|
||||||
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,
|
||||||
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)
|
||||||
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 {
|
||||||
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 *);
|
||||||
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
|
||||||
{
|
{
|
||||||
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)
|
||||||
|
|
||||||
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,
|
||||||
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)
|
||||||
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)
|
||||||
{
|
{
|
||||||
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)
|
||||||
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,
|
||||||
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,
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
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,
|
||||||
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,
|
||||||
/* 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)
|
||||||
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)
|
||||||
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)
|
||||||
|
|
||||||
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,
|
||||||
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,
|
||||||
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);
|
||||||
|
|
Loading…
Reference in a new issue