Lines Matching refs:cn
150 dsvcd_container_t *cn, *cn_next;
173 for (cn = ds->ds_hash[i].cl_head; cn != NULL; cn = cn_next) {
174 cn_next = cn->cn_next;
175 cn_destroy(cn);
196 dsvcd_container_t *cn;
202 for (cn = cn_list->cl_head; cn != NULL; cn = cn->cn_next) {
203 if (idhash == cn->cn_idhash && strcmp(cn_id, cn->cn_id) == 0)
207 if (cn == NULL) {
208 cn = cn_create(cn_id, crosshost);
209 if (cn != NULL) {
211 cn_list->cl_head->cn_prev = cn;
213 cn->cn_next = cn_list->cl_head;
214 cn->cn_prev = NULL;
215 cn_list->cl_head = cn;
216 cn->cn_idhash = idhash;
217 cn->cn_nout = 0;
218 cn->cn_lastrel = 0;
222 if (cn != NULL)
223 cn->cn_nout++;
226 return (cn);
230 * Release a container `cn' belonging to datastore `ds'. Once a container
235 ds_release_container(dsvcd_datastore_t *ds, dsvcd_container_t *cn)
238 uint32_t idhash = ds_hash(cn->cn_id);
244 cn->cn_nout--;
245 cn->cn_lastrel = time(NULL);
259 dsvcd_container_t *cn, *cn_next;
266 for (cn = cn_list->cl_head; cn != NULL; cn = cn_next) {
267 cn_next = cn->cn_next;
275 if (cn->cn_nout != 0 ||
276 cn_locktype(cn) != DSVCD_NOLOCK ||
277 cn->cn_lastrel + idle >= time(NULL))
280 if (cn == cn_list->cl_head)
281 cn_list->cl_head = cn->cn_next;
283 cn->cn_prev->cn_next = cn->cn_next;
285 if (cn->cn_next != NULL)
286 cn->cn_next->cn_prev = cn->cn_prev;
288 cn_destroy(cn);