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  open-chapter.h   Sprache: C

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


#ifndef UDS_OPEN_CHAPTER_H
#define UDS_OPEN_CHAPTER_H

#include "chapter-index.h"
#include "geometry.h"
#include "index.h"
#include "volume.h"

/*
 * The open chapter tracks the newest records in memory. Like the index as a whole, each open
 * chapter is divided into a number of independent zones which are interleaved when the chapter is
 * committed to the volume.
 */


enum {
 OPEN_CHAPTER_RECORD_NUMBER_BITS = 23,
};

struct open_chapter_zone_slot {
 /* If non-zero, the record number addressed by this hash slot */
 unsigned int record_number : OPEN_CHAPTER_RECORD_NUMBER_BITS;
 /* If true, the record at the index of this hash slot was deleted */
 bool deleted : 1;
} __packed;

struct open_chapter_zone {
 /* The maximum number of records that can be stored */
 unsigned int capacity;
 /* The number of records stored */
 unsigned int size;
 /* The number of deleted records */
 unsigned int deletions;
 /* Array of chunk records, 1-based */
 struct uds_volume_record *records;
 /* The number of slots in the hash table */
 unsigned int slot_count;
 /* The hash table slots, referencing virtual record numbers */
 struct open_chapter_zone_slot slots[];
};

int __must_check uds_make_open_chapter(const struct index_geometry *geometry,
           unsigned int zone_count,
           struct open_chapter_zone **open_chapter_ptr);

void uds_reset_open_chapter(struct open_chapter_zone *open_chapter);

void uds_search_open_chapter(struct open_chapter_zone *open_chapter,
        const struct uds_record_name *name,
        struct uds_record_data *metadata, bool *found);

int __must_check uds_put_open_chapter(struct open_chapter_zone *open_chapter,
          const struct uds_record_name *name,
          const struct uds_record_data *metadata);

void uds_remove_from_open_chapter(struct open_chapter_zone *open_chapter,
      const struct uds_record_name *name);

void uds_free_open_chapter(struct open_chapter_zone *open_chapter);

int __must_check uds_close_open_chapter(struct open_chapter_zone **chapter_zones,
     unsigned int zone_count, struct volume *volume,
     struct open_chapter_index *chapter_index,
     struct uds_volume_record *collated_records,
     u64 virtual_chapter_number);

int __must_check uds_save_open_chapter(struct uds_index *index,
           struct buffered_writer *writer);

int __must_check uds_load_open_chapter(struct uds_index *index,
           struct buffered_reader *reader);

u64 uds_compute_saved_open_chapter_size(struct index_geometry *geometry);

#endif /* UDS_OPEN_CHAPTER_H */

Messung V0.5
C=86 H=100 G=93

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© 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.