Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/md/dm-vdo/indexer/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  index.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright 2023 Red Hat
 */


#ifndef UDS_INDEX_H
#define UDS_INDEX_H

#include "index-layout.h"
#include "index-session.h"
#include "open-chapter.h"
#include "volume.h"
#include "volume-index.h"

/*
 * The index is a high-level structure which represents the totality of the UDS index. It manages
 * the queues for incoming requests and dispatches them to the appropriate sub-components like the
 * volume or the volume index. It also manages administrative tasks such as saving and loading the
 * index.
 *
 * The index is divided into a number of independent zones and assigns each request to a zone based
 * on its name. Most sub-components are similarly divided into zones as well so that requests in
 * each zone usually operate without interference or coordination between zones.
 */


typedef void (*index_callback_fn)(struct uds_request *request);

struct index_zone {
 struct uds_index *index;
 struct open_chapter_zone *open_chapter;
 struct open_chapter_zone *writing_chapter;
 u64 oldest_virtual_chapter;
 u64 newest_virtual_chapter;
 unsigned int id;
};

struct uds_index {
 bool has_saved_open_chapter;
 bool need_to_save;
 struct index_load_context *load_context;
 struct index_layout *layout;
 struct volume_index *volume_index;
 struct volume *volume;
 unsigned int zone_count;
 struct index_zone **zones;

 u64 oldest_virtual_chapter;
 u64 newest_virtual_chapter;

 u64 last_save;
 u64 prev_save;
 struct chapter_writer *chapter_writer;

 index_callback_fn callback;
 struct uds_request_queue *triage_queue;
 struct uds_request_queue *zone_queues[];
};

enum request_stage {
 STAGE_TRIAGE,
 STAGE_INDEX,
 STAGE_MESSAGE,
};

int __must_check uds_make_index(struct uds_configuration *config,
    enum uds_open_index_type open_type,
    struct index_load_context *load_context,
    index_callback_fn callback, struct uds_index **new_index);

int __must_check uds_save_index(struct uds_index *index);

void uds_free_index(struct uds_index *index);

int __must_check uds_replace_index_storage(struct uds_index *index,
        struct block_device *bdev);

void uds_get_index_stats(struct uds_index *index, struct uds_index_stats *counters);

void uds_enqueue_request(struct uds_request *request, enum request_stage stage);

void uds_wait_for_idle_index(struct uds_index *index);

#endif /* UDS_INDEX_H */

Messung V0.5
C=96 H=100 G=97

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.