]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
osd, osdc: drop the unused outdata feature of PGLSFilter.
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Sat, 10 Aug 2019 08:38:20 +0000 (10:38 +0200)
committerKefu Chai <kchai@redhat.com>
Thu, 15 Aug 2019 02:47:48 +0000 (10:47 +0800)
Before this commit PGLSFilter interface was offering the outdata
parameter in its filter() method:

  filter(..., bufferlist& outdata)

OSD was serializing and appending the bufferlist to response to
CEPH_OSD_OP_PGLS_FILTER and CEPH_OSD_OP_PGNLS_FILTER operations.
At the Objecter's side these extra bits were being parsed and
finally stored in NListContext::extra_info. However, it really
looks this member is not used anywhere.

The commit removes the outdata handling on multiple layers: from
PGLSFilter implementations, through OSD till Objecter.

Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/cls/cephfs/cls_cephfs.cc
src/cls/hello/cls_hello.cc
src/objclass/objclass.h
src/osd/PrimaryLogPG.cc
src/osd/PrimaryLogPG.h
src/osdc/Objecter.cc
src/osdc/Objecter.h

index 7e3214b9246fe3ec4ff7101fb7c877b1b6a95c45..3500ae6e497c72e57c5478ae97fb1bf45ecccb87 100644 (file)
@@ -146,12 +146,10 @@ public:
 
   ~PGLSCephFSFilter() override {}
   bool reject_empty_xattr() override { return false; }
-  bool filter(const hobject_t &obj, bufferlist& xattr_data,
-                      bufferlist& outdata) override;
+  bool filter(const hobject_t &obj, bufferlist& xattr_data) override;
 };
 
-bool PGLSCephFSFilter::filter(const hobject_t &obj,
-                             bufferlist& xattr_data, bufferlist& outdata)
+bool PGLSCephFSFilter::filter(const hobject_t &obj, bufferlist& xattr_data)
 {
   const std::string need_ending = ".00000000";
   const std::string &obj_name = obj.oid.name;
index eaa2df175eab8382a0db10f2c1b19971682aaf6d..261b0f60e061ed969aca395ba4f8437d641ff85b 100644 (file)
@@ -266,8 +266,7 @@ public:
   }
 
   ~PGLSHelloFilter() override {}
