Skip to content

Commit

Permalink
Merge pull request #13398 from liewegas/wip-pgnls-snaps
Browse files Browse the repository at this point in the history
osd: drop support for listing objects at a given snap

Reviewed-by: Greg Farnum <gfarnum@redhat.com>
  • Loading branch information
liewegas committed Feb 16, 2017
2 parents 829a08f + 51679af commit fd39516
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 70 deletions.
79 changes: 10 additions & 69 deletions src/osd/PrimaryLogPG.cc
Expand Up @@ -1020,21 +1020,6 @@ int PrimaryLogPG::do_command(

// ==========================================================

bool PrimaryLogPG::pg_op_must_wait(MOSDOp *op)
{
if (pg_log.get_missing().get_items().empty())
return false;
for (vector<OSDOp>::iterator p = op->ops.begin(); p != op->ops.end(); ++p) {
if (p->op.op == CEPH_OSD_OP_PGLS || p->op.op == CEPH_OSD_OP_PGNLS ||
p->op.op == CEPH_OSD_OP_PGLS_FILTER || p->op.op == CEPH_OSD_OP_PGNLS_FILTER) {
if (op->get_snapid() != CEPH_NOSNAP) {
return true;
}
}
}
return false;
}

void PrimaryLogPG::do_pg_op(OpRequestRef op)
{
MOSDOp *m = static_cast<MOSDOp *>(op->get_req());
Expand Down Expand Up @@ -1079,6 +1064,10 @@ void PrimaryLogPG::do_pg_op(OpRequestRef op)
// fall through

case CEPH_OSD_OP_PGNLS:
if (snapid != CEPH_NOSNAP) {
result = -EINVAL;
break;
}
if (get_osdmap()->raw_pg_to_pg(m->get_pg()) != info.pgid.pgid) {
dout(10) << " pgnls pg=" << m->get_pg()
<< " " << get_osdmap()->raw_pg_to_pg(m->get_pg())
Expand Down Expand Up @@ -1128,8 +1117,6 @@ void PrimaryLogPG::do_pg_op(OpRequestRef op)
break;
}

assert(snapid == CEPH_NOSNAP || pg_log.get_missing().get_items().empty());

map<hobject_t, pg_missing_item>::const_iterator missing_iter =
pg_log.get_missing().get_items().lower_bound(current);
vector<hobject_t>::iterator ls_iter = sentries.begin();
Expand Down Expand Up @@ -1177,32 +1164,9 @@ void PrimaryLogPG::do_pg_op(OpRequestRef op)
if (candidate.snap == CEPH_SNAPDIR)
continue;

if (candidate.snap < snapid)
if (candidate.snap != CEPH_NOSNAP)
continue;

if (snapid != CEPH_NOSNAP) {
bufferlist bl;
if (candidate.snap == CEPH_NOSNAP) {
pgbackend->objects_get_attr(
candidate,
SS_ATTR,
&bl);
SnapSet snapset(bl);
if (snapid <= snapset.seq)
continue;
} else {
bufferlist attr_bl;
pgbackend->objects_get_attr(
candidate, OI_ATTR, &attr_bl);
object_info_t oi(attr_bl);
vector<snapid_t>::iterator i = find(oi.snaps.begin(),
oi.snaps.end(),
snapid);
if (i == oi.snaps.end())
continue;
}
}

// skip internal namespace
if (candidate.get_namespace() == cct->_conf->osd_hit_set_namespace)
continue;
Expand Down Expand Up @@ -1271,6 +1235,10 @@ void PrimaryLogPG::do_pg_op(OpRequestRef op)
// fall through

case CEPH_OSD_OP_PGLS:
if (snapid != CEPH_NOSNAP) {
result = -EINVAL;
break;
}
if (get_osdmap()->raw_pg_to_pg(m->get_pg()) != info.pgid.pgid) {
dout(10) << " pgls pg=" << m->get_pg()
<< " " << get_osdmap()->raw_pg_to_pg(m->get_pg())
Expand Down Expand Up @@ -1352,32 +1320,9 @@ void PrimaryLogPG::do_pg_op(OpRequestRef op)
if (candidate.snap == CEPH_SNAPDIR)
continue;

if (candidate.snap < snapid)
if (candidate.snap != CEPH_NOSNAP)
continue;

if (snapid != CEPH_NOSNAP) {
bufferlist bl;
if (candidate.snap == CEPH_NOSNAP) {
pgbackend->objects_get_attr(
candidate,
SS_ATTR,
&bl);
SnapSet snapset(bl);
if (snapid <= snapset.seq)
continue;
} else {
bufferlist attr_bl;
pgbackend->objects_get_attr(
candidate, OI_ATTR, &attr_bl);
object_info_t oi(attr_bl);
vector<snapid_t>::iterator i = find(oi.snaps.begin(),
oi.snaps.end(),
snapid);
if (i == oi.snaps.end())
continue;
}
}

// skip wrong namespace
if (candidate.get_namespace() != m->get_hobj().nspace)
continue;
Expand Down Expand Up @@ -1817,10 +1762,6 @@ void PrimaryLogPG::do_op(OpRequestRef& op)
}

if (op->includes_pg_op()) {
if (pg_op_must_wait(m)) {
wait_for_all_missing(op);
return;
}
return do_pg_op(op);
}

Expand Down
1 change: 0 additions & 1 deletion src/osd/PrimaryLogPG.h
Expand Up @@ -1353,7 +1353,6 @@ class PrimaryLogPG : public PG, public PGBackend::Listener {
void do_op(OpRequestRef& op) override;
void record_write_error(OpRequestRef op, const hobject_t &soid,
MOSDOpReply *orig_reply, int r);
bool pg_op_must_wait(MOSDOp *op);
void do_pg_op(OpRequestRef op);
void do_sub_op(OpRequestRef op) override;
void do_sub_op_reply(OpRequestRef op) override;
Expand Down

0 comments on commit fd39516

Please sign in to comment.