Lines Matching refs:ticket

354 			  struct reserve_ticket *ticket)  in remove_ticket()  argument
356 if (!list_empty(&ticket->list)) { in remove_ticket()
357 list_del_init(&ticket->list); in remove_ticket()
358 ASSERT(space_info->reclaim_size >= ticket->bytes); in remove_ticket()
359 space_info->reclaim_size -= ticket->bytes; in remove_ticket()
378 struct reserve_ticket *ticket; in btrfs_try_granting_tickets() local
381 ticket = list_first_entry(head, struct reserve_ticket, list); in btrfs_try_granting_tickets()
384 if ((used + ticket->bytes <= space_info->total_bytes) || in btrfs_try_granting_tickets()
385 btrfs_can_overcommit(fs_info, space_info, ticket->bytes, in btrfs_try_granting_tickets()
389 ticket->bytes); in btrfs_try_granting_tickets()
390 remove_ticket(space_info, ticket); in btrfs_try_granting_tickets()
391 ticket->bytes = 0; in btrfs_try_granting_tickets()
393 wake_up(&ticket->wait); in btrfs_try_granting_tickets()
576 struct reserve_ticket *ticket = NULL; in may_commit_transaction() local
597 ticket = list_first_entry(&space_info->priority_tickets, in may_commit_transaction()
600 ticket = list_first_entry(&space_info->tickets, in may_commit_transaction()
602 if (ticket) in may_commit_transaction()
603 bytes_needed = ticket->bytes; in may_commit_transaction()
820 struct reserve_ticket *ticket) in steal_from_global_rsv() argument
830 if (global_rsv->reserved < min_bytes + ticket->bytes) { in steal_from_global_rsv()
834 global_rsv->reserved -= ticket->bytes; in steal_from_global_rsv()
835 remove_ticket(space_info, ticket); in steal_from_global_rsv()
836 ticket->bytes = 0; in steal_from_global_rsv()
837 wake_up(&ticket->wait); in steal_from_global_rsv()
864 struct reserve_ticket *ticket; in maybe_fail_all_tickets() local
875 ticket = list_first_entry(&space_info->tickets, in maybe_fail_all_tickets()
878 if (ticket->steal && in maybe_fail_all_tickets()
879 steal_from_global_rsv(fs_info, space_info, ticket)) in maybe_fail_all_tickets()
893 first_ticket_bytes = ticket->bytes; in maybe_fail_all_tickets()
894 else if (first_ticket_bytes > ticket->bytes) in maybe_fail_all_tickets()
899 ticket->bytes); in maybe_fail_all_tickets()
901 remove_ticket(space_info, ticket); in maybe_fail_all_tickets()
902 ticket->error = -ENOSPC; in maybe_fail_all_tickets()
903 wake_up(&ticket->wait); in maybe_fail_all_tickets()
1140 struct reserve_ticket *ticket, in priority_reclaim_metadata_space() argument
1160 if (ticket->bytes == 0) { in priority_reclaim_metadata_space()
1170 struct reserve_ticket *ticket) in priority_reclaim_data_space() argument
1175 if (ticket->bytes == 0) { in priority_reclaim_data_space()
1185 struct reserve_ticket *ticket) in wait_reserve_ticket() argument
1192 while (ticket->bytes > 0 && ticket->error == 0) { in wait_reserve_ticket()
1193 ret = prepare_to_wait_event(&ticket->wait, &wait, TASK_KILLABLE); in wait_reserve_ticket()
1203 remove_ticket(space_info, ticket); in wait_reserve_ticket()
1204 ticket->error = -EINTR; in wait_reserve_ticket()
1211 finish_wait(&ticket->wait, &wait); in wait_reserve_ticket()
1229 struct reserve_ticket *ticket, in handle_reserve_ticket() argument
1238 wait_reserve_ticket(fs_info, space_info, ticket); in handle_reserve_ticket()
1241 priority_reclaim_metadata_space(fs_info, space_info, ticket, in handle_reserve_ticket()
1246 priority_reclaim_metadata_space(fs_info, space_info, ticket, in handle_reserve_ticket()
1251 priority_reclaim_data_space(fs_info, space_info, ticket); in handle_reserve_ticket()
1259 ret = ticket->error; in handle_reserve_ticket()
1260 if (ticket->bytes || ticket->error) { in handle_reserve_ticket()
1268 if (!list_empty(&ticket->list)) { in handle_reserve_ticket()
1269 remove_ticket(space_info, ticket); in handle_reserve_ticket()
1277 ASSERT(list_empty(&ticket->list)); in handle_reserve_ticket()
1284 ASSERT(!(ticket->bytes == 0 && ticket->error)); in handle_reserve_ticket()
1317 struct reserve_ticket ticket; in __reserve_bytes() local
1365 ticket.bytes = orig_bytes; in __reserve_bytes()
1366 ticket.error = 0; in __reserve_bytes()
1367 space_info->reclaim_size += ticket.bytes; in __reserve_bytes()
1368 init_waitqueue_head(&ticket.wait); in __reserve_bytes()
1369 ticket.steal = (flush == BTRFS_RESERVE_FLUSH_ALL_STEAL); in __reserve_bytes()
1373 list_add_tail(&ticket.list, &space_info->tickets); in __reserve_bytes()
1383 list_add_tail(&ticket.list, in __reserve_bytes()
1406 return handle_reserve_ticket(fs_info, space_info, &ticket, flush); in __reserve_bytes()