// ========= KeyValueStore::BufferTransaction Implementation ============
-int KeyValueStore::BufferTransaction::check_coll(const coll_t &cid)
-{
- StripHeaderMap::iterator it = strip_headers.find(
- make_pair(get_coll_for_coll(), make_ghobject_for_coll(cid)));
- if (it != strip_headers.end() && !it->second.deleted) {
- return 0;
- }
-
- if (store->_check_coll(cid) == 0)
- return 0;
-
- return -ENOENT;
-}
-
int KeyValueStore::BufferTransaction::lookup_cached_header(
const coll_t &cid, const ghobject_t &oid,
StripObjectMap::StripObjectHeader **strip_header,
bool create_if_missing)
{
- if (check_coll(cid) < 0)
- return -ENOENT;
-
StripObjectMap::StripObjectHeader header;
int r = 0;
// =========== KeyValueStore Op Implementation ==============
// objects
-int KeyValueStore::_check_coll(const coll_t &cid)
-{
- if (is_coll_obj(cid))
- return 0;
-
- StripObjectMap::StripObjectHeader header;
- int r = backend->lookup_strip_header(get_coll_for_coll(),
- make_ghobject_for_coll(cid), header);
- if (r < 0) {
- dout(10) << __func__ << " could not find header r = " << r << dendl;
- return -ENOENT;
- }
-
- return 0;
-}
-
bool KeyValueStore::exists(coll_t cid, const ghobject_t& oid)
{
dout(10) << __func__ << "collection: " << cid << " object: " << oid
int r;
StripObjectMap::StripObjectHeader header;
- r = _check_coll(cid);
- if (r < 0) {
- return r;
- }
-
r = backend->lookup_strip_header(cid, oid, header);
if (r < 0) {
return false;
StripObjectMap::StripObjectHeader header;
- int r = _check_coll(cid);
- if (r < 0) {
- return r;
- }
-
- r = backend->lookup_strip_header(cid, oid, header);
+ int r = backend->lookup_strip_header(cid, oid, header);
if (r < 0) {
dout(10) << "stat " << cid << "/" << oid << "=" << r << dendl;
return -ENOENT;
uint64_t offset, size_t len, bufferlist& bl,
bool allow_eio, BufferTransaction *bt)
{
- int r;
-
if (header.max_size < offset) {
dout(10) << __func__ << " " << header.cid << "/" << header.oid << ")"
<< " offset exceed the length of bl"<< dendl;
}
}
- r = backend->get_values_with_header(header, OBJECT_STRIP_PREFIX, keys, &out);
+ int r = backend->get_values_with_header(header, OBJECT_STRIP_PREFIX, keys, &out);
if (r < 0) {
dout(10) << __func__ << " " << header.cid << "/" << header.oid << " "
<< offset << "~" << len << " = " << r << dendl;
StripObjectMap::StripObjectHeader header;
- int r = _check_coll(cid);
- if (r < 0) {
- return r;
- }
-
- r = backend->lookup_strip_header(cid, oid, header);
+ int r = backend->lookup_strip_header(cid, oid, header);
if (r < 0) {
dout(10) << __func__ << " " << cid << "/" << oid << " " << offset << "~"
int r;
StripObjectMap::StripObjectHeader header;
- r = _check_coll(cid);
- if (r < 0) {
- return r;
- }
-
r = backend->lookup_strip_header(cid, oid, header);
if (r < 0) {
dout(10) << "fiemap " << cid << "/" << oid << " " << offset << "~" << len
map<string, bufferlist> got;
set<string> to_get;
- r = _check_coll(cid);
- if (r < 0) {
- return r;
- }
-
to_get.insert(string(name));
r = backend->get_values(cid, oid, OBJECT_XATTR, to_get, &got);
if (r < 0 && r != -ENOENT) {
int r;
map<string, bufferlist> attr_aset;
- r = _check_coll(cid);
- if (r < 0) {
- return r;
- }
-
r = backend->get(cid, oid, OBJECT_XATTR, &attr_aset);
if (r < 0 && r != -ENOENT) {
dout(10) << __func__ << " could not get attrs r = " << r << dendl;
dout(15) << __func__ << " " << c.to_str() << " '" << name
<< "'" << dendl;
- int r = _check_coll(c);
- if (r < 0) {
- return r;
- }
-
set<string> keys;
map<string, bufferlist> out;
keys.insert(string(name));
- r = backend->get_values(get_coll_for_coll(), make_ghobject_for_coll(c),
- COLLECTION_ATTR, keys, &out);
+ int r = backend->get_values(get_coll_for_coll(), make_ghobject_for_coll(c),
+ COLLECTION_ATTR, keys, &out);
if (r < 0) {
dout(10) << __func__ << " could not get key" << string(name) << dendl;
r = -EINVAL;
{
dout(10) << __func__ << " " << cid.to_str() << dendl;
- int r = _check_coll(cid);
- if (r < 0) {
- return r;
- }
-
map<string, bufferlist> out;
set<string> keys;
keys.insert(it->first);
}
- r = backend->get_values(get_coll_for_coll(), make_ghobject_for_coll(cid),
- COLLECTION_ATTR, keys, &out);
+ int r = backend->get_values(get_coll_for_coll(), make_ghobject_for_coll(cid),
+ COLLECTION_ATTR, keys, &out);
if (r < 0) {
dout(10) << __func__ << " could not get keys" << dendl;
r = -EINVAL;
{
dout(15) << __func__ << " " << c << dendl;
- int r = _check_coll(c);
- if (r < 0) {
- return r;
- }
-
bufferlist bl;
set<string> out;
StripObjectMap::StripObjectHeader *header;
- r = t.lookup_cached_header(get_coll_for_coll(),
- make_ghobject_for_coll(c),
- &header, false);
+ int r = t.lookup_cached_header(get_coll_for_coll(),
+ make_ghobject_for_coll(c), &header, false);
if (r < 0) {
dout(10) << __func__ << " could not find header r = " << r << dendl;
return r;
dout(10) << __func__ << " " << dendl;
StripObjectMap::StripObjectHeader header;
-
- int r = _check_coll(c);
+ int r = backend->lookup_strip_header(get_coll_for_coll(),
+ make_ghobject_for_coll(c), header);
if (r < 0) {
return false;
}
{
dout(10) << __func__ << " " << dendl;
- int r = _check_coll(c);
- if (r < 0) {
- return false;
- }
-
vector<ghobject_t> oids;
backend->list_objects(c, ghobject_t(), 1, &oids, 0);
bool done = false;
ghobject_t next = start;
- int r = _check_coll(c);
- if (r < 0) {
- return r;
- }
-
while (!done) {
vector<ghobject_t> next_objects;
- r = collection_list_partial(c, next, get_ideal_list_min(),
- get_ideal_list_max(), seq,
- &next_objects, &next);
+ int r = collection_list_partial(c, next, get_ideal_list_min(),
+ get_ideal_list_max(), seq,
+ &next_objects, &next);
if (r < 0)
return r;
StripObjectMap::StripObjectHeader header;
- int r = _check_coll(c);
- if (r < 0) {
- return r;
- }
-
- r = backend->lookup_strip_header(c, hoid, header);
+ int r = backend->lookup_strip_header(c, hoid, header);
if (r < 0) {
dout(10) << __func__ << " lookup_strip_header failed: r =" << r << dendl;
return r;
{
dout(15) << __func__ << " " << c << "/" << hoid << dendl;
- int r = _check_coll(c);
- if (r < 0) {
- return r;
- }
-
set<string> keys;
map<string, bufferlist> got;
keys.insert(OBJECT_OMAP_HEADER_KEY);
- r = backend->get_values(c, hoid, OBJECT_OMAP_HEADER, keys, &got);
+ int r = backend->get_values(c, hoid, OBJECT_OMAP_HEADER, keys, &got);
if (r < 0 && r != -ENOENT) {
assert(allow_eio || !m_fail_eio || r != -EIO);
dout(10) << __func__ << " err r =" << r << dendl;
{
dout(15) << __func__ << " " << c << "/" << hoid << dendl;
- int r = _check_coll(c);
- if (r < 0) {
- return r;
- }
-
- r = backend->get_keys(c, hoid, OBJECT_OMAP, keys);
+ int r = backend->get_keys(c, hoid, OBJECT_OMAP, keys);
if (r < 0 && r != -ENOENT) {
assert(!m_fail_eio || r != -EIO);
return r;
{
dout(15) << __func__ << " " << c << "/" << hoid << dendl;
- int r = _check_coll(c);
- if (r < 0) {
- return r;
- }
-
- r = backend->get_values(c, hoid, OBJECT_OMAP, keys, out);
+ int r = backend->get_values(c, hoid, OBJECT_OMAP, keys, out);
if (r < 0 && r != -ENOENT) {
assert(!m_fail_eio || r != -EIO);
return r;
{
dout(15) << __func__ << " " << c << "/" << hoid << dendl;
- int r = _check_coll(c);
- if (r < 0) {
- return r;
- }
-
- r = backend->check_keys(c, hoid, OBJECT_OMAP, keys, out);
+ int r = backend->check_keys(c, hoid, OBJECT_OMAP, keys, out);
if (r < 0 && r != -ENOENT) {
assert(!m_fail_eio || r != -EIO);
return r;