Skip to content

Commit 8ea412e

Browse files
batrickidryomov
authored andcommitted
ceph: improve caps debugging output
This improves uniformity and exposes important sequence numbers. Now looks like: <7>[ 73.749563] ceph: caps.c:4465 : [c9653bca-110b-4f70-9f84-5a195b205e9a 15290] caps mds2 op export ino 20000000000.fffffffffffffffe inode 0000000008d2e5ea seq 0 iseq 0 mseq 0 ... <7>[ 73.749574] ceph: caps.c:4102 : [c9653bca-110b-4f70-9f84-5a195b205e9a 15290] cap 20000000000.fffffffffffffffe export to peer 1 piseq 1 pmseq 1 ... <7>[ 73.749645] ceph: caps.c:4465 : [c9653bca-110b-4f70-9f84-5a195b205e9a 15290] caps mds1 op import ino 20000000000.fffffffffffffffe inode 0000000008d2e5ea seq 1 iseq 1 mseq 1 ... <7>[ 73.749681] ceph: caps.c:4244 : [c9653bca-110b-4f70-9f84-5a195b205e9a 15290] cap 20000000000.fffffffffffffffe import from peer 2 piseq 686 pmseq 0 ... <7>[ 248.645596] ceph: caps.c:4465 : [c9653bca-110b-4f70-9f84-5a195b205e9a 15290] caps mds1 op revoke ino 20000000000.fffffffffffffffe inode 0000000008d2e5ea seq 2538 iseq 1 mseq 1 See also ceph.git commit cb4ff28af09f ("mds: add issue_seq to all cap messages"). Link: https://tracker.ceph.com/issues/66704 Signed-off-by: Patrick Donnelly <pdonnell@redhat.com> Reviewed-by: Ilya Dryomov <idryomov@gmail.com> Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
1 parent 8b41ac4 commit 8ea412e

File tree

1 file changed

+17
-18
lines changed

1 file changed

+17
-18
lines changed

