brintos

brintos / linux-shallow public Read only

0
0
Text · 3.5 KiB · 08507dc Raw
125 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Copyright 2023 Red Hat4 */5 6#ifndef UDS_CONFIG_H7#define UDS_CONFIG_H8 9#include "geometry.h"10#include "indexer.h"11#include "io-factory.h"12 13/*14 * The uds_configuration records a variety of parameters used to configure a new UDS index. Some15 * parameters are provided by the client, while others are fixed or derived from user-supplied16 * values. It is created when an index is created, and it is recorded in the index metadata.17 */18 19enum {20	DEFAULT_VOLUME_INDEX_MEAN_DELTA = 4096,21	DEFAULT_CACHE_CHAPTERS = 7,22	DEFAULT_SPARSE_SAMPLE_RATE = 32,23	MAX_ZONES = 16,24};25 26/* A set of configuration parameters for the indexer. */27struct uds_configuration {28	/* Storage device for the index */29	struct block_device *bdev;30 31	/* The maximum allowable size of the index */32	size_t size;33 34	/* The offset where the index should start */35	off_t offset;36 37	/* Parameters for the volume */38 39	/* The volume layout */40	struct index_geometry *geometry;41 42	/* Index owner's nonce */43	u64 nonce;44 45	/* The number of threads used to process index requests */46	unsigned int zone_count;47 48	/* The number of threads used to read volume pages */49	unsigned int read_threads;50 51	/* Size of the page cache and sparse chapter index cache in chapters */52	u32 cache_chapters;53 54	/* Parameters for the volume index */55 56	/* The mean delta for the volume index */57	u32 volume_index_mean_delta;58 59	/* Sampling rate for sparse indexing */60	u32 sparse_sample_rate;61};62 63/* On-disk structure of data for a version 8.02 index. */64struct uds_configuration_8_02 {65	/* Smaller (16), Small (64) or large (256) indices */66	u32 record_pages_per_chapter;67	/* Total number of chapters per volume */68	u32 chapters_per_volume;69	/* Number of sparse chapters per volume */70	u32 sparse_chapters_per_volume;71	/* Size of the page cache, in chapters */72	u32 cache_chapters;73	/* Unused field */74	u32 unused;75	/* The volume index mean delta to use */76	u32 volume_index_mean_delta;77	/* Size of a page, used for both record pages and index pages */78	u32 bytes_per_page;79	/* Sampling rate for sparse indexing */80	u32 sparse_sample_rate;81	/* Index owner's nonce */82	u64 nonce;83	/* Virtual chapter remapped from physical chapter 0 */84	u64 remapped_virtual;85	/* New physical chapter which remapped chapter was moved to */86	u64 remapped_physical;87} __packed;88 89/* On-disk structure of data for a version 6.02 index. */90struct uds_configuration_6_02 {91	/* Smaller (16), Small (64) or large (256) indices */92	u32 record_pages_per_chapter;93	/* Total number of chapters per volume */94	u32 chapters_per_volume;95	/* Number of sparse chapters per volume */96	u32 sparse_chapters_per_volume;97	/* Size of the page cache, in chapters */98	u32 cache_chapters;99	/* Unused field */100	u32 unused;101	/* The volume index mean delta to use */102	u32 volume_index_mean_delta;103	/* Size of a page, used for both record pages and index pages */104	u32 bytes_per_page;105	/* Sampling rate for sparse indexing */106	u32 sparse_sample_rate;107	/* Index owner's nonce */108	u64 nonce;109} __packed;110 111int __must_check uds_make_configuration(const struct uds_parameters *params,112					struct uds_configuration **config_ptr);113 114void uds_free_configuration(struct uds_configuration *config);115 116int __must_check uds_validate_config_contents(struct buffered_reader *reader,117					      struct uds_configuration *config);118 119int __must_check uds_write_config_contents(struct buffered_writer *writer,120					   struct uds_configuration *config, u32 version);121 122void uds_log_configuration(struct uds_configuration *config);123 124#endif /* UDS_CONFIG_H */125