diff options
| author | Laurent Bercot <ska-skaware@skarnet.org> | 2024-07-24 18:54:07 +0000 |
|---|---|---|
| committer | Laurent Bercot <ska@appnovation.com> | 2024-07-24 18:54:07 +0000 |
| commit | 8c9b0194063411882d3bbcec80d5e5c861d37544 (patch) | |
| tree | 92d6ed8a8d5e8b35958bd45ebc3aa45b5105db9a /src/libdcache | |
| parent | 8d5a23bf7fe6bda50bab13f12725f3b7c8976d29 (diff) | |
| download | shibari-8c9b0194063411882d3bbcec80d5e5c861d37544.tar.gz | |
Add stuff to shibari-cache
Signed-off-by: Laurent Bercot <ska@appnovation.com>
Diffstat (limited to 'src/libdcache')
| -rw-r--r-- | src/libdcache/dcache_add.c | 8 | ||||
| -rw-r--r-- | src/libdcache/dcache_init.c | 1 | ||||
| -rw-r--r-- | src/libdcache/dcache_load.c | 12 |
3 files changed, 11 insertions, 10 deletions
diff --git a/src/libdcache/dcache_add.c b/src/libdcache/dcache_add.c index 7260726..7e1d871 100644 --- a/src/libdcache/dcache_add.c +++ b/src/libdcache/dcache_add.c @@ -75,11 +75,11 @@ static inline int dcache_add_unbounded (dcache_t *z, char const *key, uint16_t k return 1 ; } -int dcache_add (dcache_t *z, uint64_t max, char const *key, uint16_t keylen, char const *data, uint16_t datalen, tain const *expire, tain const *stamp) +int dcache_add (dcache_t *z, char const *key, uint16_t keylen, char const *data, uint16_t datalen, tain const *expire, tain const *stamp) { uint64_t size = DCACHE_NODE_OVERHEAD + keylen + datalen ; - if (size > max) return (errno = EINVAL, 0) ; - if (z->size > max - size) dcache_clean_expired(z, stamp) ; - if (z->size > max - size) dcache_gc_by_entry(z, max - size) ; + if (size > z->max) return (errno = EINVAL, 0) ; + if (z->size > z->max - size) dcache_clean_expired(z, stamp) ; + if (z->size > z->max - size) dcache_gc_by_entry(z, z->max - size) ; return dcache_add_unbounded(z, key, keylen, data, datalen, expire, stamp) ; } diff --git a/src/libdcache/dcache_init.c b/src/libdcache/dcache_init.c index d42ec62..91c529e 100644 --- a/src/libdcache/dcache_init.c +++ b/src/libdcache/dcache_init.c @@ -50,6 +50,7 @@ void dcache_init (dcache_t *z, uint64_t max) avltree_init(&z->by_key, max >> 9, 3, 8, &key_dtok, &key_cmp, &z->storage) ; avltree_init(&z->by_entry, max >> 9, 3, 8, &entry_dtok, &tain_cmp, &z->storage) ; avltree_init(&z->by_expire, max >> 9, 3, 8, &expire_dtok, &tain_cmp, &z->storage) ; + z->max = max ; z->size = 0 ; z->motion = 0 ; } diff --git a/src/libdcache/dcache_load.c b/src/libdcache/dcache_load.c index d1b9274..176a722 100644 --- a/src/libdcache/dcache_load.c +++ b/src/libdcache/dcache_load.c @@ -14,7 +14,7 @@ #include <skalibs/posixishard.h> -static inline int dcache_load_node (dcache_t *z, uint64_t max, buffer *b) +static inline int dcache_load_node (dcache_t *z, buffer *b) { tain entry = { .nano = 0 } ; tain expire = { .nano = 0 } ; @@ -35,12 +35,12 @@ static inline int dcache_load_node (dcache_t *z, uint64_t max, buffer *b) if (!r) return (errno = EPIPE, -1) ; if (r < len) return -1 ; if (blob[len]) return (errno = EPROTO, -1) ; - if (!dcache_add(z, max, blob, keylen, blob + keylen, datalen, &expire, &entry)) return -1 ; + if (!dcache_add(z, blob, keylen, blob + keylen, datalen, &expire, &entry)) return -1 ; } return 1 ; } -static inline int dcache_load_from_buffer (dcache_t *z, uint64_t max, buffer *b) +static inline int dcache_load_from_buffer (dcache_t *z, buffer *b) { { char banner[sizeof(DCACHE_MAGIC) - 1] ; @@ -55,7 +55,7 @@ static inline int dcache_load_from_buffer (dcache_t *z, uint64_t max, buffer *b) } for (;;) { - int r = dcache_load_node(z, max, b) ; + int r = dcache_load_node(z, b) ; if (r < 0) return 0 ; if (!r) break ; } @@ -64,14 +64,14 @@ static inline int dcache_load_from_buffer (dcache_t *z, uint64_t max, buffer *b) #define N 8192 -int dcache_load (dcache_t *z, uint64_t max, char const *file) +int dcache_load (dcache_t *z, char const *file) { char buf[N] ; buffer b ; int fd = open_readb(file) ; if (fd == -1) return 0 ; buffer_init(&b, &buffer_read, fd, buf, N) ; - if (!dcache_load_from_buffer(z, max, &b)) goto err ; + if (!dcache_load_from_buffer(z, &b)) goto err ; fd_close(fd) ; return 1 ; |
