On Mon, Jun 5, 2023 at 8:37 AM Johannes Weiner <hannes@xxxxxxxxxxx> wrote: > > On Mon, Jun 05, 2023 at 10:54:16AM +0200, Domenico Cerasuolo wrote: > > @@ -884,14 +842,6 @@ static inline bool obj_allocated(struct page *page, void *obj, unsigned long *ph > > return obj_tagged(page, obj, phandle, OBJ_ALLOCATED_TAG); > > } > > > > -#ifdef CONFIG_ZPOOL > > -static bool obj_stores_deferred_handle(struct page *page, void *obj, > > - unsigned long *phandle) > > -{ > > - return obj_tagged(page, obj, phandle, OBJ_DEFERRED_HANDLE_TAG); > > -} > > -#endif > > You can actually remove even more here. > > The entire concept of deferred_handle is about serializing free with > reclaim. It can all go: OBJ_DEFERRED_HANDLE_TAG, the member in struct > link_free, this function here, find_deferred_handle_obj() (declaration > and implementation), free_handles(), and the deferred handle bits in > obj_free() including the handle parameter itself. For more context on this: https://lore.kernel.org/all/20230110231701.326724-1-nphamcs@xxxxxxxxx/T/#u