bsendmsg(ua, _("Invalid use duration specified: %s\n"), val);
return;
}
+ query = get_pool_memory(PM_MESSAGE);
Mmsg(&query, "UPDATE Media SET VolUseDuration=%s WHERE MediaId=%u",
edit_uint64(mr->VolUseDuration, ed1), mr->MediaId);
if (!db_sql_query(ua->db, query, NULL, NULL)) {
char ed1[30];
bool done = false;
char *kw[] = {
- N_("VolStatus"),
- N_("VolRetention"),
- N_("VolUse"),
- N_("MaxVolJobs"),
- N_("MaxVolFiles"),
- N_("MaxVolBytes"),
- N_("Recycle"),
+ N_("VolStatus"), /* 0 */
+ N_("VolRetention"), /* 1 */
+ N_("VolUse"), /* 2 */
+ N_("MaxVolJobs"), /* 3 */
+ N_("MaxVolFiles"), /* 4 */
+ N_("MaxVolBytes"), /* 5 */
+ N_("Recycle"), /* 6 */
NULL };
if (!select_media_dbr(ua, &mr)) {
pool_ctl[pool].max_used = pool_ctl[pool].in_use;
}
V(mutex);
- Dmsg3(150, "sm_get_pool_memory reuse %x to %s:%d\n", buf, fname, lineno);
+ Dmsg3(300, "sm_get_pool_memory reuse %x to %s:%d\n", buf, fname, lineno);
sm_new_owner(fname, lineno, (char *)buf);
return (POOLMEM *)((char *)buf+HEAD_SIZE);
}
- if ((buf = (struct abufhead *) sm_malloc(fname, lineno, pool_ctl[pool].size+HEAD_SIZE)) == NULL) {
+ if ((buf = (struct abufhead *)sm_malloc(fname, lineno, pool_ctl[pool].size+HEAD_SIZE)) == NULL) {
V(mutex);
Emsg1(M_ABORT, 0, "Out of memory requesting %d bytes\n", pool_ctl[pool].size);
}
pool_ctl[pool].max_used = pool_ctl[pool].in_use;
}
V(mutex);
- Dmsg3(150, "sm_get_pool_memory give %x to %s:%d\n", buf, fname, lineno);
+ Dmsg3(300, "sm_get_pool_memory give %x to %s:%d\n", buf, fname, lineno);
return (POOLMEM *)((char *)buf+HEAD_SIZE);
}
struct abufhead *next;
/* Don't let him free the same buffer twice */
for (next=pool_ctl[pool].free_buf; next; next=next->next) {
- ASSERT(next != buf); /* attempt to free twice */
+ if (next == buf) {
+ Dmsg4(300, "bad free_pool_memory %x pool=%d from %s:%d\n", buf, pool, fname, lineno);
+ V(mutex); /* unblock the pool */
+ ASSERT(next != buf); /* attempt to free twice */
+ }
}
#endif
buf->next = pool_ctl[pool].free_buf;
pool_ctl[pool].free_buf = buf;
}
- Dmsg2(150, "free_pool_memory %x pool=%d\n", buf, pool);
+ Dmsg4(300, "free_pool_memory %x pool=%d from %s:%d\n", buf, pool, fname, lineno);
V(mutex);
}
struct abufhead *next;
/* Don't let him free the same buffer twice */
for (next=pool_ctl[pool].free_buf; next; next=next->next) {
- ASSERT(next != buf); /* attempt to free twice */
+ if (next == buf) {
+ V(mutex);
+ ASSERT(next != buf); /* attempt to free twice */
+ }
}
#endif
buf->next = pool_ctl[pool].free_buf;
pool_ctl[pool].free_buf = buf;
}
- Dmsg2(150, "free_pool_memory %x pool=%d\n", buf, pool);
+ Dmsg2(300, "free_pool_memory %x pool=%d\n", buf, pool);
V(mutex);
}