Skip to content

Commit 3829eb6

Browse files
committed
Merge PR ceph#60283 into main
* refs/pull/60283/head: mds: add issue_seq to all cap messages include/ceph_fs: correct ceph_mds_cap_peer field name include/ceph_fs: correct ceph_mds_cap_item field name messages/MClientCaps: use correct ceph_seq_t for cap sequence types messages/MClientCaps: dump issue_seq for debugging mds: remove dead code Reviewed-by: Venky Shankar <[email protected]>
2 parents 5fc414b + cb4ff28 commit 3829eb6

File tree

7 files changed

+27
-22
lines changed

7 files changed

+27
-22
lines changed

src/client/Client.cc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3843,6 +3843,7 @@ void Client::send_cap(Inode *in, MetaSession *session, Cap *cap,
38433843
want,
38443844
flush,
38453845
cap->mseq,
3846+
cap->issue_seq,
38463847
cap_epoch_barrier);
38473848
/*
38483849
* Since the setattr will check the cephx mds auth access before
@@ -3856,7 +3857,6 @@ void Client::send_cap(Inode *in, MetaSession *session, Cap *cap,
38563857
m->caller_uid = -1;
38573858
m->caller_gid = -1;
38583859

3859-
m->head.issue_seq = cap->issue_seq;
38603860
m->set_tid(flush_tid);
38613861

38623862
m->head.uid = in->uid;
@@ -5521,10 +5521,10 @@ void Client::handle_cap_export(MetaSession *session, Inode *in, const MConstRef<
55215521
if (it != in->caps.end()) {
55225522
Cap &tcap = it->second;
55235523
if (tcap.cap_id == m->peer.cap_id &&
5524-
ceph_seq_cmp(tcap.seq, m->peer.seq) < 0) {
5524+
ceph_seq_cmp(tcap.seq, m->peer.issue_seq) < 0) {
55255525
tcap.cap_id = m->peer.cap_id;
5526-
tcap.seq = m->peer.seq - 1;
5527-
tcap.issue_seq = tcap.seq;
5526+
tcap.seq = m->peer.issue_seq - 1;
5527+
tcap.issue_seq = tcap.issue_seq;
55285528
tcap.issued |= cap.issued;
55295529
tcap.implemented |= cap.issued;
55305530
if (&cap == in->auth_cap)
@@ -5534,7 +5534,7 @@ void Client::handle_cap_export(MetaSession *session, Inode *in, const MConstRef<
55345534
}
55355535
} else {
55365536
add_update_cap(in, tsession.get(), m->peer.cap_id, cap.issued, 0,
5537-
m->peer.seq - 1, m->peer.mseq, (uint64_t)-1,
5537+
m->peer.issue_seq - 1, m->peer.mseq, (uint64_t)-1,
55385538
&cap == in->auth_cap ? CEPH_CAP_FLAG_AUTH : 0,
55395539
cap.latest_perms);
55405540
}

src/client/MetaSession.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ void MetaSession::enqueue_cap_release(inodeno_t ino, uint64_t cap_id, ceph_seq_t
5656
ceph_mds_cap_item i;
5757
i.ino = ino;
5858
i.cap_id = cap_id;
59-
i.seq = iseq;
59+
i.issue_seq = iseq;
6060
i.migrate_seq = mseq;
6161
release->caps.push_back(i);
6262
}

src/include/ceph_fs.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1005,7 +1005,7 @@ extern const char *ceph_cap_op_name(int op);
10051005
/* extra info for cap import/export */
10061006
struct ceph_mds_cap_peer {
10071007
__le64 cap_id;
1008-
__le32 seq;
1008+
__le32 issue_seq;
10091009
__le32 mseq;
10101010
__le32 mds;
10111011
__u8 flags;
@@ -1058,7 +1058,7 @@ struct ceph_mds_cap_release {
10581058
struct ceph_mds_cap_item {
10591059
__le64 ino;
10601060
__le64 cap_id;
1061-
__le32 migrate_seq, seq;
1061+
__le32 migrate_seq, issue_seq;
10621062
} __attribute__ ((packed));
10631063

10641064
#define CEPH_MDS_LEASE_REVOKE 1 /* mds -> client */

src/mds/Capability.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,6 @@ class Capability : public Counter<Capability> {
218218
void set_cap_id(uint64_t i) { cap_id = i; }
219219
uint64_t get_cap_id() const { return cap_id; }
220220

221-
//ceph_seq_t get_last_issue() { return last_issue; }
222-
223221
bool is_suppress() const { return suppress > 0; }
224222
void inc_suppress() { suppress++; }
225223
void dec_suppress() { suppress--; }

src/mds/Locker.cc

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2599,6 +2599,7 @@ int Locker::issue_caps(CInode *in, Capability *only_cap)
25992599
in->find_snaprealm()->inode->ino(),
26002600
cap->get_cap_id(), cap->get_last_seq(),
26012601
pending, wanted, 0, cap->get_mseq(),
2602+
cap->get_last_issue(),
26022603
mds->get_osd_epoch_barrier());
26032604
in->encode_cap_message(m, cap);
26042605

@@ -2649,6 +2650,7 @@ int Locker::issue_caps(CInode *in, Capability *only_cap)
26492650
in->find_snaprealm()->inode->ino(),
26502651
cap->get_cap_id(), cap->get_last_seq(),
26512652
after, wanted, 0, cap->get_mseq(),
2653+
cap->get_last_issue(),
26522654
mds->get_osd_epoch_barrier());
26532655
in->encode_cap_message(m, cap);
26542656

@@ -2675,6 +2677,7 @@ void Locker::issue_truncate(CInode *in)
26752677
cap->get_cap_id(), cap->get_last_seq(),
26762678
cap->pending(), cap->wanted(), 0,
26772679
cap->get_mseq(),
2680+
cap->get_last_issue(),
26782681
mds->get_osd_epoch_barrier());
26792682
in->encode_cap_message(m, cap);
26802683
mds->send_message_client_counted(m, cap->get_session());
@@ -3165,6 +3168,7 @@ void Locker::share_inode_max_size(CInode *in, Capability *only_cap)
31653168
cap->pending(),
31663169
cap->wanted(), 0,
31673170
cap->get_mseq(),
3171+
cap->get_last_issue(),
31683172
mds->get_osd_epoch_barrier());
31693173
in->encode_cap_message(m, cap);
31703174
mds->send_message_client_counted(m, cap->get_session());
@@ -3375,10 +3379,10 @@ void Locker::handle_client_caps(const cref_t<MClientCaps> &m)
33753379
ref_t<MClientCaps> ack;
33763380
if (op == CEPH_CAP_OP_FLUSHSNAP) {
33773381
if (mds->logger) mds->logger->inc(l_mdss_ceph_cap_op_flushsnap_ack);
3378-
ack = make_message<MClientCaps>(CEPH_CAP_OP_FLUSHSNAP_ACK, m->get_ino(), 0, 0, 0, 0, 0, dirty, 0, mds->get_osd_epoch_barrier());
3382+
ack = make_message<MClientCaps>(CEPH_CAP_OP_FLUSHSNAP_ACK, m->get_ino(), 0, 0, 0, 0, 0, dirty, 0, 0, mds->get_osd_epoch_barrier());
33793383
} else {
33803384
if (mds->logger) mds->logger->inc(l_mdss_ceph_cap_op_flush_ack);
3381-
ack = make_message<MClientCaps>(CEPH_CAP_OP_FLUSH_ACK, m->get_ino(), 0, m->get_cap_id(), m->get_seq(), m->get_caps(), 0, dirty, 0, mds->get_osd_epoch_barrier());
3385+
ack = make_message<MClientCaps>(CEPH_CAP_OP_FLUSH_ACK, m->get_ino(), 0, m->get_cap_id(), m->get_seq(), m->get_caps(), 0, dirty, 0, 0, mds->get_osd_epoch_barrier());
33823386
}
33833387
ack->set_snap_follows(follows);
33843388
ack->set_client_tid(m->get_client_tid());
@@ -3500,7 +3504,7 @@ void Locker::handle_client_caps(const cref_t<MClientCaps> &m)
35003504
// case we get a dup response, so whatever.)
35013505
ref_t<MClientCaps> ack;
35023506
if (dirty) {
3503-
ack = make_message<MClientCaps>(CEPH_CAP_OP_FLUSHSNAP_ACK, in->ino(), 0, 0, 0, 0, 0, dirty, 0, mds->get_osd_epoch_barrier());
3507+
ack = make_message<MClientCaps>(CEPH_CAP_OP_FLUSHSNAP_ACK, in->ino(), 0, 0, 0, 0, 0, dirty, 0, 0, mds->get_osd_epoch_barrier());
35043508
ack->set_snap_follows(follows);
35053509
ack->set_client_tid(m->get_client_tid());
35063510
ack->set_oldest_flush_tid(m->get_oldest_flush_tid());
@@ -3589,7 +3593,7 @@ void Locker::handle_client_caps(const cref_t<MClientCaps> &m)
35893593
dout(7) << " flush client." << client << " dirty " << ccap_string(dirty)
35903594
<< " seq " << m->get_seq() << " on " << *in << dendl;
35913595
ack = make_message<MClientCaps>(CEPH_CAP_OP_FLUSH_ACK, in->ino(), 0, cap->get_cap_id(), m->get_seq(),
3592-
m->get_caps(), 0, dirty, 0, mds->get_osd_epoch_barrier());
3596+
m->get_caps(), 0, dirty, 0, cap->get_last_issue(), mds->get_osd_epoch_barrier());
35933597
ack->set_client_tid(m->get_client_tid());
35943598
ack->set_oldest_flush_tid(m->get_oldest_flush_tid());
35953599
}
@@ -4222,7 +4226,7 @@ void Locker::handle_client_cap_release(const cref_t<MClientCapRelease> &m)
42224226
Session *session = mds->get_session(m);
42234227

