linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH v2 00/21] mm/zsmalloc: Split zsdesc from struct page
@ 2023-07-13  4:20 Hyeonggon Yoo
  2023-07-13  4:20 ` [RFC PATCH v2 01/21] mm/zsmalloc: create new struct zsdesc Hyeonggon Yoo
                   ` (21 more replies)
  0 siblings, 22 replies; 32+ messages in thread
From: Hyeonggon Yoo @ 2023-07-13  4:20 UTC (permalink / raw)
  To: Minchan Kim, Sergey Senozhatsky
  Cc: Andrew Morton, linux-mm, linux-kernel, Matthew Wilcox,
	Mike Rapoport, Hyeonggon Yoo

v1: https://lore.kernel.org/linux-mm/20230220132218.546369-1-42.hyeyoo@gmail.com

v1 -> v2:
 - rebased to the latest mm-unstable, resulting in some patches dropped
 - adjusted comments from Mike Rapoport, defining helpers when
   converting its users

The purpose of this series is to define own memory descriptor for zsmalloc,
instead of re-using various fields of struct page. This is a part of the
effort to reduce the size of struct page to unsigned long and enable
dynamic allocation of memory descriptors.

While [1] outlines this ultimate objective, the current use of struct page
is highly dependent on its definition, making it challenging to separately
allocate memory descriptors.

Therefore, this series introduces new descriptor for zsmalloc, called
zsdesc. It overlays struct page for now, but will eventually be allocated
independently in the future. And apart from dynamic allocation of descriptors,
this is a nice cleanup.

This work is also available at:
	https://gitlab.com/hyeyoo/linux/-/tree/separate_zsdesc_rfc-v2

[1] State Of The Page, August 2022
https://lore.kernel.org/lkml/YvV1KTyzZ+Jrtj9x@casper.infradead.org

Hyeonggon Yoo (21):
  mm/zsmalloc: create new struct zsdesc
  mm/zsmalloc: add utility functions for zsdesc
  mm/zsmalloc: replace first_page to first_zsdesc in struct zspage
  mm/zsmalloc: add alternatives of frequently used helper functions
  mm/zsmalloc: convert {try,}lock_zspage() to use zsdesc
  mm/zsmalloc: convert __zs_{map,unmap}_object() to use zsdesc
  mm/zsmalloc: convert obj_to_location() and its users to use zsdesc
  mm/zsmalloc: convert obj_malloc() to use zsdesc
  mm/zsmalloc: convert create_page_chain() and its user to use zsdesc
  mm/zsmalloc: convert obj_allocated() and related helpers to use zsdesc
  mm/zsmalloc: convert init_zspage() to use zsdesc
  mm/zsmalloc: convert obj_to_page() and zs_free() to use zsdesc
  mm/zsmalloc: convert reset_page() to reset_zsdesc()
  mm/zsmalloc: convert zs_page_{isolate,migrate,putback} to use zsdesc
  mm/zsmalloc: convert __free_zspage() to use zsdesc
  mm/zsmalloc: convert location_to_obj() to use zsdesc
  mm/zsmalloc: convert migrate_zspage() to use zsdesc
  mm/zsmalloc: convert get_zspage() to take zsdesc
  mm/zsmalloc: convert SetZsPageMovable() to use zsdesc
  mm/zsmalloc: remove now unused helper functions
  mm/zsmalloc: convert {get,set}_first_obj_offset() to use zsdesc

 mm/zsmalloc.c | 574 +++++++++++++++++++++++++++++++-------------------
 1 file changed, 360 insertions(+), 214 deletions(-)

-- 
2.41.0



