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 <patrick.farrell@oracle.com>
Change-Id: I20bbe7535e8df223ec1fff9b940b3063fcc3f8d7
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/52077
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Qian Yingjin <qian@ddn.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-by: Sebastien Buisson <sbuisson@ddn.com>
osc_page_touch_at(env, obj, osc_index(opg), to);
}
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,
static const struct cl_page_operations osc_page_ops = {
.cpo_print = osc_page_print,
.cpo_delete = osc_page_delete,
return result;
opg->ops_srvlock = osc_io_srvlock(oio);
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);
result = osc_lru_alloc(env, osc_cli(osc), opg);
if (result == 0) {
result = radix_tree_preload(GFP_NOFS);