case FN_HASH_BITS:
{
+ int r = fs->store->collection_bits(cid);
+ if (r < 0)
+ return r;
char buf[8];
- snprintf(buf, sizeof(buf), "%d\n", fs->store->collection_bits(cid));
+ snprintf(buf, sizeof(buf), "%d\n", r);
pbl = new bufferlist;
pbl->append(buf);
}
case FN_OBJECT_DATA:
{
pbl = new bufferlist;
- fs->store->read(cid, oid, 0, 0, *pbl);
+ int r = fs->store->read(cid, oid, 0, 0, *pbl);
+ if (r < 0) {
+ delete pbl;
+ return r;
+ }
}
break;
case FN_OBJECT_ATTR_VAL:
{
bufferptr bp;
- fs->store->getattr(cid, oid, key.c_str(), bp);
+ int r = fs->store->getattr(cid, oid, key.c_str(), bp);
+ if (r < 0)
+ return r;
pbl = new bufferlist;
pbl->append(bp);
}
set<string> k;
k.insert(key);
map<string,bufferlist> v;
- fs->store->omap_get_values(cid, oid, k, &v);
+ int r = fs->store->omap_get_values(cid, oid, k, &v);
+ if (r < 0)
+ return r;
pbl = new bufferlist;
*pbl = v[key];
}
case FN_OBJECT_OMAP_HEADER:
{
bufferlist bl;
- fs->store->omap_get_header(cid, oid, &bl);
+ int r = fs->store->omap_get_header(cid, oid, &bl);
+ if (r < 0)
+ return r;
pbl = new bufferlist;
pbl->claim(bl);
}