/* * The type of a PBN lock.
*/ enum pbn_lock_type {
VIO_READ_LOCK,
VIO_WRITE_LOCK,
VIO_BLOCK_MAP_WRITE_LOCK,
};
struct pbn_lock_implementation;
/* * A PBN lock.
*/ struct pbn_lock { /* The implementation of the lock */ conststruct pbn_lock_implementation *implementation;
/* The number of VIOs holding or sharing this lock */
data_vio_count_t holder_count; /* * The number of compressed block writers holding a share of this lock while they are * acquiring a reference to the PBN.
*/
u8 fragment_locks;
/* Whether the locked PBN has been provisionally referenced on behalf of the lock holder. */ bool has_provisional_reference;
/* * For read locks, the number of references that were known to be available on the locked * block at the time the lock was acquired.
*/
u8 increment_limit;
/* * For read locks, the number of data_vios that have tried to claim one of the available * increments during the lifetime of the lock. Each claim will first increment this * counter, so it can exceed the increment limit.
*/
atomic_t increments_claimed;
};
struct physical_zone { /* Which physical zone this is */
zone_count_t zone_number; /* The thread ID for this zone */
thread_id_t thread_id; /* In progress operations keyed by PBN */ struct int_map *pbn_operations; /* Pool of unused pbn_lock instances */ struct pbn_lock_pool *lock_pool; /* The block allocator for this zone */ struct block_allocator *allocator; /* The next zone from which to attempt an allocation */ struct physical_zone *next;
};
struct physical_zones { /* The number of zones */
zone_count_t zone_count; /* The physical zones themselves */ struct physical_zone zones[];
};
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.