Lines Matching defs:ctl
651 * @ctl: pointer for the %struct vmballoon_ctl, which defines the operation.
655 * @ctl.pages and updates @ctl.n_pages to reflect the number of pages.
660 struct vmballoon_ctl *ctl,
672 if (!list_empty(&ctl->prealloc_pages)) {
673 page = list_first_entry(&ctl->prealloc_pages,
677 if (ctl->page_size == VMW_BALLOON_2M_PAGE)
684 ctl->page_size);
689 list_add(&page->lru, &ctl->pages);
695 ctl->page_size);
699 ctl->n_pages = i;
701 return req_n_pages == ctl->n_pages ? 0 : -ENOMEM;
838 * @ctl: pointer for the %struct vmballoon_ctl, which defines the operation.
841 * according to @ctl). If the host rejects the page put it on the
842 * @ctl refuse list. These refused page are then released when moving to the
853 static int vmballoon_lock(struct vmballoon *b, struct vmballoon_ctl *ctl)
859 num_pages = ctl->n_pages;
867 list_for_each_entry(page, &ctl->pages, lru)
870 batch_status = vmballoon_lock_op(b, ctl->n_pages, ctl->page_size,
871 ctl->op);
875 * @ctl->n_pages we are saving the original value in @num_pages and
891 if (!vmballoon_handle_one_result(b, page, ctl->page_size,
899 list_move(&page->lru, &ctl->refused_pages);
900 ctl->n_pages--;
901 ctl->n_refused_pages++;
939 struct vmballoon_ctl *ctl)
942 ctl->page_size);
944 vmballoon_release_page_list(&ctl->refused_pages, &ctl->n_refused_pages,
945 ctl->page_size);
1078 * @ctl: pointer for the %struct vmballoon_ctl, which defines the operation.
1080 static void vmballoon_split_refused_pages(struct vmballoon_ctl *ctl)
1085 order = vmballoon_page_order(ctl->page_size);
1087 list_for_each_entry_safe(page, tmp, &ctl->refused_pages, lru) {
1091 list_add(&page[i].lru, &ctl->prealloc_pages);
1093 ctl->n_refused_pages = 0;
1104 struct vmballoon_ctl ctl = {
1105 .pages = LIST_HEAD_INIT(ctl.pages),
1106 .refused_pages = LIST_HEAD_INIT(ctl.refused_pages),
1107 .prealloc_pages = LIST_HEAD_INIT(ctl.prealloc_pages),
1116 VM_BUG_ON(!list_empty(&ctl.pages));
1117 VM_BUG_ON(ctl.n_pages != 0);
1119 page_in_frames = vmballoon_page_in_frames(ctl.page_size);
1126 alloc_error = vmballoon_alloc_page_list(b, &ctl,
1130 lock_error = vmballoon_lock(b, &ctl);
1140 atomic64_add(ctl.n_pages * page_in_frames, &b->size);
1142 vmballoon_enqueue_page_list(b, &ctl.pages, &ctl.n_pages,
1143 ctl.page_size);
1150 ctl.n_refused_pages >= VMW_BALLOON_MAX_REFUSED) {
1151 if (ctl.page_size == VMW_BALLOON_4K_PAGE)
1158 vmballoon_split_refused_pages(&ctl);
1159 ctl.page_size--;
1170 if (ctl.n_refused_pages != 0)
1171 vmballoon_release_refused_pages(b, &ctl);
1173 vmballoon_release_page_list(&ctl.prealloc_pages, NULL, ctl.page_size);
1193 struct vmballoon_ctl ctl = {
1194 .pages = LIST_HEAD_INIT(ctl.pages),
1195 .refused_pages = LIST_HEAD_INIT(ctl.refused_pages),
1207 page_in_frames = vmballoon_page_in_frames(ctl.page_size);
1209 VM_BUG_ON(!list_empty(&ctl.pages));
1210 VM_BUG_ON(ctl.n_pages);
1211 VM_BUG_ON(!list_empty(&ctl.refused_pages));
1212 VM_BUG_ON(ctl.n_refused_pages);
1235 vmballoon_dequeue_page_list(b, &ctl.pages, &ctl.n_pages,
1236 ctl.page_size, to_deflate_pages);
1242 tried_frames += ctl.n_pages * page_in_frames;
1252 vmballoon_lock(b, &ctl);
1260 deflated_all = (ctl.n_pages == to_deflate_pages);
1263 n_unlocked_frames = ctl.n_pages * page_in_frames;
1268 ctl.page_size, ctl.n_pages);
1271 vmballoon_release_page_list(&ctl.pages, &ctl.n_pages,
1272 ctl.page_size);
1275 vmballoon_enqueue_page_list(b, &ctl.refused_pages,
1276 &ctl.n_refused_pages,
1277 ctl.page_size);
1281 if (ctl.page_size == b->max_page_size)
1283 ctl.page_size++;