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:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user