Fix: common: index_allocator_get_index_count() returns size
authorFrancis Deslauriers <francis.deslauriers@efficios.com>
Fri, 26 Mar 2021 18:41:01 +0000 (14:41 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 26 Mar 2021 22:52:48 +0000 (18:52 -0400)
The lttng_index_allocator_get_index_count() should return the number of
allocated indexes. Right now it returns the maximum number of indexes.

I witnessed the following message when running testing the event
notifier error counter feature:
  Warning: Destroying index allocator with 4096 slot indexes still in use

Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: Ibbcb3f128553df0a4118901ef85ae6fe17ebcecf

src/common/index-allocator.c

index 3de09a8310ebb26e5e5b2c90056234436573f05b..885015d77a3183ea1478b96a00bef87a2895faba 100644 (file)
@@ -20,6 +20,7 @@ struct lttng_index_allocator {
        struct cds_list_head unused_list;
        uint64_t size;
        uint64_t position;
        struct cds_list_head unused_list;
        uint64_t size;
        uint64_t position;
+       uint64_t nb_allocated_indexes;
 };
 
 struct lttng_index {
 };
 
 struct lttng_index {
@@ -40,6 +41,7 @@ struct lttng_index_allocator *lttng_index_allocator_create(
 
        allocator->size = index_count;
        allocator->position = 0;
 
        allocator->size = index_count;
        allocator->position = 0;
+       allocator->nb_allocated_indexes = 0;
 
        CDS_INIT_LIST_HEAD(&allocator->unused_list);
 
 
        CDS_INIT_LIST_HEAD(&allocator->unused_list);
 
@@ -49,7 +51,7 @@ end:
 
 uint64_t lttng_index_allocator_get_index_count(struct lttng_index_allocator *allocator)
 {
 
 uint64_t lttng_index_allocator_get_index_count(struct lttng_index_allocator *allocator)
 {
-       return allocator->size;
+       return allocator->nb_allocated_indexes;
 }
 
 enum lttng_index_allocator_status lttng_index_allocator_alloc(
 }
 
 enum lttng_index_allocator_status lttng_index_allocator_alloc(
@@ -77,6 +79,7 @@ enum lttng_index_allocator_status lttng_index_allocator_alloc(
                free(index);
        }
 
                free(index);
        }
 
+       allocator->nb_allocated_indexes++;
 end:
        return status;
 }
 end:
        return status;
 }
@@ -99,6 +102,7 @@ enum lttng_index_allocator_status lttng_index_allocator_release(
 
        index->index = idx;
        cds_list_add_tail(&index->head, &allocator->unused_list);
 
        index->index = idx;
        cds_list_add_tail(&index->head, &allocator->unused_list);
+       allocator->nb_allocated_indexes--;
 
 end:
        return status;
 
 end:
        return status;
This page took 0.025498 seconds and 4 git commands to generate.