^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2023-07-20 21:57 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-13  4:20 [RFC PATCH v2 00/21] mm/zsmalloc: Split zsdesc from struct page Hyeonggon Yoo
2023-07-13  4:20 ` [RFC PATCH v2 01/21] mm/zsmalloc: create new struct zsdesc Hyeonggon Yoo
2023-07-20  7:47   ` Sergey Senozhatsky
2023-07-13  4:20 ` [RFC PATCH v2 02/21] mm/zsmalloc: add utility functions for zsdesc Hyeonggon Yoo
2023-07-13  4:20 ` [RFC PATCH v2 03/21] mm/zsmalloc: replace first_page to first_zsdesc in struct zspage Hyeonggon Yoo
2023-07-13  4:20 ` [RFC PATCH v2 04/21] mm/zsmalloc: add alternatives of frequently used helper functions Hyeonggon Yoo
2023-07-13  4:20 ` [RFC PATCH v2 05/21] mm/zsmalloc: convert {try,}lock_zspage() to use zsdesc Hyeonggon Yoo
2023-07-13  4:20 ` [RFC PATCH v2 06/21] mm/zsmalloc: convert __zs_{map,unmap}_object() " Hyeonggon Yoo
2023-07-13  4:20 ` [RFC PATCH v2 07/21] mm/zsmalloc: convert obj_to_location() and its users " Hyeonggon Yoo
2023-07-13  4:20 ` [RFC PATCH v2 08/21] mm/zsmalloc: convert obj_malloc() " Hyeonggon Yoo
2023-07-13  4:20 ` [RFC PATCH v2 09/21] mm/zsmalloc: convert create_page_chain() and its user " Hyeonggon Yoo
2023-07-13  4:20 ` [RFC PATCH v2 10/21] mm/zsmalloc: convert obj_allocated() and related helpers " Hyeonggon Yoo
2023-07-13  4:20 ` [RFC PATCH v2 11/21] mm/zsmalloc: convert init_zspage() " Hyeonggon Yoo
2023-07-13  4:20 ` [RFC PATCH v2 12/21] mm/zsmalloc: convert obj_to_page() and zs_free() " Hyeonggon Yoo
2023-07-13  4:20 ` [RFC PATCH v2 13/21] mm/zsmalloc: convert reset_page() to reset_zsdesc() Hyeonggon Yoo
2023-07-13  4:20 ` [RFC PATCH v2 14/21] mm/zsmalloc: convert zs_page_{isolate,migrate,putback} to use zsdesc Hyeonggon Yoo
2023-07-13  4:20 ` [RFC PATCH v2 15/21] mm/zsmalloc: convert __free_zspage() " Hyeonggon Yoo
2023-07-13  4:20 ` [RFC PATCH v2 16/21] mm/zsmalloc: convert location_to_obj() " Hyeonggon Yoo
2023-07-20  7:49   ` Sergey Senozhatsky
2023-07-13  4:20 ` [RFC PATCH v2 17/21] mm/zsmalloc: convert migrate_zspage() " Hyeonggon Yoo
2023-07-13  4:20 ` [RFC PATCH v2 18/21] mm/zsmalloc: convert get_zspage() to take zsdesc Hyeonggon Yoo
2023-07-13  4:20 ` [RFC PATCH v2 19/21] mm/zsmalloc: convert SetZsPageMovable() to use zsdesc Hyeonggon Yoo
2023-07-13  4:20 ` [RFC PATCH v2 20/21] mm/zsmalloc: remove now unused helper functions Hyeonggon Yoo
2023-07-13  4:20 ` [RFC PATCH v2 21/21] mm/zsmalloc: convert {get,set}_first_obj_offset() to use zsdesc Hyeonggon Yoo
2023-07-20  7:18 ` [RFC PATCH v2 00/21] mm/zsmalloc: Split zsdesc from struct page Sergey Senozhatsky
2023-07-20  7:54   ` Yosry Ahmed
2023-07-20 11:34     ` Hyeonggon Yoo
2023-07-20 18:31       ` Yosry Ahmed
2023-07-20 21:33         ` Hyeonggon Yoo
2023-07-20 21:38           ` Yosry Ahmed
2023-07-20 21:52             ` Hyeonggon Yoo
2023-07-20 21:57               ` Yosry Ahmed

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).