.. | .. |
---|
3496 | 3496 | break; |
---|
3497 | 3497 | |
---|
3498 | 3498 | case CEPH_SESSION_FLUSHMSG: |
---|
| 3499 | + /* flush cap releases */ |
---|
| 3500 | + spin_lock(&session->s_cap_lock); |
---|
| 3501 | + if (session->s_num_cap_releases) |
---|
| 3502 | + ceph_flush_cap_releases(mdsc, session); |
---|
| 3503 | + spin_unlock(&session->s_cap_lock); |
---|
| 3504 | + |
---|
3499 | 3505 | send_flushmsg_ack(mdsc, session, seq); |
---|
3500 | 3506 | break; |
---|
3501 | 3507 | |
---|
.. | .. |
---|
4505 | 4511 | |
---|
4506 | 4512 | dout("mdsc delayed_work\n"); |
---|
4507 | 4513 | |
---|
4508 | | - if (mdsc->stopping) |
---|
| 4514 | + if (mdsc->stopping >= CEPH_MDSC_STOPPING_FLUSHED) |
---|
4509 | 4515 | return; |
---|
4510 | 4516 | |
---|
4511 | 4517 | mutex_lock(&mdsc->mutex); |
---|
.. | .. |
---|
4695 | 4701 | void ceph_mdsc_pre_umount(struct ceph_mds_client *mdsc) |
---|
4696 | 4702 | { |
---|
4697 | 4703 | dout("pre_umount\n"); |
---|
4698 | | - mdsc->stopping = 1; |
---|
| 4704 | + mdsc->stopping = CEPH_MDSC_STOPPING_BEGIN; |
---|
4699 | 4705 | |
---|
4700 | 4706 | ceph_mdsc_iterate_sessions(mdsc, send_flush_mdlog, true); |
---|
4701 | 4707 | ceph_mdsc_iterate_sessions(mdsc, lock_unlock_session, false); |
---|