Drain all objects, not just cacheable ones

Should fix this assertion failure during shutdown for the most part
(draining a storage still is not guaranteed to succeed):

Assert error in LRU_Free(), storage/storage_lru.c line 77:
  Condition((((&lru->lru_head)->vtqh_first == ((void*)0))) != 0) not true.
parent 0cdf5cea
......@@ -373,11 +373,6 @@ sfemem_objslim(struct worker *wrk, struct objcore *memoc)
const struct stvfe *stvfe = stv_stvfe(stv);
uint32_t xid;
/* NOOP for calls from HSH_Cancel() */
//lint -e{641,655}
if (memoc->flags & (OC_F_PRIVATE | OC_F_HFM | OC_F_HFP))
return;
/* NOOP unless drain */
if (! stvfe->shutdown || wrk->strangelove != (int)STVELOVE_IS_DRAIN)
return;
......@@ -449,11 +444,6 @@ sfedsk_objslim(struct worker *wrk, struct objcore *dskoc)
const struct stvfe *stvfe = stv_stvfe(stv);
struct fcoc fcoc;
/* NOOP for calls from HSH_Cancel() */
//lint -e{641,655}
if (dskoc->flags & (OC_F_PRIVATE | OC_F_HFM | OC_F_HFP))
return;
/* for drain, just mutate */
if (stvfe->shutdown && wrk->strangelove == (int)STVELOVE_IS_DRAIN) {
LRU_Remove(dskoc);
......@@ -461,6 +451,11 @@ sfedsk_objslim(struct worker *wrk, struct objcore *dskoc)
return;
}
/* NOOP for calls from HSH_Cancel() */
//lint -e{641,655}
if (dskoc->flags & (OC_F_PRIVATE | OC_F_HFM | OC_F_HFP))
return;
/* turn into memoc for proper delete during LRU */
fcoc = stvfe_dskoc_fco(wrk, stv, stvfe, dskoc);
fcoc_fini(stvfe->fc, &fcoc);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment