| /linux/drivers/md/dm-vdo/ |
| H A D | data-vio.c | 179 struct data_vio data_vios[]; 244 static void initialize_lbn_lock(struct data_vio *data_vio, logical_block_number_t lbn) in initialize_lbn_lock() argument 246 struct vdo *vdo = vdo_from_data_vio(data_vio); in initialize_lbn_lock() 248 struct lbn_lock *lock = &data_vio->logical; in initialize_lbn_lock() 253 zone_number = vdo_compute_logical_zone(data_vio); in initialize_lbn_lock() 257 static void launch_locked_request(struct data_vio *data_vio) in launch_locked_request() argument 259 data_vio->logical.locked = true; in launch_locked_request() 260 if (data_vio->write) { in launch_locked_request() 261 struct vdo *vdo = vdo_from_data_vio(data_vio); in launch_locked_request() 264 continue_data_vio_with_error(data_vio, VDO_READ_ONLY); in launch_locked_request() [all …]
|
| H A D | dump.c | 155 struct data_vio *data_vio; in dump_vio_waiters() local 160 data_vio = vdo_waiter_as_data_vio(first); in dump_vio_waiters() 163 wait_on, data_vio, data_vio->allocation.pbn, data_vio->logical.lbn, in dump_vio_waiters() 164 data_vio->duplicate.pbn, get_data_vio_operation_name(data_vio)); in dump_vio_waiters() 167 data_vio = vdo_waiter_as_data_vio(waiter); in dump_vio_waiters() 169 data_vio, data_vio->allocation.pbn, data_vio->logical.lbn, in dump_vio_waiters() 170 data_vio->duplicate.pbn, in dump_vio_waiters() 171 get_data_vio_operation_name(data_vio)); in dump_vio_waiters() 189 static void encode_vio_dump_flags(struct data_vio *data_vio, char buffer[8]) in encode_vio_dump_flags() argument 193 if (data_vio->vio.completion.result != VDO_SUCCESS) in encode_vio_dump_flags() [all …]
|
| H A D | packer.c | 214 static inline struct packer *get_packer_from_data_vio(struct data_vio *data_vio) in get_packer_from_data_vio() argument 216 return vdo_from_data_vio(data_vio)->packer; in get_packer_from_data_vio() 240 static void abort_packing(struct data_vio *data_vio) in abort_packing() argument 242 struct packer *packer = get_packer_from_data_vio(data_vio); in abort_packing() 247 write_data_vio(data_vio); in abort_packing() 256 static void release_compressed_write_waiter(struct data_vio *data_vio, in release_compressed_write_waiter() argument 259 data_vio->new_mapped = (struct zoned_pbn) { in release_compressed_write_waiter() 262 .state = data_vio->compression.slot + VDO_MAPPING_STATE_COMPRESSED_BASE, in release_compressed_write_waiter() 265 vdo_share_compressed_write_lock(data_vio, allocation->lock); in release_compressed_write_waiter() 266 update_metadata_for_data_vio_write(data_vio, allocation->lock); in release_compressed_write_waiter() [all …]
|
| H A D | dedupe.c | 262 struct data_vio *agent; 358 struct pbn_lock *vdo_get_duplicate_lock(struct data_vio *data_vio) in vdo_get_duplicate_lock() argument 360 if (data_vio->hash_lock == NULL) in vdo_get_duplicate_lock() 363 return data_vio->hash_lock->duplicate_lock; in vdo_get_duplicate_lock() 396 static void assert_hash_lock_agent(struct data_vio *data_vio, const char *where) in assert_hash_lock_agent() argument 399 assert_data_vio_in_hash_zone(data_vio); in assert_hash_lock_agent() 400 VDO_ASSERT_LOG_ONLY(data_vio == data_vio->hash_lock->agent, in assert_hash_lock_agent() 424 static inline struct data_vio *dequeue_lock_waiter(struct hash_lock *lock) in dequeue_lock_waiter() 436 static void set_hash_lock(struct data_vio *data_vio, struct hash_lock *new_lock) in set_hash_lock() argument 438 struct hash_lock *old_lock = data_vio->hash_lock; in set_hash_lock() [all …]
|
| H A D | block-map.c | 1713 static void release_page_lock(struct data_vio *data_vio, char *what) in release_page_lock() argument 1717 struct tree_lock *lock = &data_vio->tree_lock; in release_page_lock() 1723 zone = data_vio->logical.zone->block_map_zone; in release_page_lock() 1731 static void finish_lookup(struct data_vio *data_vio, int result) in finish_lookup() argument 1733 data_vio->tree_lock.height = 0; in finish_lookup() 1735 --data_vio->logical.zone->block_map_zone->active_lookups; in finish_lookup() 1737 set_data_vio_logical_callback(data_vio, continue_data_vio_with_block_map_slot); in finish_lookup() 1738 data_vio->vio.completion.error_handler = handle_data_vio_error; in finish_lookup() 1739 continue_data_vio_with_error(data_vio, result); in finish_lookup() 1744 struct data_vio *data_vio = vdo_waiter_as_data_vio(waiter); in abort_lookup_for_waiter() local [all …]
|
| H A D | logical-zone.c | 215 struct data_vio *data_vio = in update_oldest_active_generation() local 216 list_first_entry_or_null(&zone->write_vios, struct data_vio, in update_oldest_active_generation() 219 (data_vio == NULL) ? zone->flush_generation : data_vio->flush_generation; in update_oldest_active_generation() 253 void vdo_acquire_flush_generation_lock(struct data_vio *data_vio) in vdo_acquire_flush_generation_lock() argument 255 struct logical_zone *zone = data_vio->logical.zone; in vdo_acquire_flush_generation_lock() 260 data_vio->flush_generation = zone->flush_generation; in vdo_acquire_flush_generation_lock() 261 list_add_tail(&data_vio->write_entry, &zone->write_vios); in vdo_acquire_flush_generation_lock() 313 void vdo_release_flush_generation_lock(struct data_vio *data_vio) in vdo_release_flush_generation_lock() argument 315 struct logical_zone *zone = data_vio->logical.zone; in vdo_release_flush_generation_lock() 319 if (!data_vio_has_flush_generation_lock(data_vio)) in vdo_release_flush_generation_lock() [all …]
|
| H A D | dedupe.h | 26 struct data_vio *requestor; 72 struct pbn_lock * __must_check vdo_get_duplicate_lock(struct data_vio *data_vio); 76 void vdo_release_hash_lock(struct data_vio *data_vio); 77 void vdo_clean_failed_hash_lock(struct data_vio *data_vio); 78 void vdo_share_compressed_write_lock(struct data_vio *data_vio,
|
| H A D | physical-zone.c | 523 struct data_vio *data_vio = vdo_waiter_as_data_vio(waiter); in retry_allocation() local 526 data_vio->allocation.wait_for_clean_slab = false; in retry_allocation() 527 data_vio->allocation.first_allocation_zone = data_vio->allocation.zone->zone_number; in retry_allocation() 528 continue_data_vio(data_vio); in retry_allocation() 540 static bool continue_allocating(struct data_vio *data_vio) in continue_allocating() argument 542 struct allocation *allocation = &data_vio->allocation; in continue_allocating() 544 struct vdo_completion *completion = &data_vio->vio.completion; in continue_allocating() 561 data_vio->waiter.callback = retry_allocation; in continue_allocating() 563 &data_vio->waiter); in continue_allocating() 589 bool vdo_allocate_block_in_zone(struct data_vio *data_vio) in vdo_allocate_block_in_zone() argument [all …]
|
| H A D | block-map.h | 323 void vdo_find_block_map_slot(struct data_vio *data_vio); 358 zone_count_t vdo_compute_logical_zone(struct data_vio *data_vio); 363 void vdo_update_block_map_page(struct block_map_page *page, struct data_vio *data_vio, 368 void vdo_get_mapped_block(struct data_vio *data_vio); 370 void vdo_put_mapped_block(struct data_vio *data_vio);
|
| H A D | recovery-journal.c | 1067 static void update_usages(struct recovery_journal *journal, struct data_vio *data_vio) in update_usages() argument 1069 if (data_vio->increment_updater.operation == VDO_JOURNAL_BLOCK_MAP_REMAPPING) { in update_usages() 1074 if (data_vio->new_mapped.state != VDO_MAPPING_STATE_UNMAPPED) in update_usages() 1077 if (data_vio->mapped.state != VDO_MAPPING_STATE_UNMAPPED) in update_usages() 1090 struct data_vio *data_vio = vdo_waiter_as_data_vio(waiter); in assign_entry() local 1095 data_vio->recovery_journal_point = (struct journal_point) { in assign_entry() 1100 update_usages(journal, data_vio); in assign_entry() 1106 vdo_waitq_enqueue_waiter(&block->entry_waiters, &data_vio->waiter); in assign_entry() 1179 struct data_vio *data_vio = vdo_waiter_as_data_vio(waiter); in continue_committed_waiter() local 1185 &data_vio->recovery_journal_point), in continue_committed_waiter() [all …]
|
| H A D | logical-zone.h | 81 void vdo_acquire_flush_generation_lock(struct data_vio *data_vio); 83 void vdo_release_flush_generation_lock(struct data_vio *data_vio);
|
| H A D | packer.h | 71 struct data_vio *incoming[]; 108 void vdo_attempt_packing(struct data_vio *data_vio);
|
| H A D | io-submitter.h | 26 void vdo_submit_data_vio(struct data_vio *data_vio);
|
| H A D | physical-zone.h | 107 bool __must_check vdo_allocate_block_in_zone(struct data_vio *data_vio);
|
| H A D | io-submitter.c | 316 void vdo_submit_data_vio(struct data_vio *data_vio) in vdo_submit_data_vio() argument 318 if (try_bio_map_merge(&data_vio->vio)) in vdo_submit_data_vio() 321 launch_data_vio_bio_zone_callback(data_vio, submit_data_vio); in vdo_submit_data_vio()
|
| H A D | recovery-journal.h | 286 struct data_vio *data_vio);
|
| H A D | types.h | 332 struct data_vio;
|
| H A D | slab-depot.c | 1696 struct data_vio *data_vio = data_vio_from_reference_updater(updater); in add_entry_from_waiter() local 1703 sequence_number_t recovery_block = data_vio->recovery_journal_point.sequence_number; in add_entry_from_waiter() 1725 expand_journal_point(data_vio->recovery_journal_point, in add_entry_from_waiter() 1743 continue_data_vio_with_error(data_vio, result); in add_entry_from_waiter() 1745 vdo_continue_completion(&data_vio->decrement_completion, result); in add_entry_from_waiter() 3154 struct data_vio *data_vio = data_vio_from_reference_updater(updater); in abort_waiter() local 3157 continue_data_vio_with_error(data_vio, VDO_READ_ONLY); in abort_waiter() 3161 vdo_continue_completion(&data_vio->decrement_completion, VDO_READ_ONLY); in abort_waiter()
|