Lines Matching full:allocation

477  * @allocation: The struct allocation of the data_vio attempting to allocate.
483 static int allocate_and_lock_block(struct allocation *allocation) in allocate_and_lock_block() argument
488 VDO_ASSERT_LOG_ONLY(allocation->lock == NULL, in allocate_and_lock_block()
491 result = vdo_allocate_block(allocation->zone->allocator, &allocation->pbn); in allocate_and_lock_block()
495 result = vdo_attempt_physical_zone_pbn_lock(allocation->zone, allocation->pbn, in allocate_and_lock_block()
496 allocation->write_lock_type, &lock); in allocate_and_lock_block()
504 (unsigned long long) allocation->pbn, in allocate_and_lock_block()
510 allocation->lock = lock; in allocate_and_lock_block()
524 /* Now that some slab has scrubbed, restart the allocation process. */ in retry_allocation()
525 data_vio->allocation.wait_for_clean_slab = false; in retry_allocation()
526 data_vio->allocation.first_allocation_zone = data_vio->allocation.zone->zone_number; in retry_allocation()
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; in continue_allocating() local
542 struct physical_zone *zone = allocation->zone; in continue_allocating()
545 bool was_waiting = allocation->wait_for_clean_slab; in continue_allocating()
546 bool tried_all = (allocation->first_allocation_zone == zone->next->zone_number); in continue_allocating()
555 allocation->wait_for_clean_slab = true; in continue_allocating()
556 allocation->first_allocation_zone = zone->zone_number; in continue_allocating()
559 if (allocation->wait_for_clean_slab) { in continue_allocating()
574 allocation->zone = zone->next; in continue_allocating()
575 completion->callback_thread_id = allocation->zone->thread_id; in continue_allocating()
583 * @data_vio: The data_vio needing an allocation.
590 int result = allocate_and_lock_block(&data_vio->allocation); in vdo_allocate_block_in_zone()