brintos

brintos / linux-shallow public Read only

0
0
Text · 2.4 KiB · 066648f Raw
86 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Copyright 2023 Red Hat4 */5 6#ifndef UDS_INDEX_SESSION_H7#define UDS_INDEX_SESSION_H8 9#include <linux/atomic.h>10#include <linux/cache.h>11 12#include "thread-utils.h"13 14#include "config.h"15#include "indexer.h"16 17/*18 * The index session mediates all interactions with a UDS index. Once the index session is created,19 * it can be used to open, close, suspend, or recreate an index. It implements the majority of the20 * functions in the top-level UDS API.21 *22 * If any deduplication request fails due to an internal error, the index is marked disabled. It23 * will not accept any further requests and can only be closed. Closing the index will clear the24 * disabled flag, and the index can then be reopened and recovered using the same index session.25 */26 27struct __aligned(L1_CACHE_BYTES) session_stats {28	/* Post requests that found an entry */29	u64 posts_found;30	/* Post requests found in the open chapter */31	u64 posts_found_open_chapter;32	/* Post requests found in the dense index */33	u64 posts_found_dense;34	/* Post requests found in the sparse index */35	u64 posts_found_sparse;36	/* Post requests that did not find an entry */37	u64 posts_not_found;38	/* Update requests that found an entry */39	u64 updates_found;40	/* Update requests that did not find an entry */41	u64 updates_not_found;42	/* Delete requests that found an entry */43	u64 deletions_found;44	/* Delete requests that did not find an entry */45	u64 deletions_not_found;46	/* Query requests that found an entry */47	u64 queries_found;48	/* Query requests that did not find an entry */49	u64 queries_not_found;50	/* Total number of requests */51	u64 requests;52};53 54enum index_suspend_status {55	/* An index load has started but the index is not ready for use. */56	INDEX_OPENING = 0,57	/* The index is able to handle requests. */58	INDEX_READY,59	/* The index is attempting to suspend a rebuild. */60	INDEX_SUSPENDING,61	/* An index rebuild has been suspended. */62	INDEX_SUSPENDED,63	/* An index rebuild is being stopped in order to shut down. */64	INDEX_FREEING,65};66 67struct index_load_context {68	struct mutex mutex;69	struct cond_var cond;70	enum index_suspend_status status;71};72 73struct uds_index_session {74	unsigned int state;75	struct uds_index *index;76	struct uds_request_queue *callback_queue;77	struct uds_parameters parameters;78	struct index_load_context load_context;79	struct mutex request_mutex;80	struct cond_var request_cond;81	int request_count;82	struct session_stats stats;83};84 85#endif /* UDS_INDEX_SESSION_H */86