Lines Matching refs:new_zhdr
600 struct z3fold_header *new_zhdr = NULL;
632 new_zhdr = __z3fold_alloc(pool, sz, false);
633 if (!new_zhdr)
636 if (WARN_ON(new_zhdr == zhdr))
639 new_bud = get_free_buddy(new_zhdr, chunks);
640 q = new_zhdr;
643 new_zhdr->first_chunks = chunks;
647 new_zhdr->middle_chunks = chunks;
648 new_zhdr->start_middle =
649 new_zhdr->first_chunks + ZHDR_CHUNKS;
650 q += new_zhdr->start_middle << CHUNK_SHIFT;
653 new_zhdr->last_chunks = chunks;
654 q += PAGE_SIZE - (new_zhdr->last_chunks << CHUNK_SHIFT);
659 new_zhdr->foreign_handles++;
662 *(unsigned long *)old_handle = (unsigned long)new_zhdr +
663 __idx(new_zhdr, new_bud);
666 (new_zhdr->last_chunks << BUDDY_SHIFT);
668 add_to_unbuddied(pool, new_zhdr);
669 z3fold_page_unlock(new_zhdr);
674 return new_zhdr;
677 if (new_zhdr && !put_z3fold_locked(new_zhdr)) {
678 add_to_unbuddied(pool, new_zhdr);
679 z3fold_page_unlock(new_zhdr);
1288 struct z3fold_header *zhdr, *new_zhdr;
1309 new_zhdr = page_address(newpage);
1310 memcpy(new_zhdr, zhdr, PAGE_SIZE);
1314 spin_lock_init(&new_zhdr->page_lock);
1315 INIT_WORK(&new_zhdr->work, compact_page_work);
1317 * z3fold_page_isolate() ensures that new_zhdr->buddy is empty,
1320 INIT_LIST_HEAD(&new_zhdr->buddy);
1324 z3fold_page_lock(new_zhdr);
1325 if (new_zhdr->first_chunks)
1326 encode_handle(new_zhdr, FIRST);
1327 if (new_zhdr->last_chunks)
1328 encode_handle(new_zhdr, LAST);
1329 if (new_zhdr->middle_chunks)
1330 encode_handle(new_zhdr, MIDDLE);
1332 new_zhdr->cpu = smp_processor_id();
1334 z3fold_page_unlock(new_zhdr);
1336 queue_work_on(new_zhdr->cpu, pool->compact_wq, &new_zhdr->work);