OSDN Git Service

afs: Show all of a server's addresses in /proc/fs/afs/servers
authorDavid Howells <dhowells@redhat.com>
Sat, 2 Jun 2018 21:20:31 +0000 (22:20 +0100)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 15 Jun 2018 04:52:59 +0000 (00:52 -0400)
Show all of a server's addresses in /proc/fs/afs/servers, placing the
second plus addresses on padded lines of their own.  The current address is
marked with a star.

Signed-off-by: David Howells <dhowells@redhat.com>
fs/afs/proc.c

index 3512b9b..0c3285c 100644 (file)
@@ -326,6 +326,7 @@ static int afs_proc_servers_show(struct seq_file *m, void *v)
 {
        struct afs_server *server;
        struct afs_addr_list *alist;
+       int i;
 
        if (v == SEQ_START_TOKEN) {
                seq_puts(m, "UUID                                 USE ADDR\n");
@@ -334,10 +335,15 @@ static int afs_proc_servers_show(struct seq_file *m, void *v)
 
        server = list_entry(v, struct afs_server, proc_link);
        alist = rcu_dereference(server->addresses);
-       seq_printf(m, "%pU %3d %pISp\n",
+       seq_printf(m, "%pU %3d %pISpc%s\n",
                   &server->uuid,
                   atomic_read(&server->usage),
-                  &alist->addrs[alist->index].transport);
+                  &alist->addrs[0].transport,
+                  alist->index == 0 ? "*" : "");
+       for (i = 1; i < alist->nr_addrs; i++)
+               seq_printf(m, "                                         %pISpc%s\n",
+                          &alist->addrs[i].transport,
+                          alist->index == i ? "*" : "");
        return 0;
 }