mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 21:21:41 +00:00
afs: Add some more info to /proc/net/afs/servers
In /proc/net/afs/servers, show the cell name and the last error for each address in the server's list. Signed-off-by: David Howells <dhowells@redhat.com> cc: Marc Dionne <marc.dionne@auristor.com> cc: linux-afs@lists.infradead.org
This commit is contained in:
parent
d2ce4a84c2
commit
af9a5b4930
@ -196,8 +196,6 @@ void afs_wait_for_operation(struct afs_operation *op)
|
|||||||
op->call_abort_code = op->call->abort_code;
|
op->call_abort_code = op->call->abort_code;
|
||||||
op->call_error = op->call->error;
|
op->call_error = op->call->error;
|
||||||
op->call_responded = op->call->responded;
|
op->call_responded = op->call->responded;
|
||||||
WRITE_ONCE(op->alist->addrs[op->addr_index].last_error,
|
|
||||||
op->call_error);
|
|
||||||
afs_put_call(op->call);
|
afs_put_call(op->call);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -107,6 +107,8 @@ void afs_fileserver_probe_result(struct afs_call *call)
|
|||||||
|
|
||||||
_enter("%pU,%u", &server->uuid, index);
|
_enter("%pU,%u", &server->uuid, index);
|
||||||
|
|
||||||
|
WRITE_ONCE(addr->last_error, ret);
|
||||||
|
|
||||||
spin_lock(&server->probe_lock);
|
spin_lock(&server->probe_lock);
|
||||||
|
|
||||||
switch (ret) {
|
switch (ret) {
|
||||||
|
@ -377,31 +377,39 @@ static int afs_proc_servers_show(struct seq_file *m, void *v)
|
|||||||
{
|
{
|
||||||
struct afs_server *server;
|
struct afs_server *server;
|
||||||
struct afs_addr_list *alist;
|
struct afs_addr_list *alist;
|
||||||
|
unsigned long failed;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (v == SEQ_START_TOKEN) {
|
if (v == SEQ_START_TOKEN) {
|
||||||
seq_puts(m, "UUID REF ACT\n");
|
seq_puts(m, "UUID REF ACT CELL\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
server = list_entry(v, struct afs_server, proc_link);
|
server = list_entry(v, struct afs_server, proc_link);
|
||||||
alist = rcu_dereference(server->addresses);
|
alist = rcu_dereference(server->addresses);
|
||||||
seq_printf(m, "%pU %3d %3d\n",
|
seq_printf(m, "%pU %3d %3d %s\n",
|
||||||
&server->uuid,
|
&server->uuid,
|
||||||
refcount_read(&server->ref),
|
refcount_read(&server->ref),
|
||||||
atomic_read(&server->active));
|
atomic_read(&server->active),
|
||||||
|
server->cell->name);
|
||||||
seq_printf(m, " - info: fl=%lx rtt=%u brk=%x\n",
|
seq_printf(m, " - info: fl=%lx rtt=%u brk=%x\n",
|
||||||
server->flags, server->rtt, server->cb_s_break);
|
server->flags, server->rtt, server->cb_s_break);
|
||||||
seq_printf(m, " - probe: last=%d out=%d\n",
|
seq_printf(m, " - probe: last=%d out=%d\n",
|
||||||
(int)(jiffies - server->probed_at) / HZ,
|
(int)(jiffies - server->probed_at) / HZ,
|
||||||
atomic_read(&server->probe_outstanding));
|
atomic_read(&server->probe_outstanding));
|
||||||
|
failed = alist->probe_failed;
|
||||||
seq_printf(m, " - ALIST v=%u rsp=%lx f=%lx\n",
|
seq_printf(m, " - ALIST v=%u rsp=%lx f=%lx\n",
|
||||||
alist->version, alist->responded, alist->probe_failed);
|
alist->version, alist->responded, alist->probe_failed);
|
||||||
for (i = 0; i < alist->nr_addrs; i++)
|
for (i = 0; i < alist->nr_addrs; i++) {
|
||||||
seq_printf(m, " [%x] %pISpc%s rtt=%d\n",
|
const struct afs_address *addr = &alist->addrs[i];
|
||||||
i, rxrpc_kernel_remote_addr(alist->addrs[i].peer),
|
|
||||||
alist->preferred == i ? "*" : "",
|
seq_printf(m, " [%x] %pISpc%s rtt=%d err=%d\n",
|
||||||
rxrpc_kernel_get_srtt(alist->addrs[i].peer));
|
i, rxrpc_kernel_remote_addr(addr->peer),
|
||||||
|
alist->preferred == i ? "*" :
|
||||||
|
test_bit(i, &failed) ? "!" : "",
|
||||||
|
rxrpc_kernel_get_srtt(addr->peer),
|
||||||
|
addr->last_error);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,6 +133,8 @@ bool afs_select_fileserver(struct afs_operation *op)
|
|||||||
if (op->nr_iterations == 0)
|
if (op->nr_iterations == 0)
|
||||||
goto start;
|
goto start;
|
||||||
|
|
||||||
|
WRITE_ONCE(alist->addrs[op->addr_index].last_error, error);
|
||||||
|
|
||||||
/* Evaluate the result of the previous operation, if there was one. */
|
/* Evaluate the result of the previous operation, if there was one. */
|
||||||
switch (op->call_error) {
|
switch (op->call_error) {
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -114,6 +114,8 @@ bool afs_select_vlserver(struct afs_vl_cursor *vc)
|
|||||||
if (vc->nr_iterations == 0)
|
if (vc->nr_iterations == 0)
|
||||||
goto start;
|
goto start;
|
||||||
|
|
||||||
|
WRITE_ONCE(alist->addrs[vc->addr_index].last_error, error);
|
||||||
|
|
||||||
/* Evaluate the result of the previous operation, if there was one. */
|
/* Evaluate the result of the previous operation, if there was one. */
|
||||||
switch (error) {
|
switch (error) {
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user