Home
last modified time | relevance | path

Searched refs:data_vio (Results 1 – 18 of 18) sorted by relevance

/linux/drivers/md/dm-vdo/
H A Ddata-vio.c179 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 Ddump.c155 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 Dpacker.c214 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 Ddedupe.c262 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 Dblock-map.c1713 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 Dlogical-zone.c215 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 Ddedupe.h26 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 Dphysical-zone.c523 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 Dblock-map.h323 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 Drecovery-journal.c1067 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 Dlogical-zone.h81 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 Dpacker.h71 struct data_vio *incoming[];
108 void vdo_attempt_packing(struct data_vio *data_vio);
H A Dio-submitter.h26 void vdo_submit_data_vio(struct data_vio *data_vio);
H A Dphysical-zone.h107 bool __must_check vdo_allocate_block_in_zone(struct data_vio *data_vio);
H A Dio-submitter.c316 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 Drecovery-journal.h286 struct data_vio *data_vio);
H A Dtypes.h332 struct data_vio;
H A Dslab-depot.c1696 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()