Lines Matching defs:allocation

477  * @allocation: The struct allocation of the data_vio attempting to allocate.
483 static int allocate_and_lock_block(struct allocation *allocation)
488 VDO_ASSERT_LOG_ONLY(allocation->lock == NULL,
491 result = vdo_allocate_block(allocation->zone->allocator, &allocation->pbn);
495 result = vdo_attempt_physical_zone_pbn_lock(allocation->zone, allocation->pbn,
496 allocation->write_lock_type, &lock);
504 (unsigned long long) allocation->pbn,
510 allocation->lock = lock;
524 /* Now that some slab has scrubbed, restart the allocation process. */
525 data_vio->allocation.wait_for_clean_slab = false;
526 data_vio->allocation.first_allocation_zone = data_vio->allocation.zone->zone_number;
531 * continue_allocating() - Continue searching for an allocation by enqueuing to wait for scrubbing
533 * @data_vio: The data_vio attempting to get an allocation.
537 * Return: true if the allocation process has continued in another zone.
541 struct allocation *allocation = &data_vio->allocation;
542 struct physical_zone *zone = allocation->zone;
545 bool was_waiting = allocation->wait_for_clean_slab;
546 bool tried_all = (allocation->first_allocation_zone == zone->next->zone_number);
555 allocation->wait_for_clean_slab = true;
556 allocation->first_allocation_zone = zone->zone_number;
559 if (allocation->wait_for_clean_slab) {
574 allocation->zone = zone->next;
575 completion->callback_thread_id = allocation->zone->thread_id;
583 * @data_vio: The data_vio needing an allocation.
590 int result = allocate_and_lock_block(&data_vio->allocation);