]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ReplicatedPG,PG: use PGBackend methods for getattr
authorSamuel Just <sam.just@inktank.com>
Tue, 17 Sep 2013 17:35:47 +0000 (10:35 -0700)
committerSamuel Just <sam.just@inktank.com>
Fri, 4 Oct 2013 20:50:09 +0000 (13:50 -0700)
Signed-off-by: Samuel Just <sam.just@inktank.com>
src/osd/PG.cc
src/osd/ReplicatedPG.cc

index e962ff6462714a0b225efec5f315176137085c17..17a8070832475cb0574f3e1b4755f45dcd7680c9 100644 (file)
@@ -2067,19 +2067,16 @@ void PG::upgrade(ObjectStore *store, const interval_set<snapid_t> &snapcolls)
         ++j) {
       if (j->snap < CEPH_MAXSNAP) {
        OSDriver::OSTransaction _t(osdriver.get_transaction(&t));
-       bufferptr bp;
-       r = store->getattr(
-         cid,
+       bufferlist bl;
+       r = get_pgbackend()->objects_get_attr(
          *j,
          OI_ATTR,
-         bp);
+         &bl);
        if (r < 0) {
          derr << __func__ << ": getattr returned "
               << cpp_strerror(r) << dendl;
          assert(0);
        }
-       bufferlist bl;
-       bl.push_back(bp);
        object_info_t oi(bl);
        set<snapid_t> oi_snaps(oi.snaps.begin(), oi.snaps.end());
        set<snapid_t> cur_snaps;
index 646b01c47c7a8e30e16ff632e073fe39c3c19f41..9c0b6b3d30bfa4afdd4f71df3d4508c3fa35dba7 100644 (file)
@@ -398,8 +398,10 @@ bool PGLSPlainFilter::filter(bufferlist& xattr_data, bufferlist& outdata)
 bool ReplicatedPG::pgls_filter(PGLSFilter *filter, hobject_t& sobj, bufferlist& outdata)
 {
   bufferlist bl;
-
-  int ret = osd->store->getattr(coll_t(info.pgid), sobj, filter->get_xattr().c_str(), bl);
+  int ret = pgbackend->objects_get_attr(
+    sobj,
+    filter->get_xattr(),
+    &bl);
   dout(0) << "getattr (sobj=" << sobj << ", attr=" << filter->get_xattr() << ") returned " << ret << dendl;
   if (ret < 0)
     return false;
@@ -683,13 +685,17 @@ void ReplicatedPG::do_pg_op(OpRequestRef op)
          if (snapid != CEPH_NOSNAP) {
            bufferlist bl;
            if (candidate.snap == CEPH_NOSNAP) {
-             osd->store->getattr(coll, candidate, SS_ATTR, bl);
+             pgbackend->objects_get_attr(
+               candidate,
+               SS_ATTR,
+               &bl);
              SnapSet snapset(bl);
              if (snapid <= snapset.seq)
                continue;
            } else {
              bufferlist attr_bl;
-             osd->store->getattr(coll, candidate, OI_ATTR, 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(),
@@ -2637,7 +2643,10 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
        string aname;
        bp.copy(op.xattr.name_len, aname);
        string name = "_" + aname;
-       int r = osd->store->getattr(coll, soid, name.c_str(), osd_op.outdata);
+       int r = pgbackend->objects_get_attr(
+         soid,
+         name,
+         &(osd_op.outdata));
        if (r >= 0) {
          op.xattr.value_len = r;
          result = 0;
@@ -2680,9 +2689,15 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
        
        bufferlist xattr;
        if (op.op == CEPH_OSD_OP_CMPXATTR)
-         result = osd->store->getattr(coll, soid, name.c_str(), xattr);
+         result = pgbackend->objects_get_attr(
+           soid,
+           name,
+           &xattr);
        else
-         result = osd->store->getattr(coll, src_obc->obs.oi.soid, name.c_str(), xattr);
+         result = pgbackend->objects_get_attr(
+           src_obc->obs.oi.soid,
+           name,
+           &xattr);
        if (result < 0 && result != -EEXIST && result != -ENODATA)
          break;
        
@@ -5229,7 +5244,7 @@ ObjectContextRef ReplicatedPG::get_object_context(const hobject_t& soid,
       assert(attrs->count(OI_ATTR));
       bv.push_back(attrs->find(OI_ATTR)->second);
     } else {
-      int r = osd->store->getattr(coll, soid, OI_ATTR, bv);
+      int r = pgbackend->objects_get_attr(soid, OI_ATTR, &bv);
       if (r < 0) {
        if (!can_create)
          return ObjectContextRef();   // -ENOENT!
@@ -5493,12 +5508,12 @@ SnapSetContext *ReplicatedPG::get_snapset_context(
     if (!attrs) {
       hobject_t head(oid, key, CEPH_NOSNAP, seed,
                     info.pgid.pool(), nspace);
-      int r = osd->store->getattr(coll, head, SS_ATTR, bv);
+      int r = pgbackend->objects_get_attr(head, SS_ATTR, &bv);
       if (r < 0) {
        // try _snapset
        hobject_t snapdir(oid, key, CEPH_SNAPDIR, seed,
                          info.pgid.pool(), nspace);
-       r = osd->store->getattr(coll, snapdir, SS_ATTR, bv);
+       r = pgbackend->objects_get_attr(snapdir, SS_ATTR, &bv);
        if (r < 0 && !can_create)
          return NULL;
       }