@@ -4071,8 +4071,7 @@ static void handle_cap_export(struct inode *inode, struct ceph_mds_caps *ex,
4071
4071
struct ceph_cap * cap , * tcap , * new_cap = NULL ;
4072
4072
struct ceph_inode_info * ci = ceph_inode (inode );
4073
4073
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 ;
4076
4075
int target , issued ;
4077
4076
int mds = session -> s_mds ;
4078
4077
@@ -4086,8 +4085,8 @@ static void handle_cap_export(struct inode *inode, struct ceph_mds_caps *ex,
4086
4085
target = -1 ;
4087
4086
}
4088
4087
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 );
4091
4090
retry :
4092
4091
down_read (& mdsc -> snap_rwsem );
4093
4092
spin_lock (& ci -> i_ceph_lock );
@@ -4214,18 +4213,22 @@ static void handle_cap_import(struct ceph_mds_client *mdsc,
4214
4213
u64 realmino = le64_to_cpu (im -> realm );
4215
4214
u64 cap_id = le64_to_cpu (im -> cap_id );
4216
4215
u64 p_cap_id ;
4216
+ u32 piseq = 0 ;
4217
+ u32 pmseq = 0 ;
4217
4218
int peer ;
4218
4219
4219
4220
if (ph ) {
4220
4221
p_cap_id = le64_to_cpu (ph -> cap_id );
4221
4222
peer = le32_to_cpu (ph -> mds );
4223
+ piseq = le32_to_cpu (ph -> issue_seq );
4224
+ pmseq = le32_to_cpu (ph -> mseq );
4222
4225
} else {
4223
4226
p_cap_id = 0 ;
4224
4227
peer = -1 ;
4225
4228
}
4226
4229
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 );
4229
4232
retry :
4230
4233
cap = __get_cap_for_mds (ci , mds );
4231
4234
if (!cap ) {
@@ -4254,15 +4257,13 @@ static void handle_cap_import(struct ceph_mds_client *mdsc,
4254
4257
doutc (cl , " remove export cap %p mds%d flags %d\n" ,
4255
4258
ocap , peer , ph -> flags );
4256
4259
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 )) {
4259
4262
pr_err_ratelimited_client (cl , "mismatched seq/mseq: "
4260
4263
"%p %llx.%llx mds%d seq %d mseq %d"
4261
4264
" importer mds%d has peer seq %d mseq %d\n" ,
4262
4265
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 );
4266
4267
}
4267
4268
ceph_remove_cap (mdsc , ocap , (ph -> flags & CEPH_CAP_FLAG_RELEASE ));
4268
4269
}
@@ -4336,7 +4337,7 @@ void ceph_handle_caps(struct ceph_mds_session *session,
4336
4337
struct ceph_snap_realm * realm = NULL ;
4337
4338
int op ;
4338
4339
int msg_version = le16_to_cpu (msg -> hdr .version );
4339
- u32 seq , mseq ;
4340
+ u32 seq , mseq , issue_seq ;
4340
4341
struct ceph_vino vino ;
4341
4342
void * snaptrace ;
4342
4343
size_t snaptrace_len ;
@@ -4346,8 +4347,6 @@ void ceph_handle_caps(struct ceph_mds_session *session,
4346
4347
bool close_sessions = false;
4347
4348
bool do_cap_release = false;
4348
4349
4349
- doutc (cl , "from mds%d\n" , session -> s_mds );
4350
-
4351
4350
if (!ceph_inc_mds_stopping_blocker (mdsc , session ))
4352
4351
return ;
4353
4352
@@ -4361,6 +4360,7 @@ void ceph_handle_caps(struct ceph_mds_session *session,
4361
4360
vino .snap = CEPH_NOSNAP ;
4362
4361
seq = le32_to_cpu (h -> seq );
4363
4362
mseq = le32_to_cpu (h -> migrate_seq );
4363
+ issue_seq = le32_to_cpu (h -> issue_seq );
4364
4364
4365
4365
snaptrace = h + 1 ;
4366
4366
snaptrace_len = le32_to_cpu (h -> snap_trace_len );
@@ -4448,12 +4448,11 @@ void ceph_handle_caps(struct ceph_mds_session *session,
4448
4448
4449
4449
/* lookup ino */
4450
4450
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 );
4453
4454
4454
4455
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 );
4457
4456
4458
4457
if (!inode ) {
4459
4458
doutc (cl , " i don't have ino %llx\n" , vino .ino );
0 commit comments