]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/spdk/ocf/src/utils/utils_cleaner.h
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / spdk / ocf / src / utils / utils_cleaner.h
index 57737798a243c43574291cca63d63839556bd840..80d19a9e22797dc4a969e8481643e606bd4c3cc2 100644 (file)
@@ -79,6 +79,18 @@ struct flush_container {
        struct ocf_mngt_cache_flush_context *context;
 };
 
+typedef void (*ocf_cleaner_refcnt_zero_cb_t)(void *priv);
+
+/**
+ * @brief Context for ocf_cleaner_refcnt_register_zero_cb
+ */
+struct ocf_cleaner_wait_context
+{
+       env_atomic waiting;
+       ocf_cleaner_refcnt_zero_cb_t cb;
+       void *priv;
+};
+
 /**
  * @brief Run cleaning procedure
  *
@@ -119,4 +131,30 @@ void ocf_cleaner_sort_sectors(struct flush_data *tbl, uint32_t num);
 void ocf_cleaner_sort_flush_containers(struct flush_container *fctbl,
                uint32_t num);
 
+/**
+ * @brief Disable incrementing of cleaner reference counters
+ *
+ * @param cache - Cache instance
+ */
+void ocf_cleaner_refcnt_freeze(ocf_cache_t cache);
+
+/**
+ * @brief Enable incrementing of cleaner reference counters
+ *
+ * @param cache - Cache instance
+ */
+void ocf_cleaner_refcnt_unfreeze(ocf_cache_t cache);
+
+/**
+ * @brief Register callback for cleaner reference counters dropping to 0
+ *
+ * @param cache - Cache instance
+ * @param ctx - Routine private context, allocated by caller to avoid ENOMEM
+ * @param cb - Caller callback
+ * @param priv - Caller callback private data
+ */
+void ocf_cleaner_refcnt_register_zero_cb(ocf_cache_t cache,
+               struct ocf_cleaner_wait_context *ctx,
+               ocf_cleaner_refcnt_zero_cb_t cb, void *priv);
+
 #endif /* UTILS_CLEANER_H_ */