{
struct objhead *oh;
+ CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
oh = o->objhead;
+ CHECK_OBJ_NOTNULL(oh, OBJHEAD_MAGIC);
AZ(pthread_mutex_lock(&oh->mtx));
+ assert(o->refcnt > 0);
o->refcnt++;
AZ(pthread_mutex_unlock(&oh->mtx));
}
struct storage *st, *stn;
unsigned r;
+ CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
oh = o->objhead;
+ CHECK_OBJ_NOTNULL(oh, OBJHEAD_MAGIC);
/* drop ref on object */
AZ(pthread_mutex_lock(&oh->mtx));
+ assert(o->refcnt > 0);
r = --o->refcnt;
if (!r)
TAILQ_REMOVE(&oh->objects, o, list);
}
TAILQ_FOREACH_SAFE(st, &o->store, list, stn) {
+ CHECK_OBJ_NOTNULL(st, STORAGE_MAGIC);
TAILQ_REMOVE(&o->store, st, list);
st->stevedore->free(st);
}
CHECK_OBJ_NOTNULL(oh, OBJHEAD_MAGIC);
CAST_OBJ_NOTNULL(he, oh->hashpriv, HCL_ENTRY_MAGIC);
+ assert(he->refcnt > 0);
+ assert(he->mtx < hcl_nmtx);
+ assert(he->hash < hcl_nhash);
mtx = he->mtx;
AZ(pthread_mutex_lock(&hcl_mutex[mtx]));
- assert(he->refcnt > 0);
if (--he->refcnt > 0) {
AZ(pthread_mutex_unlock(&hcl_mutex[mtx]));
return (1);