From 4529e5939b51fbcf09441dfac884d083edffb9ba Mon Sep 17 00:00:00 2001 From: Patrick Farrell Date: Fri, 23 Feb 2024 11:05:11 -0500 Subject: [PATCH] LU-13814 osc: add osc transient page ops As part of gradually removing cl_pages for transient pages, create a special set of OSC page operations for them. This makes it easier to see what's left for transient pages and focus on removing that. Signed-off-by: Patrick Farrell Change-Id: I20bbe7535e8df223ec1fff9b940b3063fcc3f8d7 Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/52077 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Qian Yingjin Reviewed-by: Andreas Dilger Reviewed-by: Oleg Drokin Reviewed-by: Sebastien Buisson --- lustre/osc/osc_page.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lustre/osc/osc_page.c b/lustre/osc/osc_page.c index ab80ada..7c54153 100644 --- a/lustre/osc/osc_page.c +++ b/lustre/osc/osc_page.c @@ -233,6 +233,12 @@ static void osc_page_touch(const struct lu_env *env, osc_page_touch_at(env, obj, osc_index(opg), to); } +static const struct cl_page_operations osc_transient_page_ops = { + .cpo_print = osc_page_print, + .cpo_delete = osc_page_delete, + .cpo_clip = osc_page_clip, +}; + static const struct cl_page_operations osc_page_ops = { .cpo_print = osc_page_print, .cpo_delete = osc_page_delete, @@ -259,10 +265,13 @@ int osc_page_init(const struct lu_env *env, struct cl_object *obj, return result; opg->ops_srvlock = osc_io_srvlock(oio); - cl_page_slice_add(cl_page, &opg->ops_cl, obj, &osc_page_ops); - /* reserve an LRU space for this page */ - if (cl_page->cp_type == CPT_CACHEABLE) { + if (cl_page->cp_type == CPT_TRANSIENT) { + cl_page_slice_add(cl_page, &opg->ops_cl, obj, + &osc_transient_page_ops); + } else if (cl_page->cp_type == CPT_CACHEABLE) { + cl_page_slice_add(cl_page, &opg->ops_cl, obj, &osc_page_ops); + /* reserve an LRU space for this page */ result = osc_lru_alloc(env, osc_cli(osc), opg); if (result == 0) { result = radix_tree_preload(GFP_NOFS); -- 1.8.3.1