Skip to content

Commit 76daa30

Browse files
committed
afs: Improve server refcount/active count tracing
Improve server refcount/active count tracing to distinguish between simply getting/putting a ref and using/unusing the server record (which changes the activity count as well as the refcount). This makes it a bit easier to work out what's going on. Signed-off-by: David Howells <dhowells@redhat.com> cc: Marc Dionne <marc.dionne@auristor.com> cc: linux-afs@lists.infradead.org cc: linux-fsdevel@vger.kernel.org Link: https://lore.kernel.org/r/20250224234154.2014840-10-dhowells@redhat.com/ # v1 Link: https://lore.kernel.org/r/20250310094206.801057-6-dhowells@redhat.com/ # v4
1 parent 4f67bcf commit 76daa30

5 files changed

Lines changed: 26 additions & 22 deletions

File tree

fs/afs/fsclient.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1653,7 +1653,7 @@ int afs_fs_give_up_all_callbacks(struct afs_net *net, struct afs_server *server,
16531653
bp = call->request;
16541654
*bp++ = htonl(FSGIVEUPALLCALLBACKS);
16551655

1656-
call->server = afs_use_server(server, afs_server_trace_give_up_cb);
1656+
call->server = afs_use_server(server, afs_server_trace_use_give_up_cb);
16571657
afs_make_call(call, GFP_NOFS);
16581658
afs_wait_for_call_to_complete(call);
16591659
ret = call->error;
@@ -1760,7 +1760,7 @@ bool afs_fs_get_capabilities(struct afs_net *net, struct afs_server *server,
17601760
return false;
17611761

17621762
call->key = key;
1763-
call->server = afs_use_server(server, afs_server_trace_get_caps);
1763+
call->server = afs_use_server(server, afs_server_trace_use_get_caps);
17641764
call->peer = rxrpc_kernel_get_peer(estate->addresses->addrs[addr_index].peer);
17651765
call->probe = afs_get_endpoint_state(estate, afs_estate_trace_get_getcaps);
17661766
call->probe_index = addr_index;

fs/afs/rxrpc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ static void afs_free_call(struct afs_call *call)
179179
if (call->type->destructor)
180180
call->type->destructor(call);
181181

182-
afs_unuse_server_notime(call->net, call->server, afs_server_trace_put_call);
182+
afs_unuse_server_notime(call->net, call->server, afs_server_trace_unuse_call);
183183
kfree(call->request);
184184

185185
o = atomic_read(&net->nr_outstanding_calls);

fs/afs/server.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ struct afs_server *afs_find_server(struct afs_net *net, const struct rxrpc_peer
3333

3434
do {
3535
if (server)
36-
afs_unuse_server_notime(net, server, afs_server_trace_put_find_rsq);
36+
afs_unuse_server_notime(net, server, afs_server_trace_unuse_find_rsq);
3737
server = NULL;
3838
seq++; /* 2 on the 1st/lockless path, otherwise odd */
3939
read_seqbegin_or_lock(&net->fs_addr_lock, &seq);
@@ -49,7 +49,7 @@ struct afs_server *afs_find_server(struct afs_net *net, const struct rxrpc_peer
4949
server = NULL;
5050
continue;
5151
found:
52-
server = afs_maybe_use_server(server, afs_server_trace_get_by_addr);
52+
server = afs_maybe_use_server(server, afs_server_trace_use_by_addr);
5353

5454
} while (need_seqretry(&net->fs_addr_lock, seq));
5555

@@ -76,7 +76,7 @@ struct afs_server *afs_find_server_by_uuid(struct afs_net *net, const uuid_t *uu
7676
* changes.
7777
*/
7878
if (server)
79-
afs_unuse_server(net, server, afs_server_trace_put_uuid_rsq);
79+
afs_unuse_server(net, server, afs_server_trace_unuse_uuid_rsq);
8080
server = NULL;
8181
seq++; /* 2 on the 1st/lockless path, otherwise odd */
8282
read_seqbegin_or_lock(&net->fs_lock, &seq);
@@ -91,7 +91,7 @@ struct afs_server *afs_find_server_by_uuid(struct afs_net *net, const uuid_t *uu
9191
} else if (diff > 0) {
9292
p = p->rb_right;
9393
} else {
94-
afs_use_server(server, afs_server_trace_get_by_uuid);
94+
afs_use_server(server, afs_server_trace_use_by_uuid);
9595
break;
9696
}
9797

@@ -273,7 +273,8 @@ static struct afs_addr_list *afs_vl_lookup_addrs(struct afs_cell *cell,
273273
}
274274

275275
/*
276-
* Get or create a fileserver record.
276+
* Get or create a fileserver record and return it with an active-use count on
277+
* it.
277278
*/
278279
struct afs_server *afs_lookup_server(struct afs_cell *cell, struct key *key,
279280
const uuid_t *uuid, u32 addr_version)

fs/afs/server_list.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ void afs_put_serverlist(struct afs_net *net, struct afs_server_list *slist)
1616
if (slist && refcount_dec_and_test(&slist->usage)) {
1717
for (i = 0; i < slist->nr_servers; i++)
1818
afs_unuse_server(net, slist->servers[i].server,
19-
afs_server_trace_put_slist);
19+
afs_server_trace_unuse_slist);
2020
kfree_rcu(slist, rcu);
2121
}
2222
}
@@ -98,7 +98,7 @@ struct afs_server_list *afs_alloc_server_list(struct afs_volume *volume,
9898
if (j < slist->nr_servers) {
9999
if (slist->servers[j].server == server) {
100100
afs_unuse_server(volume->cell->net, server,
101-
afs_server_trace_put_slist_isort);
101+
afs_server_trace_unuse_slist_isort);
102102
continue;
103103
}
104104

include/trace/events/afs.h

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -132,22 +132,25 @@ enum yfs_cm_operation {
132132
EM(afs_server_trace_destroy, "DESTROY ") \
133133
EM(afs_server_trace_free, "FREE ") \
134134
EM(afs_server_trace_gc, "GC ") \
135-
EM(afs_server_trace_get_by_addr, "GET addr ") \
136-
EM(afs_server_trace_get_by_uuid, "GET uuid ") \
137-
EM(afs_server_trace_get_caps, "GET caps ") \
138135
EM(afs_server_trace_get_install, "GET inst ") \
139-
EM(afs_server_trace_get_new_cbi, "GET cbi ") \
140136
EM(afs_server_trace_get_probe, "GET probe") \
141-
EM(afs_server_trace_give_up_cb, "giveup-cb") \
142137
EM(afs_server_trace_purging, "PURGE ") \
143-
EM(afs_server_trace_put_call, "PUT call ") \
144138
EM(afs_server_trace_put_cbi, "PUT cbi ") \
145-
EM(afs_server_trace_put_find_rsq, "PUT f-rsq") \
146139
EM(afs_server_trace_put_probe, "PUT probe") \
147-
EM(afs_server_trace_put_slist, "PUT slist") \
148-
EM(afs_server_trace_put_slist_isort, "PUT isort") \
149-
EM(afs_server_trace_put_uuid_rsq, "PUT u-req") \
150-
E_(afs_server_trace_update, "UPDATE")
140+
EM(afs_server_trace_see_expired, "SEE expd ") \
141+
EM(afs_server_trace_unuse_call, "UNU call ") \
142+
EM(afs_server_trace_unuse_create_fail, "UNU cfail") \
143+
EM(afs_server_trace_unuse_find_rsq, "UNU f-rsq") \
144+
EM(afs_server_trace_unuse_slist, "UNU slist") \
145+
EM(afs_server_trace_unuse_slist_isort, "UNU isort") \
146+
EM(afs_server_trace_unuse_uuid_rsq, "PUT u-req") \
147+
EM(afs_server_trace_update, "UPDATE ") \
148+
EM(afs_server_trace_use_by_addr, "USE addr ") \
149+
EM(afs_server_trace_use_by_uuid, "USE uuid ") \
150+
EM(afs_server_trace_use_cm_call, "USE cm-cl") \
151+
EM(afs_server_trace_use_get_caps, "USE gcaps") \
152+
EM(afs_server_trace_use_give_up_cb, "USE gvupc") \
153+
E_(afs_server_trace_wait_create, "WAIT crt ")
151154

152155
#define afs_volume_traces \
153156
EM(afs_volume_trace_alloc, "ALLOC ") \
@@ -1531,7 +1534,7 @@ TRACE_EVENT(afs_server,
15311534
__entry->reason = reason;
15321535
),
15331536

1534-
TP_printk("s=%08x %s u=%d a=%d",
1537+
TP_printk("s=%08x %s r=%d a=%d",
15351538
__entry->server,
15361539
__print_symbolic(__entry->reason, afs_server_traces),
15371540
__entry->ref,

0 commit comments

Comments
 (0)