Lines Matching refs:pcl
69 struct z_erofs_pcluster *pcl; in z_erofs_alloc_pcluster() local
74 pcl = kmem_cache_zalloc(pcs->slab, GFP_NOFS); in z_erofs_alloc_pcluster()
75 if (!pcl) in z_erofs_alloc_pcluster()
77 pcl->pclusterpages = nrpages; in z_erofs_alloc_pcluster()
78 return pcl; in z_erofs_alloc_pcluster()
83 static void z_erofs_free_pcluster(struct z_erofs_pcluster *pcl) in z_erofs_free_pcluster() argument
90 if (pcl->pclusterpages > pcs->maxpages) in z_erofs_free_pcluster()
93 kmem_cache_free(pcs->slab, pcl); in z_erofs_free_pcluster()
322 struct z_erofs_pcluster *pcl, *tailpcl; member
359 struct z_erofs_pcluster *pcl = clt->pcl; in preload_compressed_pages() local
369 pages = pcl->compressed_pages; in preload_compressed_pages()
370 index = pcl->obj.index; in preload_compressed_pages()
371 for (; index < pcl->obj.index + pcl->pclusterpages; ++index, ++pages) { in preload_compressed_pages()
422 struct z_erofs_pcluster *const pcl = in erofs_try_to_free_all_cached_pages() local
430 for (i = 0; i < pcl->pclusterpages; ++i) { in erofs_try_to_free_all_cached_pages()
431 struct page *page = pcl->compressed_pages[i]; in erofs_try_to_free_all_cached_pages()
444 WRITE_ONCE(pcl->compressed_pages[i], NULL); in erofs_try_to_free_all_cached_pages()
453 struct z_erofs_pcluster *const pcl = (void *)page_private(page); in erofs_try_to_free_cached_page() local
456 if (erofs_workgroup_try_to_freeze(&pcl->obj, 1)) { in erofs_try_to_free_cached_page()
459 for (i = 0; i < pcl->pclusterpages; ++i) { in erofs_try_to_free_cached_page()
460 if (pcl->compressed_pages[i] == page) { in erofs_try_to_free_cached_page()
461 WRITE_ONCE(pcl->compressed_pages[i], NULL); in erofs_try_to_free_cached_page()
466 erofs_workgroup_unfreeze(&pcl->obj, 1); in erofs_try_to_free_cached_page()
478 struct z_erofs_pcluster *const pcl = clt->pcl; in z_erofs_try_inplace_io() local
480 while (clt->icpage_ptr > pcl->compressed_pages) in z_erofs_try_inplace_io()
507 struct z_erofs_pcluster *pcl = clt->pcl; in z_erofs_try_to_claim_pcluster() local
511 if (cmpxchg(&pcl->next, Z_EROFS_PCLUSTER_NIL, in z_erofs_try_to_claim_pcluster()
513 *owned_head = &pcl->next; in z_erofs_try_to_claim_pcluster()
523 if (cmpxchg(&pcl->next, Z_EROFS_PCLUSTER_TAIL, in z_erofs_try_to_claim_pcluster()
538 struct z_erofs_pcluster *pcl = clt->pcl; in z_erofs_lookup_collection() local
543 if (clt->owned_head == &pcl->next || pcl == clt->tailpcl) { in z_erofs_lookup_collection()
548 cl = z_erofs_primarycollection(pcl); in z_erofs_lookup_collection()
554 length = READ_ONCE(pcl->length); in z_erofs_lookup_collection()
567 length != cmpxchg_relaxed(&pcl->length, length, llen)) { in z_erofs_lookup_collection()
569 length = READ_ONCE(pcl->length); in z_erofs_lookup_collection()
575 clt->tailpcl = pcl; in z_erofs_lookup_collection()
586 struct z_erofs_pcluster *pcl; in z_erofs_register_collection() local
597 pcl = z_erofs_alloc_pcluster(map->m_plen >> PAGE_SHIFT); in z_erofs_register_collection()
598 if (IS_ERR(pcl)) in z_erofs_register_collection()
599 return PTR_ERR(pcl); in z_erofs_register_collection()
601 atomic_set(&pcl->obj.refcount, 1); in z_erofs_register_collection()
602 pcl->obj.index = map->m_pa >> PAGE_SHIFT; in z_erofs_register_collection()
603 pcl->algorithmformat = map->m_algorithmformat; in z_erofs_register_collection()
604 pcl->length = (map->m_llen << Z_EROFS_PCLUSTER_LENGTH_BIT) | in z_erofs_register_collection()
609 pcl->next = clt->owned_head; in z_erofs_register_collection()
612 cl = z_erofs_primarycollection(pcl); in z_erofs_register_collection()
622 grp = erofs_insert_workgroup(inode->i_sb, &pcl->obj); in z_erofs_register_collection()
628 if (grp != &pcl->obj) { in z_erofs_register_collection()
629 clt->pcl = container_of(grp, struct z_erofs_pcluster, obj); in z_erofs_register_collection()
635 clt->tailpcl = pcl; in z_erofs_register_collection()
636 clt->owned_head = &pcl->next; in z_erofs_register_collection()
637 clt->pcl = pcl; in z_erofs_register_collection()
643 z_erofs_free_pcluster(pcl); in z_erofs_register_collection()
667 clt->pcl = container_of(grp, struct z_erofs_pcluster, obj); in z_erofs_collector_begin()
679 erofs_workgroup_put(&clt->pcl->obj); in z_erofs_collector_begin()
688 clt->icpage_ptr = clt->pcl->compressed_pages + clt->pcl->pclusterpages; in z_erofs_collector_begin()
707 struct z_erofs_pcluster *const pcl = in erofs_workgroup_free_rcu() local
709 struct z_erofs_collection *const cl = z_erofs_primarycollection(pcl); in erofs_workgroup_free_rcu()
716 struct z_erofs_pcluster *const pcl = in z_erofs_collection_put() local
719 erofs_workgroup_put(&pcl->obj); in z_erofs_collection_put()
974 struct z_erofs_pcluster *pcl, in z_erofs_decompress_pcluster() argument
989 cl = z_erofs_primarycollection(pcl); in z_erofs_decompress_pcluster()
1057 compressed_pages = pcl->compressed_pages; in z_erofs_decompress_pcluster()
1059 for (i = 0; i < pcl->pclusterpages; ++i) { in z_erofs_decompress_pcluster()
1103 llen = pcl->length >> Z_EROFS_PCLUSTER_LENGTH_BIT; in z_erofs_decompress_pcluster()
1106 partial = !(pcl->length & Z_EROFS_PCLUSTER_FULL_LENGTH); in z_erofs_decompress_pcluster()
1112 inputsize = pcl->pclusterpages * PAGE_SIZE; in z_erofs_decompress_pcluster()
1120 .alg = pcl->algorithmformat, in z_erofs_decompress_pcluster()
1127 for (i = 0; i < pcl->pclusterpages; ++i) { in z_erofs_decompress_pcluster()
1165 WRITE_ONCE(pcl->next, Z_EROFS_PCLUSTER_NIL); in z_erofs_decompress_pcluster()
1180 struct z_erofs_pcluster *pcl; in z_erofs_decompress_queue() local
1188 pcl = container_of(owned, struct z_erofs_pcluster, next); in z_erofs_decompress_queue()
1189 owned = READ_ONCE(pcl->next); in z_erofs_decompress_queue()
1191 z_erofs_decompress_pcluster(io->sb, pcl, pagepool); in z_erofs_decompress_queue()
1207 static struct page *pickup_page_for_submission(struct z_erofs_pcluster *pcl, in pickup_page_for_submission() argument
1212 const pgoff_t index = pcl->obj.index; in pickup_page_for_submission()
1223 page = READ_ONCE(pcl->compressed_pages[nr]); in pickup_page_for_submission()
1239 WRITE_ONCE(pcl->compressed_pages[nr], page); in pickup_page_for_submission()
1265 WRITE_ONCE(pcl->compressed_pages[nr], page); in pickup_page_for_submission()
1277 set_page_private(page, (unsigned long)pcl); in pickup_page_for_submission()
1301 if (oldpage != cmpxchg(&pcl->compressed_pages[nr], oldpage, page)) { in pickup_page_for_submission()
1312 attach_page_private(page, pcl); in pickup_page_for_submission()
1370 static void move_to_bypass_jobqueue(struct z_erofs_pcluster *pcl, in move_to_bypass_jobqueue() argument
1381 WRITE_ONCE(pcl->next, Z_EROFS_PCLUSTER_TAIL_CLOSED); in move_to_bypass_jobqueue()
1384 WRITE_ONCE(*bypass_qtail, &pcl->next); in move_to_bypass_jobqueue()
1386 qtail[JQ_BYPASS] = &pcl->next; in move_to_bypass_jobqueue()
1415 struct z_erofs_pcluster *pcl; in z_erofs_submit_queue() local
1424 pcl = container_of(owned_head, struct z_erofs_pcluster, next); in z_erofs_submit_queue()
1428 .m_pa = blknr_to_addr(pcl->obj.index), in z_erofs_submit_queue()
1433 end = cur + pcl->pclusterpages; in z_erofs_submit_queue()
1436 owned_head = cmpxchg(&pcl->next, Z_EROFS_PCLUSTER_TAIL, in z_erofs_submit_queue()
1442 page = pickup_page_for_submission(pcl, i++, pagepool, in z_erofs_submit_queue()
1477 qtail[JQ_SUBMIT] = &pcl->next; in z_erofs_submit_queue()
1479 move_to_bypass_jobqueue(pcl, qtail, owned_head); in z_erofs_submit_queue()