42244228
for (const auto &cap : m->caps) {
4225-
_do_cap_release(client, inodeno_t((uint64_t)cap.ino) , cap.cap_id, cap.migrate_seq, cap.seq);
4229+
_do_cap_release(client, inodeno_t((uint64_t)cap.ino) , cap.cap_id, cap.migrate_seq, cap.issue_seq);
42264230
}
42274231

42284232
if (session) {

src/mds/MDCache.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5891,7 +5891,7 @@ void MDCache::do_cap_import(Session *session, CInode *in, Capability *cap,
58915891
auto reap = make_message<MClientCaps>(CEPH_CAP_OP_IMPORT,
58925892
in->ino(), realm->inode->ino(), cap->get_cap_id(),
58935893
cap->get_last_seq(), cap->pending(), cap->wanted(),
5894-
0, cap->get_mseq(), mds->get_osd_epoch_barrier());
5894+
0, cap->get_mseq(), cap->get_last_issue(), mds->get_osd_epoch_barrier());
58955895
in->encode_cap_message(reap, cap);
58965896
reap->snapbl = mds->server->get_snap_trace(session, realm);
58975897
reap->set_cap_peer(p_cap_id, p_seq, p_mseq, peer, p_flags);

src/messages/MClientCaps.h

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,9 @@ class MClientCaps final : public SafeMessage {
117117
void set_ctime(const utime_t &t) { ctime = t; }
118118
void set_atime(const utime_t &t) { atime = t; }
119119

120-
void set_cap_peer(uint64_t id, ceph_seq_t seq, ceph_seq_t mseq, int mds, int flags) {
120+
void set_cap_peer(uint64_t id, ceph_seq_t issue_seq, ceph_seq_t mseq, int mds, int flags) {
121121
peer.cap_id = id;
122-
peer.seq = seq;
122+
peer.issue_seq = issue_seq;
123123
peer.mseq = mseq;
124124
peer.mds = mds;
125125
peer.flags = flags;
@@ -137,11 +137,12 @@ class MClientCaps final : public SafeMessage {
137137
inodeno_t ino,
138138
inodeno_t realm,
139139
uint64_t id,
140-
long seq,
140+
ceph_seq_t seq,
141141
int caps,
142142
int wanted,
143143
int dirty,
144-
int mseq,
144+
ceph_seq_t mseq,
145+
ceph_seq_t issue_seq,
145146
epoch_t oeb)
146147
: SafeMessage{CEPH_MSG_CLIENT_CAPS, HEAD_VERSION, COMPAT_VERSION},
147148
osd_epoch_barrier(oeb) {
@@ -155,11 +156,12 @@ class MClientCaps final : public SafeMessage {
155156
head.wanted = wanted;
156157
head.dirty = dirty;
157158
head.migrate_seq = mseq;
159+
head.issue_seq = issue_seq;
158160
memset(&peer, 0, sizeof(peer));
159161
}
160162
MClientCaps(int op,
161163
inodeno_t ino, inodeno_t realm,
162-
uint64_t id, int mseq, epoch_t oeb)
164+
uint64_t id, ceph_seq_t mseq, epoch_t oeb)
163165
: SafeMessage{CEPH_MSG_CLIENT_CAPS, HEAD_VERSION, COMPAT_VERSION},
164166
osd_epoch_barrier(oeb) {
165167
memset(&head, 0, sizeof(head));
@@ -181,7 +183,8 @@ class MClientCaps final : public SafeMessage {
181183
out << "client_caps(" << ceph_cap_op_name(head.op)
182184
<< " ino " << inodeno_t(head.ino)
183185
<< " " << head.cap_id
184-
<< " seq " << head.seq;
186+
<< " seq " << head.seq
187+
<< " issue_seq " << head.issue_seq;
185188
if (get_tid())
186189
out << " tid " << get_tid();
187190
out << " caps=" << ccap_string(head.caps)

0 commit comments

Comments
 (0)