Commit 22881138 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Blindly attempt to fix space accounting in storage_umem.c

(analog of storage_malloc.c)
parent d69149c7
...@@ -58,8 +58,8 @@ struct smu_sc { ...@@ -58,8 +58,8 @@ struct smu_sc {
unsigned magic; unsigned magic;
#define SMU_SC_MAGIC 0x7695f68e #define SMU_SC_MAGIC 0x7695f68e
struct lock smu_mtx; struct lock smu_mtx;
size_t smu_max; VCL_INT smu_max;
size_t smu_alloc; VCL_INT smu_alloc;
struct VSC_smu *stats; struct VSC_smu *stats;
umem_cache_t *smu_cache; umem_cache_t *smu_cache;
}; };
...@@ -151,7 +151,7 @@ smu_alloc(const struct stevedore *st, size_t size) ...@@ -151,7 +151,7 @@ smu_alloc(const struct stevedore *st, size_t size)
CAST_OBJ_NOTNULL(smu_sc, st->priv, SMU_SC_MAGIC); CAST_OBJ_NOTNULL(smu_sc, st->priv, SMU_SC_MAGIC);
Lck_Lock(&smu_sc->smu_mtx); Lck_Lock(&smu_sc->smu_mtx);
smu_sc->stats->c_req++; smu_sc->stats->c_req++;
if (smu_sc->smu_alloc + size > smu_sc->smu_max) { if (smu_sc->smu_alloc + (int64_t)size > smu_sc->smu_max) {
smu_sc->stats->c_fail++; smu_sc->stats->c_fail++;
size = 0; size = 0;
} else { } else {
...@@ -159,7 +159,7 @@ smu_alloc(const struct stevedore *st, size_t size) ...@@ -159,7 +159,7 @@ smu_alloc(const struct stevedore *st, size_t size)
smu_sc->stats->c_bytes += size; smu_sc->stats->c_bytes += size;
smu_sc->stats->g_alloc++; smu_sc->stats->g_alloc++;
smu_sc->stats->g_bytes += size; smu_sc->stats->g_bytes += size;
if (smu_sc->smu_max != SIZE_MAX) if (smu_sc->smu_max != VRT_INTEGER_MAX)
smu_sc->stats->g_space -= size; smu_sc->stats->g_space -= size;
} }
Lck_Unlock(&smu_sc->smu_mtx); Lck_Unlock(&smu_sc->smu_mtx);
...@@ -194,7 +194,7 @@ smu_alloc(const struct stevedore *st, size_t size) ...@@ -194,7 +194,7 @@ smu_alloc(const struct stevedore *st, size_t size)
smu_sc->stats->c_bytes -= size; smu_sc->stats->c_bytes -= size;
smu_sc->stats->g_alloc--; smu_sc->stats->g_alloc--;
smu_sc->stats->g_bytes -= size; smu_sc->stats->g_bytes -= size;
if (smu_sc->smu_max != SIZE_MAX) if (smu_sc->smu_max != VRT_INTEGER_MAX)
smu_sc->stats->g_space += size; smu_sc->stats->g_space += size;
Lck_Unlock(&smu_sc->smu_mtx); Lck_Unlock(&smu_sc->smu_mtx);
return (NULL); return (NULL);
...@@ -224,7 +224,7 @@ smu_free(struct storage *s) ...@@ -224,7 +224,7 @@ smu_free(struct storage *s)
sc->stats->g_alloc--; sc->stats->g_alloc--;
sc->stats->g_bytes -= smu->sz; sc->stats->g_bytes -= smu->sz;
sc->stats->c_freed += smu->sz; sc->stats->c_freed += smu->sz;
if (sc->smu_max != SIZE_MAX) if (sc->smu_max != VRT_INTEGER_MAX)
sc->stats->g_space += smu->sz; sc->stats->g_space += smu->sz;
Lck_Unlock(&sc->smu_mtx); Lck_Unlock(&sc->smu_mtx);
...@@ -300,8 +300,8 @@ smu_init(struct stevedore *parent, int ac, char * const *av) ...@@ -300,8 +300,8 @@ smu_init(struct stevedore *parent, int ac, char * const *av)
ASSERT_MGT(); ASSERT_MGT();
ALLOC_OBJ(sc, SMU_SC_MAGIC); ALLOC_OBJ(sc, SMU_SC_MAGIC);
AN(sc); AN(sc);
sc->smu_max = SIZE_MAX; sc->smu_max = VRT_INTEGER_MAX;
assert(sc->smu_max == SIZE_MAX); assert(sc->smu_max == VRT_INTEGER_MAX);
parent->priv = sc; parent->priv = sc;
AZ(av[ac]); AZ(av[ac]);
...@@ -409,7 +409,7 @@ smu_open(struct stevedore *st) ...@@ -409,7 +409,7 @@ smu_open(struct stevedore *st)
CAST_OBJ_NOTNULL(smu_sc, st->priv, SMU_SC_MAGIC); CAST_OBJ_NOTNULL(smu_sc, st->priv, SMU_SC_MAGIC);
Lck_New(&smu_sc->smu_mtx, lck_smu); Lck_New(&smu_sc->smu_mtx, lck_smu);
smu_sc->stats = VSC_smu_New(NULL, NULL, st->ident); smu_sc->stats = VSC_smu_New(NULL, NULL, st->ident);
if (smu_sc->smu_max != SIZE_MAX) if (smu_sc->smu_max != VRT_INTEGER_MAX)
smu_sc->stats->g_space = smu_sc->smu_max; smu_sc->stats->g_space = smu_sc->smu_max;
smu_open_init(); smu_open_init();
......
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