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) ...@@ -373,11 +373,6 @@ sfemem_objslim(struct worker *wrk, struct objcore *memoc)
const struct stvfe *stvfe = stv_stvfe(stv); const struct stvfe *stvfe = stv_stvfe(stv);
uint32_t xid; 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 */ /* NOOP unless drain */
if (! stvfe->shutdown || wrk->strangelove != (int)STVELOVE_IS_DRAIN) if (! stvfe->shutdown || wrk->strangelove != (int)STVELOVE_IS_DRAIN)
return; return;
...@@ -449,11 +444,6 @@ sfedsk_objslim(struct worker *wrk, struct objcore *dskoc) ...@@ -449,11 +444,6 @@ sfedsk_objslim(struct worker *wrk, struct objcore *dskoc)
const struct stvfe *stvfe = stv_stvfe(stv); const struct stvfe *stvfe = stv_stvfe(stv);
struct fcoc fcoc; 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 */ /* for drain, just mutate */
if (stvfe->shutdown && wrk->strangelove == (int)STVELOVE_IS_DRAIN) { if (stvfe->shutdown && wrk->strangelove == (int)STVELOVE_IS_DRAIN) {
LRU_Remove(dskoc); LRU_Remove(dskoc);
...@@ -461,6 +451,11 @@ sfedsk_objslim(struct worker *wrk, struct objcore *dskoc) ...@@ -461,6 +451,11 @@ sfedsk_objslim(struct worker *wrk, struct objcore *dskoc)
return; 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 */ /* turn into memoc for proper delete during LRU */
fcoc = stvfe_dskoc_fco(wrk, stv, stvfe, dskoc); fcoc = stvfe_dskoc_fco(wrk, stv, stvfe, dskoc);
fcoc_fini(stvfe->fc, &fcoc); 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