CEPH_CAP_OP_EXPORT, /* mds has exported the cap */
CEPH_CAP_OP_IMPORT, /* mds has imported the cap from specified mds */
CEPH_CAP_OP_UPDATE, /* client->mds update */
- CEPH_CAP_OP_WANT, /* client->mds wanted update */
+ CEPH_CAP_OP_DROP, /* client->mds drop cap bits */
CEPH_CAP_OP_FLUSH_ACK, /* mds->client flushed. if caps=0, cap also released. */
CEPH_CAP_OP_FLUSHSNAP, /* client->mds flush snapped metadata */
CEPH_CAP_OP_FLUSHSNAP_ACK, /* mds->client flushed snapped metadata */
case CEPH_CAP_OP_EXPORT: return "export";
case CEPH_CAP_OP_IMPORT: return "import";
case CEPH_CAP_OP_UPDATE: return "update";
- case CEPH_CAP_OP_WANT: return "want";
+ case CEPH_CAP_OP_DROP: return "drop";
case CEPH_CAP_OP_FLUSH_ACK: return "flush_ack";
case CEPH_CAP_OP_FLUSHSNAP: return "flushsnap";
case CEPH_CAP_OP_FLUSHSNAP_ACK: return "flushsnap_ack";
}
/* don't update mds wanted on drop */
- if (drop)
+ if (drop) {
want = cap->mds_wanted;
-
- if (want & ~cap->mds_wanted)
- op = CEPH_CAP_OP_WANT;
- else
+ op = CEPH_CAP_OP_DROP;
+ } else {
op = CEPH_CAP_OP_UPDATE;
+ }
mds = cap->mds; /* remember mds, so we don't repeat */
<< " (seq " << m->get_seq() << " != last_issue " << cap->get_last_issue() << ")" << dendl;
}
}
- if (m->get_op() == CEPH_CAP_OP_WANT && (wanted & ~cap->pending()))
+ if (m->get_op() != CEPH_CAP_OP_DROP && (wanted & ~cap->pending()))
do_issue = true;
if (!_do_cap_update(in, cap, m->get_dirty(), m->get_wanted(), follows, m, ack)) {