uint32_t librados::IoCtxImpl::get_object_hash_position(const std::string& oid)
{
- Mutex::Locker l(*lock);
return objecter->get_object_hash_position(poolid, oid, oloc.nspace);
}
uint32_t librados::IoCtxImpl::get_object_pg_hash_position(const std::string& oid)
{
- Mutex::Locker l(*lock);
return objecter->get_object_pg_hash_position(poolid, oid, oloc.nspace);
}
Cond cond;
bool done;
Context *onfinish = new C_SafeCond(&mylock, &cond, &done, &reply);
- lock->Lock();
reply = objecter->create_pool_snap(poolid, sName, onfinish);
- lock->Unlock();
if (reply < 0) {
delete onfinish;
bool done;
Context *onfinish = new C_SafeCond(&mylock, &cond, &done, &reply);
snapid_t snapid;
- lock->Lock();
reply = objecter->allocate_selfmanaged_snap(poolid, &snapid, onfinish);
- lock->Unlock();
if (reply < 0) {
delete onfinish;
Cond cond;
bool done;
Context *onfinish = new C_SafeCond(&mylock, &cond, &done, &reply);
- lock->Lock();
reply = objecter->delete_pool_snap(poolid, sName, onfinish);
- lock->Unlock();
if (reply < 0) {
delete onfinish;
::ObjectOperation op;
prepare_assert_ops(&op);
op.rollback(snapid);
- lock->Lock();
objecter->mutate(oid, oloc,
op, snapc, ut, 0,
onack, NULL, NULL);
- lock->Unlock();
mylock.Lock();
while (!done) cond.Wait(mylock);
lock->Lock();
snapid_t snap;
+#warning should do that internally in osdmap with some other lock
const map<int64_t, pg_pool_t>& pools = objecter->osdmap->get_pools();
const pg_pool_t& pg_pool = pools.find(poolid)->second;
map<snapid_t, pool_snap_info_t>::const_iterator p;
Mutex mylock("IoCtxImpl::selfmanaged_snap_remove::mylock");
Cond cond;
bool done;
- lock->Lock();
objecter->delete_selfmanaged_snap(poolid, snapid_t(snapid),
new C_SafeCond(&mylock, &cond, &done, &reply));
- lock->Unlock();
mylock.Lock();
while (!done) cond.Wait(mylock);
Mutex mylock("IoCtxImpl::pool_change_auid::mylock");
Cond cond;
bool done;
- lock->Lock();
objecter->change_pool_auid(poolid,
new C_SafeCond(&mylock, &cond, &done, &reply),
auid);
- lock->Unlock();
mylock.Lock();
while (!done) cond.Wait(mylock);
int librados::IoCtxImpl::pool_change_auid_async(unsigned long long auid,
PoolAsyncCompletionImpl *c)
{
- Mutex::Locker l(*lock);
objecter->change_pool_auid(poolid,
new C_PoolAsync_Safe(c),
auid);
int librados::IoCtxImpl::snap_list(vector<uint64_t> *snaps)
{
Mutex::Locker l(*lock);
+#warning locking for this and following snap functions
const pg_pool_t *pi = objecter->osdmap->get_pg_pool(poolid);
for (map<snapid_t,pool_snap_info_t>::const_iterator p = pi->snaps.begin();
p != pi->snaps.end();
context->max_entries = max_entries;
context->nspace = oloc.nspace;
- lock->Lock();
objecter->list_objects(context, new C_SafeCond(&mylock, &cond, &done, &r));
- lock->Unlock();
mylock.Lock();
while(!done)
uint32_t librados::IoCtxImpl::list_seek(Objecter::ListContext *context,
uint32_t pos)
{
- Mutex::Locker l(*lock);
context->list.clear();
return objecter->list_objects_seek(context, pos);
}
Objecter::Op *objecter_op = objecter->prepare_mutate_op(oid, oloc,
*o, snapc, ut, flags,
NULL, oncommit, &ver);
- lock->Lock();
objecter->op_submit(objecter_op);
- lock->Unlock();
mylock.Lock();
while (!done)
Objecter::Op *objecter_op = objecter->prepare_read_op(oid, oloc,
*o, snap_seq, pbl, flags,
onack, &ver);
- lock->Lock();
objecter->op_submit(objecter_op);
- lock->Unlock();
mylock.Lock();
while (!done)
Objecter::Op *objecter_op = objecter->prepare_read_op(oid, oloc,
*o, snap_seq, pbl, flags,
onack, &c->objver);
- Mutex::Locker l(*lock);
objecter->op_submit(objecter_op);
return 0;
}
c->io = this;
queue_aio_write(c);
- Mutex::Locker l(*lock);
objecter->mutate(oid, oloc, *o, snap_context, ut, flags, onack, oncommit,
&c->objver);
c->io = this;
c->blp = pbl;
- Mutex::Locker l(*lock);
objecter->read(oid, oloc,
off, len, snapid, pbl, 0,
onack, &c->objver);
c->bl.push_back(buffer::create_static(len, buf));
c->blp = &c->bl;
- Mutex::Locker l(*lock);
objecter->read(oid, oloc,
off, len, snapid, &c->bl, 0,
onack, &c->objver);
onack->m_ops.sparse_read(off, len, m, data_bl, NULL);
- Mutex::Locker l(*lock);
objecter->read(oid, oloc,
onack->m_ops, snap_seq, NULL, 0,
onack, &c->objver);
Context *onack = new C_aio_Ack(c);
Context *onsafe = new C_aio_Safe(c);
- Mutex::Locker l(*lock);
objecter->write(oid, oloc,
off, len, snapc, bl, ut, 0,
onack, onsafe, &c->objver);
Context *onack = new C_aio_Ack(c);
Context *onsafe = new C_aio_Safe(c);
- Mutex::Locker l(*lock);
objecter->append(oid, oloc,
len, snapc, bl, ut, 0,
onack, onsafe, &c->objver);
Context *onack = new C_aio_Ack(c);
Context *onsafe = new C_aio_Safe(c);
- Mutex::Locker l(*lock);
objecter->write_full(oid, oloc,
snapc, bl, ut, 0,
onack, onsafe, &c->objver);
Context *onack = new C_aio_Ack(c);
Context *onsafe = new C_aio_Safe(c);
- Mutex::Locker l(*lock);
objecter->remove(oid, oloc,
snapc, ut, 0,
onack, onsafe, &c->objver);
c->io = this;
C_aio_stat_Ack *onack = new C_aio_stat_Ack(c, pmtime);
- Mutex::Locker l(*lock);
objecter->stat(oid, oloc,
snap_seq, psize, &onack->mtime, 0,
onack, &c->objver);
c->is_read = true;
c->io = this;
- Mutex::Locker l(*lock);
::ObjectOperation rd;
rd.hit_set_ls(pls, NULL);
object_locator_t oloc(poolid);
c->is_read = true;
c->io = this;
- Mutex::Locker l(*lock);
::ObjectOperation rd;
rd.hit_set_get(utime_t(stamp, 0), pbl, 0);
object_locator_t oloc(poolid);
c->is_read = true;
c->io = this;
- Mutex::Locker l(*lock);
::ObjectOperation rd;
prepare_assert_ops(&rd);
rd.call(cls, method, inbl);
int r;
Context *onack = new C_SafeCond(&mylock, &cond, &done, &r);
- lock->Lock();
objecter->mapext(oid, oloc,
off, len, snap_seq, &bl, 0,
onack);
- lock->Unlock();
mylock.Lock();
while (!done)
lock->Lock();
+#warning watch related locking?
+
WatchContext *wc = new WatchContext(this, oid, ctx);
client->register_watcher(wc, cookie);
prepare_assert_ops(&wr);