~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;
}
~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;
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
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;
return true;
}
-bool PrimaryLogPG::pgls_filter(PGLSFilter *filter, hobject_t& sobj, bufferlist& outdata)
+bool PrimaryLogPG::pgls_filter(PGLSFilter* filter, hobject_t& sobj)
{
bufferlist bl;
}
}
- return filter->filter(sobj, bl, outdata);
+ return filter->filter(sobj, bl);
}
int PrimaryLogPG::get_pgls_filter(bufferlist::const_iterator& iter, PGLSFilter **pfilter)
int result = 0;
string cname, mname;
PGLSFilter *filter = NULL;
- bufferlist filter_out;
snapid_t snapid = m->get_snapid();
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
}
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;
}
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,
}
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;
}
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;
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
<< ", 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);
}
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()
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