fs/ceph/caps.c

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4071,8 +4071,7 @@ static void handle_cap_export(struct inode *inode, struct ceph_mds_caps *ex,
40714071
struct ceph_cap *cap, *tcap, *new_cap = NULL;
40724072
struct ceph_inode_info *ci = ceph_inode(inode);
40734073
u64 t_cap_id;
4074-
unsigned mseq = le32_to_cpu(ex->migrate_seq);
4075-
unsigned t_issue_seq, t_mseq;
4074+
u32 t_issue_seq, t_mseq;
40764075
int target, issued;
40774076
int mds = session->s_mds;
40784077

@@ -4086,8 +4085,8 @@ static void handle_cap_export(struct inode *inode, struct ceph_mds_caps *ex,
40864085
target = -1;
40874086
}
40884087

4089-
doutc(cl, "%p %llx.%llx ci %p mds%d mseq %d target %d\n",
4090-
inode, ceph_vinop(inode), ci, mds, mseq, target);
4088+
doutc(cl, " cap %llx.%llx export to peer %d piseq %u pmseq %u\n",
4089+
ceph_vinop(inode), target, t_issue_seq, t_mseq);
40914090
retry:
40924091
down_read(&mdsc->snap_rwsem);
40934092
spin_lock(&ci->i_ceph_lock);
@@ -4214,18 +4213,22 @@ static void handle_cap_import(struct ceph_mds_client *mdsc,
42144213
u64 realmino = le64_to_cpu(im->realm);
42154214
u64 cap_id = le64_to_cpu(im->cap_id);
42164215
u64 p_cap_id;
4216+
u32 piseq = 0;
4217+
u32 pmseq = 0;
42174218
int peer;
42184219

42194220
if (ph) {
42204221
p_cap_id = le64_to_cpu(ph->cap_id);
42214222
peer = le32_to_cpu(ph->mds);
4223+
piseq = le32_to_cpu(ph->issue_seq);
4224+
pmseq = le32_to_cpu(ph->mseq);
42224225
} else {
42234226
p_cap_id = 0;
42244227
peer = -1;
42254228
}
42264229

4227-
doutc(cl, "%p %llx.%llx ci %p mds%d mseq %d peer %d\n",
4228-
inode, ceph_vinop(inode), ci, mds, mseq, peer);
4230+
doutc(cl, " cap %llx.%llx import from peer %d piseq %u pmseq %u\n",
4231+
ceph_vinop(inode), peer, piseq, pmseq);
42294232
retry:
42304233
cap = __get_cap_for_mds(ci, mds);
42314234
if (!cap) {
@@ -4254,15 +4257,13 @@ static void handle_cap_import(struct ceph_mds_client *mdsc,
42544257
doutc(cl, " remove export cap %p mds%d flags %d\n",
42554258
ocap, peer, ph->flags);
42564259
if ((ph->flags & CEPH_CAP_FLAG_AUTH) &&
4257-
(ocap->seq != le32_to_cpu(ph->issue_seq) ||
4258-
ocap->mseq != le32_to_cpu(ph->mseq))) {
4260+
(ocap->seq != piseq ||
4261+
ocap->mseq != pmseq)) {
42594262
pr_err_ratelimited_client(cl, "mismatched seq/mseq: "
42604263
"%p %llx.%llx mds%d seq %d mseq %d"
42614264
" importer mds%d has peer seq %d mseq %d\n",
42624265
inode, ceph_vinop(inode), peer,
4263-
ocap->seq, ocap->mseq, mds,
4264-
le32_to_cpu(ph->issue_seq),
4265-
le32_to_cpu(ph->mseq));
4266+
ocap->seq, ocap->mseq, mds, piseq, pmseq);
42664267
}
42674268
ceph_remove_cap(mdsc, ocap, (ph->flags & CEPH_CAP_FLAG_RELEASE));
42684269
}
@@ -4336,7 +4337,7 @@ void ceph_handle_caps(struct ceph_mds_session *session,
43364337
struct ceph_snap_realm *realm = NULL;
43374338
int op;
43384339
int msg_version = le16_to_cpu(msg->hdr.version);
4339-
u32 seq, mseq;
4340+
u32 seq, mseq, issue_seq;
43404341
struct ceph_vino vino;
43414342
void *snaptrace;
43424343
size_t snaptrace_len;
@@ -4346,8 +4347,6 @@ void ceph_handle_caps(struct ceph_mds_session *session,
43464347
bool close_sessions = false;
43474348
bool do_cap_release = false;
43484349

4349-
doutc(cl, "from mds%d\n", session->s_mds);
4350-
43514350
if (!ceph_inc_mds_stopping_blocker(mdsc, session))
43524351
return;
43534352

@@ -4361,6 +4360,7 @@ void ceph_handle_caps(struct ceph_mds_session *session,
43614360
vino.snap = CEPH_NOSNAP;
43624361
seq = le32_to_cpu(h->seq);
43634362
mseq = le32_to_cpu(h->migrate_seq);
4363+
issue_seq = le32_to_cpu(h->issue_seq);
43644364

43654365
snaptrace = h + 1;
43664366
snaptrace_len = le32_to_cpu(h->snap_trace_len);
@@ -4448,12 +4448,11 @@ void ceph_handle_caps(struct ceph_mds_session *session,
44484448

44494449
/* lookup ino */
44504450
inode = ceph_find_inode(mdsc->fsc->sb, vino);
4451-
doutc(cl, " op %s ino %llx.%llx inode %p\n", ceph_cap_op_name(op),
4452-
vino.ino, vino.snap, inode);
4451+
doutc(cl, " caps mds%d op %s ino %llx.%llx inode %p seq %u iseq %u mseq %u\n",
4452+
session->s_mds, ceph_cap_op_name(op), vino.ino, vino.snap, inode,
4453+
seq, issue_seq, mseq);
44534454

44544455
mutex_lock(&session->s_mutex);
4455-
doutc(cl, " mds%d seq %lld cap seq %u\n", session->s_mds,
4456-
session->s_seq, (unsigned)seq);
44574456

44584457
if (!inode) {
44594458
doutc(cl, " i don't have ino %llx\n", vino.ino);

0 commit comments

Comments
 (0)