struct volume_index_stats { /* Nanoseconds spent rebalancing */
ktime_t rebalance_time; /* Number of memory rebalances */
u32 rebalance_count; /* The number of records in the index */
u64 record_count; /* The number of collision records */
u64 collision_count; /* The number of records removed */
u64 discard_count; /* The number of UDS_OVERFLOWs detected */
u64 overflow_count; /* The number of delta lists */
u32 delta_lists; /* Number of early flushes */
u64 early_flushes;
};
struct volume_sub_index { /* The delta index */ struct delta_index delta_index; /* The first chapter to be flushed in each zone */
u64 *flush_chapters; /* The zones */ struct volume_sub_index_zone *zones; /* The volume nonce */
u64 volume_nonce; /* Expected size of a chapter (per zone) */
u64 chapter_zone_bits; /* Maximum size of the index (per zone) */
u64 max_zone_bits; /* The number of bits in address mask */
u8 address_bits; /* Mask to get address within delta list */
u32 address_mask; /* The number of bits in chapter number */
u8 chapter_bits; /* The largest storable chapter number */
u32 chapter_mask; /* The number of chapters used */
u32 chapter_count; /* The number of delta lists */
u32 list_count; /* The number of zones */ unsignedint zone_count; /* The amount of memory allocated */
u64 memory_size;
};
struct volume_index_zone { /* Protects the sampled index in this zone */ struct mutex hook_mutex;
} __aligned(L1_CACHE_BYTES);
/* Chapter where the record info is found */
u64 virtual_chapter; /* This record is a collision */ bool is_collision; /* This record is the requested record */ bool is_found;
/* Private fields */
/* Zone that contains this name */ unsignedint zone_number; /* The volume index */ struct volume_sub_index *sub_index; /* Mutex for accessing this delta index entry in the hook index */ struct mutex *mutex; /* The record name to which this record refers */ conststruct uds_record_name *name; /* The delta index entry for this record */ struct delta_index_entry delta_entry;
};
int __must_check uds_make_volume_index(conststruct uds_configuration *config,
u64 volume_nonce, struct volume_index **volume_index);
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.