-  bool filter(const hobject_t &obj, bufferlist& xattr_data,
-                      bufferlist& outdata) override
+  bool filter(const hobject_t &obj, ceph::bufferlist& xattr_data) override
   {
     if (val.size() != xattr_data.length())
       return false;
index 7ddc6ff36fdb4bd08c6cf74c21a9f18f777cfbfb..703f0cf706c509cd6f8193dd824fba59e2c221d4 100644 (file)
@@ -81,8 +81,7 @@ protected:
 public:
   PGLSFilter();
   virtual ~PGLSFilter();
-  virtual bool filter(const hobject_t &obj, ceph::buffer::list& xattr_data,
-                      ceph::buffer::list& outdata) = 0;
+  virtual bool filter(const hobject_t &obj, ceph::buffer::list& xattr_data) = 0;
 
   /**
    * Arguments passed from the RADOS client.  Implementations must
index 0d4787cd2a8a1df7f436bdc1f95e96e5c3594d25..be6050df6c52a37a529e8ee5596d2c424812e296 100644 (file)
@@ -776,12 +776,10 @@ public:
     return 0;
   }
   ~PGLSPlainFilter() override {}
-  bool filter(const hobject_t &obj, bufferlist& xattr_data,
-                      bufferlist& outdata) override;
+  bool filter(const hobject_t &obj, bufferlist& xattr_data) override;
 };
 
-bool PGLSPlainFilter::filter(const hobject_t &obj,
-                             bufferlist& xattr_data, bufferlist& outdata)
+bool PGLSPlainFilter::filter(const hobject_t &obj, bufferlist& xattr_data)
 {
   if (val.size() != xattr_data.length())
     return false;
@@ -792,7 +790,7 @@ bool PGLSPlainFilter::filter(const hobject_t &obj,
   return true;
 }
 
-bool PrimaryLogPG::pgls_filter(PGLSFilter *filter, hobject_t& sobj, bufferlist& outdata)
+bool PrimaryLogPG::pgls_filter(PGLSFilter* filter, hobject_t& sobj)
 {
   bufferlist bl;
 
@@ -810,7 +808,7 @@ bool PrimaryLogPG::pgls_filter(PGLSFilter *filter, hobject_t& sobj, bufferlist&
     }
   }
 
-  return filter->filter(sobj, bl, outdata);
+  return filter->filter(sobj, bl);
 }
 
 int PrimaryLogPG::get_pgls_filter(bufferlist::const_iterator& iter, PGLSFilter **pfilter)
@@ -1036,7 +1034,6 @@ void PrimaryLogPG::do_pg_op(OpRequestRef op)
   int result = 0;
   string cname, mname;
   PGLSFilter *filter = NULL;
-  bufferlist filter_out;
 
   snapid_t snapid = m->get_snapid();
 
@@ -1182,7 +1179,7 @@ void PrimaryLogPG::do_pg_op(OpRequestRef op)
                candidate.get_namespace() != m->get_hobj().nspace)
            continue;
 
-         if (filter && !pgls_filter(filter, candidate, filter_out))
+         if (filter && !pgls_filter(filter, candidate))
            continue;
 
           dout(20) << "pgnls item 0x" << std::hex
@@ -1211,8 +1208,6 @@ void PrimaryLogPG::do_pg_op(OpRequestRef op)
         }
         dout(10) << "pgnls handle=" << response.handle << dendl;
        encode(response, osd_op.outdata);
-       if (filter)
-         encode(filter_out, osd_op.outdata);
        dout(10) << " pgnls result=" << result << " outdata.length()="
                 << osd_op.outdata.length() << dendl;
       }
@@ -1332,7 +1327,7 @@ void PrimaryLogPG::do_pg_op(OpRequestRef op)
          if (recovery_state.get_missing_loc().is_deleted(candidate))
            continue;
 
-         if (filter && !pgls_filter(filter, candidate, filter_out))
+         if (filter && !pgls_filter(filter, candidate))
            continue;
 
          response.entries.push_back(make_pair(candidate.oid,
@@ -1345,8 +1340,6 @@ void PrimaryLogPG::do_pg_op(OpRequestRef op)
        }
        response.handle = next;
        encode(response, osd_op.outdata);
-       if (filter)
-         encode(filter_out, osd_op.outdata);
        dout(10) << " pgls result=" << result << " outdata.length()="
                 << osd_op.outdata.length() << dendl;
       }
index 3498a419f13d1d3c3e0cc133b537e1068c9dcb1a..adc93974ce4fa343dd805b4dc4ce6543a0632f3d 100644 (file)
@@ -1410,7 +1410,7 @@ protected:
   int do_sparse_read(OpContext *ctx, OSDOp& osd_op);
   int do_writesame(OpContext *ctx, OSDOp& osd_op);
 
-  bool pgls_filter(PGLSFilter *filter, hobject_t& sobj, bufferlist& outdata);
+  bool pgls_filter(PGLSFilter *filter, hobject_t& sobj);
   int get_pgls_filter(bufferlist::const_iterator& iter, PGLSFilter **pfilter);
 
   map<hobject_t, list<OpRequestRef>> in_progress_proxy_ops;
index ec0126a0bc65422641786dfe9cc5301209cdeb49..9d11a3186e49d5dfb50f81ff30763935da44d184 100644 (file)
@@ -3798,10 +3798,11 @@ void Objecter::_nlist_reply(NListContext *list_context, int r,
 
   auto iter = list_context->bl.cbegin();
   pg_nls_response_t response;
-  ceph::buffer::list extra_info;
   decode(response, iter);
   if (!iter.end()) {
-    decode(extra_info, iter);
+    // we do this as legacy.
+    ceph::buffer::list legacy_extra_info;
+    decode(legacy_extra_info, iter);
   }
 
   // if the osd returns 1 (newer code), or handle MAX, it means we
@@ -3828,7 +3829,6 @@ void Objecter::_nlist_reply(NListContext *list_context, int r,
                 << ", response.entries " << response.entries
                 << ", handle " << response.handle
                 << ", tentative new pos " << list_context->pos << dendl;
-  list_context->extra_info.append(extra_info);
   if (response_size) {
     list_context->list.splice(list_context->list.end(), response.entries);
   }
@@ -5156,11 +5156,12 @@ void Objecter::_enumerate_reply(
   auto iter = bl.cbegin();
   pg_nls_response_t response;
 
-  // XXX extra_info doesn't seem used anywhere?
-  ceph::buffer::list extra_info;
   decode(response, iter);
   if (!iter.end()) {
-    decode(extra_info, iter);
+    // extra_info isn't used anywhere. We do this solely to preserve
+    // backward compatibility
+    ceph::buffer::list legacy_extra_info;
+    decode(legacy_extra_info, iter);
   }
 
   ldout(cct, 10) << __func__ << ": got " << response.entries.size()
index 292fd918cfade08e77bffe2aa2047bb42d4e1d16..b0ddfe81efb4f1671962da66c70cb763f9e884c5 100644 (file)
@@ -1610,8 +1610,6 @@ public:
 
     ceph::buffer::list filter;
 
-    ceph::buffer::list extra_info;
-
     // The budget associated with this context, once it is set (>= 0),
     // the budget is not get/released on OP basis, instead the budget
     // is acquired before sending the first OP and released upon receiving