From a5db30ad971cb3bf2efd5f21306fc11f10e27e73 Mon Sep 17 00:00:00 2001 From: Patrick Farrell Date: Wed, 27 Mar 2024 17:44:15 -0400 Subject: [PATCH] LU-17422 obdclass: rename sptlrpc pool and move init This patch completes the move of the pools code to obd by renaming the sptlrpc pool to obd, and moves the pool init and cleanup to obd. Signed-off-by: Patrick Farrell Change-Id: I9164601745c8faf19559216f55ea5df4e2e226fe Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/53669 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Oleg Drokin Reviewed-by: Andreas Dilger Reviewed-by: Sebastien Buisson --- lustre/include/lustre_sec.h | 10 ------- lustre/include/obd_class.h | 14 ++++++++-- lustre/llite/llite_lib.c | 2 +- lustre/obdclass/class_obd.c | 12 +++++++-- lustre/obdclass/page_pools.c | 63 ++++++++++++++++++++++---------------------- lustre/osc/osc_request.c | 8 +++--- lustre/ptlrpc/client.c | 4 +-- lustre/ptlrpc/gss/gss_bulk.c | 22 ++++++++-------- lustre/ptlrpc/gss/sec_gss.c | 2 +- lustre/ptlrpc/sec.c | 9 +------ 10 files changed, 73 insertions(+), 73 deletions(-) diff --git a/lustre/include/lustre_sec.h b/lustre/include/lustre_sec.h index 94ceabf..cdb2703 100644 --- a/lustre/include/lustre_sec.h +++ b/lustre/include/lustre_sec.h @@ -1191,16 +1191,6 @@ int sptlrpc_cli_install_rvs_ctx(struct obd_import *imp, struct ptlrpc_cli_ctx *ctx); /* bulk security api */ -void sptlrpc_pool_add_user(void); -int sptlrpc_pool_get_desc_pages(struct ptlrpc_bulk_desc *desc); -int sptlrpc_pool_get_pages_array(struct page **pa, unsigned int count); -int sptlrpc_pool_get_pages(void **buf, unsigned int order); -void sptlrpc_pool_put_desc_pages(struct ptlrpc_bulk_desc *desc); -void sptlrpc_pool_put_pages_array(struct page **pa, unsigned int count); -void sptlrpc_pool_put_pages(void *buf, unsigned int order); -int sptlrpc_pool_get_free_pages(unsigned int order); -int pool_is_at_full_capacity(int order); - int sptlrpc_cli_wrap_bulk(struct ptlrpc_request *req, struct ptlrpc_bulk_desc *desc); int sptlrpc_cli_unwrap_bulk_read(struct ptlrpc_request *req, diff --git a/lustre/include/obd_class.h b/lustre/include/obd_class.h index d488e6d..0a6e03f 100644 --- a/lustre/include/obd_class.h +++ b/lustre/include/obd_class.h @@ -147,8 +147,18 @@ int obd_set_max_mod_rpcs_in_flight(struct client_obd *cli, __u16 max); int obd_mod_rpc_stats_seq_show(struct client_obd *cli, struct seq_file *seq); /* page_pools.c */ -int sptlrpc_pool_init(void); -void sptlrpc_pool_fini(void); +int obd_pool_init(void); +void obd_pool_fini(void); +void obd_pool_add_user(void); +int obd_pool_get_desc_pages(struct ptlrpc_bulk_desc *desc); +int obd_pool_get_pages_array(struct page **pa, unsigned int count); +int obd_pool_get_pages(void **buf, unsigned int order); +void obd_pool_put_desc_pages(struct ptlrpc_bulk_desc *desc); +void obd_pool_put_pages_array(struct page **pa, unsigned int count); +void obd_pool_put_pages(void *buf, unsigned int order); +int obd_pool_get_free_pages(unsigned int order); +int pool_is_at_full_capacity(int order); + int encrypt_page_pools_seq_show(struct seq_file *m, void *v); int page_pools_seq_show(struct seq_file *m, void *v); diff --git a/lustre/llite/llite_lib.c b/lustre/llite/llite_lib.c index c8ee45a..1a47029 100644 --- a/lustre/llite/llite_lib.c +++ b/lustre/llite/llite_lib.c @@ -3387,7 +3387,7 @@ int ll_iocontrol(struct inode *inode, struct file *file, rc = llcrypt_ioctl_add_key(file, uarg); #ifdef CONFIG_LL_ENCRYPTION if (!rc && S_ISDIR(inode->i_mode)) - sptlrpc_pool_add_user(); + obd_pool_add_user(); #endif RETURN(rc); case LL_IOC_GET_ENCRYPTION_KEY_STATUS: diff --git a/lustre/obdclass/class_obd.c b/lustre/obdclass/class_obd.c index 5d95590..8d598c2 100644 --- a/lustre/obdclass/class_obd.c +++ b/lustre/obdclass/class_obd.c @@ -760,10 +760,14 @@ static int __init obdclass_init(void) if (err) goto cleanup_cl_global; + err = obd_pool_init(); + if (err) + goto cleanup_llog_info; + #ifdef HAVE_SERVER_SUPPORT err = dt_global_init(); if (err != 0) - goto cleanup_llog_info; + goto cleanup_obd_pool; err = lu_ucred_global_init(); if (err != 0) @@ -787,8 +791,11 @@ cleanup_all: cleanup_dt_global: dt_global_fini(); -cleanup_llog_info: +cleanup_obd_pool: #endif /* HAVE_SERVER_SUPPORT */ + obd_pool_fini(); + +cleanup_llog_info: llog_info_fini(); cleanup_cl_global: @@ -859,6 +866,7 @@ static void __exit obdclass_exit(void) lu_ucred_global_fini(); dt_global_fini(); #endif /* HAVE_SERVER_SUPPORT */ + obd_pool_fini(); llog_info_fini(); cl_global_fini(); lu_global_fini(); diff --git a/lustre/obdclass/page_pools.c b/lustre/obdclass/page_pools.c index 575dd57..45d74b9 100644 --- a/lustre/obdclass/page_pools.c +++ b/lustre/obdclass/page_pools.c @@ -623,11 +623,11 @@ static int pool_should_grow(int needed, struct obd_page_pool *pool) /* * Export the number of free pages in the pool of 'order' */ -int sptlrpc_pool_get_free_pages(unsigned int order) +int obd_pool_get_free_pages(unsigned int order) { return page_pools[order]->opp_free_pages; } -EXPORT_SYMBOL(sptlrpc_pool_get_free_pages); +EXPORT_SYMBOL(obd_pool_get_free_pages); /* * Let outside world know if pool full capacity is reached @@ -663,9 +663,9 @@ static bool __grow_pool_try(int needed, struct obd_page_pool *pool); /* * we allocate the requested pages atomically. */ -static inline int __sptlrpc_pool_get_pages(void *array, unsigned int count, - unsigned int order, - void **(*page_from)(void *, int)) +static inline int __obd_pool_get_pages(void *array, unsigned int count, + unsigned int order, + void **(*page_from)(void *, int)) { struct obd_page_pool *page_pool = page_pools[order]; wait_queue_entry_t waitlink; @@ -786,7 +786,7 @@ out_unlock: return rc; } -int sptlrpc_pool_get_desc_pages(struct ptlrpc_bulk_desc *desc) +int obd_pool_get_desc_pages(struct ptlrpc_bulk_desc *desc) { int rc; @@ -802,7 +802,7 @@ int sptlrpc_pool_get_desc_pages(struct ptlrpc_bulk_desc *desc) if (desc->bd_enc_vec == NULL) return -ENOMEM; - rc = __sptlrpc_pool_get_pages((void *)desc, desc->bd_iov_count, 0, + rc = __obd_pool_get_pages((void *)desc, desc->bd_iov_count, 0, page_from_bulkdesc); if (rc) { OBD_FREE_LARGE(desc->bd_enc_vec, @@ -812,23 +812,23 @@ int sptlrpc_pool_get_desc_pages(struct ptlrpc_bulk_desc *desc) } return rc; } -EXPORT_SYMBOL(sptlrpc_pool_get_desc_pages); +EXPORT_SYMBOL(obd_pool_get_desc_pages); -int sptlrpc_pool_get_pages_array(struct page **pa, unsigned int count) +int obd_pool_get_pages_array(struct page **pa, unsigned int count) { - return __sptlrpc_pool_get_pages((void *)pa, count, 0, + return __obd_pool_get_pages((void *)pa, count, 0, page_from_pagearray); } -EXPORT_SYMBOL(sptlrpc_pool_get_pages_array); +EXPORT_SYMBOL(obd_pool_get_pages_array); -int sptlrpc_pool_get_pages(void **pages, unsigned int order) +int obd_pool_get_pages(void **pages, unsigned int order) { - return __sptlrpc_pool_get_pages((void *)pages, 1, order, + return __obd_pool_get_pages((void *)pages, 1, order, page_from_bufarray); } -EXPORT_SYMBOL(sptlrpc_pool_get_pages); +EXPORT_SYMBOL(obd_pool_get_pages); -static int __sptlrpc_pool_put_pages(void *array, unsigned int count, +static int __obd_pool_put_pages(void *array, unsigned int count, unsigned int order, void **(*page_from)(void *, int)) { @@ -879,14 +879,14 @@ out_unlock: return rc; } -void sptlrpc_pool_put_desc_pages(struct ptlrpc_bulk_desc *desc) +void obd_pool_put_desc_pages(struct ptlrpc_bulk_desc *desc) { int rc; if (desc->bd_enc_vec == NULL) return; - rc = __sptlrpc_pool_put_pages((void *)desc, desc->bd_iov_count, 0, + rc = __obd_pool_put_pages((void *)desc, desc->bd_iov_count, 0, page_from_bulkdesc); if (rc) CDEBUG(D_SEC, "error putting pages in pool: %d\n", rc); @@ -895,29 +895,28 @@ void sptlrpc_pool_put_desc_pages(struct ptlrpc_bulk_desc *desc) desc->bd_iov_count * sizeof(*desc->bd_enc_vec)); desc->bd_enc_vec = NULL; } -EXPORT_SYMBOL(sptlrpc_pool_put_desc_pages); +EXPORT_SYMBOL(obd_pool_put_desc_pages); -void sptlrpc_pool_put_pages_array(struct page **pa, unsigned int count) +void obd_pool_put_pages_array(struct page **pa, unsigned int count) { int rc; - rc = __sptlrpc_pool_put_pages((void *)pa, count, 0, - page_from_pagearray); + rc = __obd_pool_put_pages((void *)pa, count, 0, page_from_pagearray); if (rc) CDEBUG(D_SEC, "error putting pages in pool: %d\n", rc); } -EXPORT_SYMBOL(sptlrpc_pool_put_pages_array); +EXPORT_SYMBOL(obd_pool_put_pages_array); -void sptlrpc_pool_put_pages(void *buf, unsigned int order) +void obd_pool_put_pages(void *buf, unsigned int order) { int rc; - rc = __sptlrpc_pool_put_pages(buf, 1, order, page_from_bufarray); + rc = __obd_pool_put_pages(buf, 1, order, page_from_bufarray); if (rc) CDEBUG(D_SEC, "error putting pages in pool: %d\n", rc); } -EXPORT_SYMBOL(sptlrpc_pool_put_pages); +EXPORT_SYMBOL(obd_pool_put_pages); /* called with pool->opp_lock held */ static bool __grow_pool_try(int needed, struct obd_page_pool *pool) @@ -974,7 +973,7 @@ static bool grow_pool_try(int needed, struct obd_page_pool *pool) * initial pages in add_user() if current pool is empty, rest would be * handled by the pool self-adaption. */ -void sptlrpc_pool_add_user(void) +void obd_pool_add_user(void) { struct obd_page_pool *pool = page_pools[0]; @@ -983,7 +982,7 @@ void sptlrpc_pool_add_user(void) */ grow_pool_try(1, pool); } -EXPORT_SYMBOL(sptlrpc_pool_add_user); +EXPORT_SYMBOL(obd_pool_add_user); static inline void pool_ptrs_alloc(struct obd_page_pool *pool) { @@ -1002,7 +1001,7 @@ static inline void pool_ptrs_free(struct obd_page_pool *pool) pool->opp_max_ptr_pages * sizeof(*pool->opp_ptr_pages)); } -int sptlrpc_pool_init(void) +int obd_pool_init(void) { struct obd_page_pool *pool; int pool_max_pages = cfs_totalram_pages() / POOLS_COUNT; @@ -1054,7 +1053,7 @@ int sptlrpc_pool_init(void) pool->opp_shops.seeks = ORDER_TO_SEEKS(pool_order); pool->pool_shrinker = ll_shrinker_create(&pool->opp_shops, 0, - "sptlrpc_pool"); + "obd_pool"); if (IS_ERR(pool->pool_shrinker)) GOTO(fail, rc = PTR_ERR(pool->pool_shrinker)); @@ -1076,9 +1075,9 @@ fail: RETURN(rc); } -EXPORT_SYMBOL(sptlrpc_pool_init); +EXPORT_SYMBOL(obd_pool_init); -void sptlrpc_pool_fini(void) +void obd_pool_fini(void) { unsigned long cleaned, nptr_pages; int pool_order; @@ -1115,4 +1114,4 @@ void sptlrpc_pool_fini(void) OBD_FREE(page_pools, POOLS_COUNT * sizeof(*page_pools)); } -EXPORT_SYMBOL(sptlrpc_pool_fini); +EXPORT_SYMBOL(obd_pool_fini); diff --git a/lustre/osc/osc_request.c b/lustre/osc/osc_request.c index e76f8ea..8ec47e8 100644 --- a/lustre/osc/osc_request.c +++ b/lustre/osc/osc_request.c @@ -1495,7 +1495,7 @@ static inline void osc_release_bounce_pages(struct brw_page **pga, } if (pa) { - sptlrpc_pool_put_pages_array(pa, j); + obd_pool_put_pages_array(pa, j); OBD_FREE_PTR_ARRAY_LARGE(pa, page_count); } #endif @@ -1558,7 +1558,7 @@ osc_brw_prep_request(int cmd, struct client_obd *cli, struct obdo *oa, RETURN(-ENOMEM); } - rc = sptlrpc_pool_get_pages_array(pa, page_count); + rc = obd_pool_get_pages_array(pa, page_count); if (rc) { CDEBUG(D_SEC, "failed to allocate from enc pool: %d\n", rc); @@ -1615,8 +1615,8 @@ retry_encrypt: goto retry_encrypt; } if (pa) { - sptlrpc_pool_put_pages_array(pa + i, - page_count - i); + obd_pool_put_pages_array(pa + i, + page_count - i); OBD_FREE_PTR_ARRAY_LARGE(pa, page_count); } diff --git a/lustre/ptlrpc/client.c b/lustre/ptlrpc/client.c index a3c593e..06c71ea 100644 --- a/lustre/ptlrpc/client.c +++ b/lustre/ptlrpc/client.c @@ -291,7 +291,7 @@ void ptlrpc_free_bulk(struct ptlrpc_bulk_desc *desc) LASSERT((desc->bd_export != NULL) ^ (desc->bd_import != NULL)); LASSERT(desc->bd_frag_ops != NULL); - sptlrpc_pool_put_desc_pages(desc); + obd_pool_put_desc_pages(desc); if (desc->bd_export) class_export_put(desc->bd_export); @@ -1673,7 +1673,7 @@ static int ptlrpc_send_new_req(struct ptlrpc_request *req) /* do not try to go further if there is not enough memory in pool */ if (req->rq_sent && req->rq_bulk) if (req->rq_bulk->bd_iov_count > - sptlrpc_pool_get_free_pages(0) && + obd_pool_get_free_pages(0) && pool_is_at_full_capacity(0)) RETURN(-ENOMEM); diff --git a/lustre/ptlrpc/gss/gss_bulk.c b/lustre/ptlrpc/gss/gss_bulk.c index 1be05a7..d67e6e1 100644 --- a/lustre/ptlrpc/gss/gss_bulk.c +++ b/lustre/ptlrpc/gss/gss_bulk.c @@ -136,7 +136,7 @@ int gss_cli_ctx_wrap_bulk(struct ptlrpc_cli_ctx *ctx, if (desc->bd_iov_count == 0) RETURN(0); - rc = sptlrpc_pool_get_desc_pages(desc); + rc = obd_pool_get_desc_pages(desc); if (rc) { CERROR("bulk write: failed to allocate " "encryption pages: %d\n", rc); @@ -302,9 +302,9 @@ static int gss_prep_bulk(struct ptlrpc_bulk_desc *desc, if (desc->bd_iov_count == 0) return 0; - rc = sptlrpc_pool_get_desc_pages(desc); - if (rc) - return rc; + rc = obd_pool_get_desc_pages(desc); + if (rc) + return rc; if (lgss_prep_bulk(mechctx, desc) != GSS_S_COMPLETE) return -EACCES; @@ -491,13 +491,13 @@ int gss_svc_wrap_bulk(struct ptlrpc_request *req, break; } - rc = sptlrpc_pool_get_desc_pages(desc); - if (rc) { - bsdv->bsd_flags |= BSD_FL_ERR; - CERROR("bulk read: failed to allocate encryption " - "pages: %d\n", rc); - RETURN(rc); - } + rc = obd_pool_get_desc_pages(desc); + if (rc) { + bsdv->bsd_flags |= BSD_FL_ERR; + CERROR("bulk read: failed to allocate encryption " + "pages: %d\n", rc); + RETURN(rc); + } token.data = bsdv->bsd_data; token.len = grctx->src_repbsd_size - sizeof(*bsdv); diff --git a/lustre/ptlrpc/gss/sec_gss.c b/lustre/ptlrpc/gss/sec_gss.c index 1d81b54..3e6d2a4 100644 --- a/lustre/ptlrpc/gss/sec_gss.c +++ b/lustre/ptlrpc/gss/sec_gss.c @@ -1104,7 +1104,7 @@ int gss_sec_create_common(struct gss_sec *gsec, } if (SPTLRPC_FLVR_BULK_SVC(sec->ps_flvr.sf_rpc) == SPTLRPC_BULK_SVC_PRIV) - sptlrpc_pool_add_user(); + obd_pool_add_user(); CDEBUG(D_SEC, "create %s%s@%p\n", (svcctx ? "reverse " : ""), policy->sp_name, gsec); diff --git a/lustre/ptlrpc/sec.c b/lustre/ptlrpc/sec.c index f725ab6..0f81a43 100644 --- a/lustre/ptlrpc/sec.c +++ b/lustre/ptlrpc/sec.c @@ -2919,13 +2919,9 @@ int sptlrpc_init(void) if (rc) goto out_gc; - rc = sptlrpc_pool_init(); - if (rc) - goto out_conf; - rc = sptlrpc_null_init(); if (rc) - goto out_pool; + goto out_conf; rc = sptlrpc_plain_init(); if (rc) @@ -2941,8 +2937,6 @@ out_plain: sptlrpc_plain_fini(); out_null: sptlrpc_null_fini(); -out_pool: - sptlrpc_pool_fini(); out_conf: sptlrpc_conf_fini(); out_gc: @@ -2956,7 +2950,6 @@ void sptlrpc_fini(void) sptlrpc_lproc_fini(); sptlrpc_plain_fini(); sptlrpc_null_fini(); - sptlrpc_pool_fini(); sptlrpc_conf_fini(); sptlrpc_gc_fini(); } -- 1.8.3.1