Skip to content

Commit

Permalink
osd: drop unused+inefficient support for pg[n]ls at a specific snapid
Browse files Browse the repository at this point in the history
This was super slow, and Objecter was incapable of generating the requests
to use it.

To do this properly we should create a new listing op that returns the
set of clones and/or snaps for each object as part of a single listing
result.  If/when the need arises.

Signed-off-by: Sage Weil <sage@redhat.com>
  • Loading branch information
liewegas committed Feb 13, 2017
1 parent 3d296a3 commit 51679af
Showing 1 changed file with 10 additions and 50 deletions.
60 changes: 10 additions & 50 deletions src/osd/PrimaryLogPG.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1066,6 +1066,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 @@ -1115,8 +1119,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 @@ -1164,32 +1166,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 @@ -1258,6 +1237,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 @@ -1339,32 +1322,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_object_locator().nspace)
continue;
Expand Down

0 comments on commit 51679af

Please sign in to comment.