mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08: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
@ -342,14 +342,14 @@ static int afs_deliver_cb_callback(struct afs_call *call)
|
||||
if (call->count2 != call->count && call->count2 != 0)
|
||||
return afs_protocol_error(call, -EBADMSG,
|
||||
afs_eproto_cb_count);
|
||||
call->_iter = &call->iter;
|
||||
iov_iter_discard(&call->iter, READ, call->count2 * 3 * 4);
|
||||
call->iter = &call->def_iter;
|
||||
iov_iter_discard(&call->def_iter, READ, call->count2 * 3 * 4);
|
||||
call->unmarshall++;
|
||||
|
||||
/* Fall through */
|
||||
case 4:
|
||||
_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);
|
||||
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,
|
||||
int bit, unsigned int nr_slots)
|
||||
{
|
||||
u64 mask, before, after;
|
||||
u64 mask;
|
||||
|
||||
mask = (1 << nr_slots) - 1;
|
||||
mask <<= bit;
|
||||
|
||||
before = *(u64 *)block->hdr.bitmap;
|
||||
|
||||
block->hdr.bitmap[0] |= (u8)(mask >> 0 * 8);
|
||||
block->hdr.bitmap[1] |= (u8)(mask >> 1 * 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[6] |= (u8)(mask >> 6 * 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,
|
||||
int bit, unsigned int nr_slots)
|
||||
{
|
||||
u64 mask, before, after;
|
||||
u64 mask;
|
||||
|
||||
mask = (1 << nr_slots) - 1;
|
||||
mask <<= bit;
|
||||
|
||||
before = *(u64 *)block->hdr.bitmap;
|
||||
|
||||
block->hdr.bitmap[0] &= ~(u8)(mask >> 0 * 8);
|
||||
block->hdr.bitmap[1] &= ~(u8)(mask >> 1 * 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[6] &= ~(u8)(mask >> 6 * 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.
|
||||
*/
|
||||
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_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)) {
|
||||
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);
|
||||
@ -257,7 +257,7 @@ int afs_fetch_data(struct afs_vnode *vnode, struct key *key, struct afs_read *de
|
||||
|
||||
if (ret == 0) {
|
||||
afs_stat_v(vnode, n_fetches);
|
||||
atomic_long_add(desc->actual_len,
|
||||
atomic_long_add(req->actual_len,
|
||||
&afs_v2net(vnode)->n_fetch_bytes);
|
||||
}
|
||||
|
||||
|
@ -323,7 +323,7 @@ static int afs_deliver_fs_fetch_data(struct afs_call *call)
|
||||
int ret;
|
||||
|
||||
_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) {
|
||||
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_offset = req->offset;
|
||||
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);
|
||||
/* Fall through */
|
||||
|
||||
/* extract the returned data */
|
||||
case 2:
|
||||
_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);
|
||||
if (ret < 0)
|
||||
@ -398,7 +398,7 @@ static int afs_deliver_fs_fetch_data(struct afs_call *call)
|
||||
|
||||
case 3:
|
||||
_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);
|
||||
if (ret < 0)
|
||||
@ -490,7 +490,7 @@ static int afs_fs_fetch_data64(struct afs_fs_cursor *fc,
|
||||
call->key = fc->key;
|
||||
call->out_scb = scb;
|
||||
call->out_volsync = NULL;
|
||||
call->read_request = req;
|
||||
call->read_request = afs_get_read(req);
|
||||
|
||||
/* marshall the parameters */
|
||||
bp = call->request;
|
||||
@ -503,7 +503,6 @@ static int afs_fs_fetch_data64(struct afs_fs_cursor *fc,
|
||||
bp[6] = 0;
|
||||
bp[7] = htonl(lower_32_bits(req->len));
|
||||
|
||||
refcount_inc(&req->usage);
|
||||
afs_use_fs_server(call, fc->cbi);
|
||||
trace_afs_make_fs_call(call, &vnode->fid);
|
||||
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->out_scb = scb;
|
||||
call->out_volsync = NULL;
|
||||
call->read_request = req;
|
||||
call->read_request = afs_get_read(req);
|
||||
|
||||
/* marshall the parameters */
|
||||
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[5] = htonl(lower_32_bits(req->len));
|
||||
|
||||
refcount_inc(&req->usage);
|
||||
afs_use_fs_server(call, fc->cbi);
|
||||
trace_afs_make_fs_call(call, &vnode->fid);
|
||||
afs_set_fc_call(call, fc);
|
||||
@ -1852,7 +1850,7 @@ static int afs_deliver_fs_get_capabilities(struct afs_call *call)
|
||||
u32 count;
|
||||
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) {
|
||||
case 0:
|
||||
|
@ -115,9 +115,9 @@ struct afs_call {
|
||||
struct afs_vnode *lvnode; /* vnode being locked */
|
||||
void *request; /* request data (first part) */
|
||||
struct address_space *mapping; /* Pages being written from */
|
||||
struct iov_iter iter; /* Buffer iterator */
|
||||
struct iov_iter *_iter; /* Iterator currently in use */
|
||||
union { /* Convenience for ->iter */
|
||||
struct iov_iter def_iter; /* Default buffer/data iterator */
|
||||
struct iov_iter *iter; /* Iterator currently in use */
|
||||
union { /* Convenience for ->def_iter */
|
||||
struct kvec kvec[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 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
|
||||
*/
|
||||
@ -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_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)
|
||||
@ -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)
|
||||
{
|
||||
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)
|
||||
|
@ -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_waitqueue_head(&call->waitq);
|
||||
spin_lock_init(&call->state_lock);
|
||||
call->_iter = &call->iter;
|
||||
call->iter = &call->def_iter;
|
||||
|
||||
o = atomic_inc_return(&net->nr_outstanding_calls);
|
||||
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
|
||||
) {
|
||||
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,
|
||||
call->rxcall, &call->iter,
|
||||
call->rxcall, &call->def_iter,
|
||||
false, &remote_abort,
|
||||
&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)
|
||||
return;
|
||||
@ -859,7 +859,7 @@ static int afs_deliver_cm_op_id(struct afs_call *call)
|
||||
{
|
||||
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 */
|
||||
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)
|
||||
{
|
||||
struct afs_net *net = call->net;
|
||||
struct iov_iter *iter = call->_iter;
|
||||
struct iov_iter *iter = call->iter;
|
||||
enum afs_call_state state;
|
||||
u32 remote_abort = 0;
|
||||
int ret;
|
||||
|
@ -151,7 +151,7 @@ static struct afs_server *afs_install_server(struct afs_net *net,
|
||||
const struct afs_addr_list *alist;
|
||||
struct afs_server *server;
|
||||
struct rb_node **pp, *p;
|
||||
int ret = -EEXIST, diff;
|
||||
int diff;
|
||||
|
||||
_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);
|
||||
|
||||
write_sequnlock(&net->fs_addr_lock);
|
||||
ret = 0;
|
||||
|
||||
exists:
|
||||
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;
|
||||
|
||||
_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) {
|
||||
case 0:
|
||||
@ -316,7 +316,7 @@ static int afs_deliver_vl_get_capabilities(struct afs_call *call)
|
||||
int ret;
|
||||
|
||||
_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) {
|
||||
case 0:
|
||||
@ -425,7 +425,7 @@ static int afs_deliver_yfsvl_get_endpoints(struct afs_call *call)
|
||||
int ret;
|
||||
|
||||
_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) {
|
||||
case 0:
|
||||
|
@ -228,11 +228,11 @@ static int afs_xattr_get_yfs(const struct xattr_handler *handler,
|
||||
break;
|
||||
case 1:
|
||||
data = buf;
|
||||
dsize = snprintf(buf, sizeof(buf), "%u", yacl->inherit_flag);
|
||||
dsize = scnprintf(buf, sizeof(buf), "%u", yacl->inherit_flag);
|
||||
break;
|
||||
case 2:
|
||||
data = buf;
|
||||
dsize = snprintf(buf, sizeof(buf), "%u", yacl->num_cleaned);
|
||||
dsize = scnprintf(buf, sizeof(buf), "%u", yacl->num_cleaned);
|
||||
break;
|
||||
case 3:
|
||||
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
|
||||
* 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)
|
||||
len += sprintf(text + len, "%x%016llx",
|
||||
vnode->fid.vnode_hi, vnode->fid.vnode);
|
||||
len += scnprintf(text + len, sizeof(text) - len, "%x%016llx",
|
||||
vnode->fid.vnode_hi, vnode->fid.vnode);
|
||||
else
|
||||
len += sprintf(text + len, "%llx", vnode->fid.vnode);
|
||||
len += sprintf(text + len, ":%x", vnode->fid.unique);
|
||||
len += scnprintf(text + len, sizeof(text) - len, "%llx",
|
||||
vnode->fid.vnode);
|
||||
len += scnprintf(text + len, sizeof(text) - len, ":%x",
|
||||
vnode->fid.unique);
|
||||
|
||||
if (size == 0)
|
||||
return len;
|
||||
|
@ -441,7 +441,7 @@ static int yfs_deliver_fs_fetch_data64(struct afs_call *call)
|
||||
int ret;
|
||||
|
||||
_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) {
|
||||
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_offset = req->offset;
|
||||
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);
|
||||
/* Fall through */
|
||||
|
||||
/* extract the returned data */
|
||||
case 2:
|
||||
_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);
|
||||
if (ret < 0)
|
||||
@ -511,7 +511,7 @@ static int yfs_deliver_fs_fetch_data64(struct afs_call *call)
|
||||
|
||||
case 3:
|
||||
_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);
|
||||
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->out_scb = scb;
|
||||
call->out_volsync = NULL;
|
||||
call->read_request = req;
|
||||
call->read_request = afs_get_read(req);
|
||||
|
||||
/* marshall the parameters */
|
||||
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);
|
||||
yfs_check_req(call, bp);
|
||||
|
||||
refcount_inc(&req->usage);
|
||||
afs_use_fs_server(call, fc->cbi);
|
||||
trace_afs_make_fs_call(call, &vnode->fid);
|
||||
afs_set_fc_call(call, fc);
|
||||
|
Loading…
Reference in New Issue
Block a user