Whamcloud - gitweb
LU-17422 obdclass: rename sptlrpc pool and move init 69/53669/14
authorPatrick Farrell <paf0187@gmail.com>
Wed, 27 Mar 2024 21:44:15 +0000 (17:44 -0400)
committerOleg Drokin <green@whamcloud.com>
Tue, 23 Apr 2024 19:50:34 +0000 (19:50 +0000)
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 <patrick.farrell@oracle.com>
Change-Id: I9164601745c8faf19559216f55ea5df4e2e226fe
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/53669
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Sebastien Buisson <sbuisson@ddn.com>
lustre/include/lustre_sec.h
lustre/include/obd_class.h
lustre/llite/llite_lib.c
lustre/obdclass/class_obd.c
lustre/obdclass/page_pools.c
lustre/osc/osc_request.c
lustre/ptlrpc/client.c
lustre/ptlrpc/gss/gss_bulk.c
lustre/ptlrpc/gss/sec_gss.c
lustre/ptlrpc/sec.c

index 94ceabf..cdb2703 100644 (file)
@@ -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,
index d488e6d..0a6e03f 100644 (file)
@@ -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);
 
index c8ee45a..1a47029 100644 (file)
@@ -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:
index 5d95590..8d598c2 100644 (file)
@@ -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();
index 575dd57..45d74b9 100644 (file)
@@ -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);
index e76f8ea..8ec47e8 100644 (file)
@@ -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);
                                }
index a3c593e..06c71ea 100644 (file)
@@ -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);
 
index 1be05a7..d67e6e1 100644 (file)
@@ -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);
index 1d81b54..3e6d2a4 100644 (file)
@@ -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);
index f725ab6..0f81a43 100644 (file)
@@ -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();
 }