drivers/md/dm-vdo/indexer/open-chapter.h

Source file repositories/reference/linux-study-clean/drivers/md/dm-vdo/indexer/open-chapter.h

File Facts

System
Linux kernel
Corpus path
drivers/md/dm-vdo/indexer/open-chapter.h
Extension
.h
Size
2634 bytes
Lines
80
Domain
Driver Families
Bucket
drivers/md
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

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[] __counted_by(slot_count);
};

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 */

Annotation

Implementation Notes