From patchwork Sun Oct 9 13:25:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 117740 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 36233A0542; Sun, 9 Oct 2022 15:25:30 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F181641141; Sun, 9 Oct 2022 15:25:28 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id 9F87740042 for ; Sun, 9 Oct 2022 15:25:25 +0200 (CEST) Received: by shelob.oktetlabs.ru (Postfix, from userid 115) id 6670687; Sun, 9 Oct 2022 16:25:25 +0300 (MSK) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mail1.oktetlabs.ru X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=ALL_TRUSTED, DKIM_ADSP_DISCARD autolearn=no autolearn_force=no version=3.4.6 Received: from aros.oktetlabs.ru (aros.oktetlabs.ru [192.168.38.17]) by shelob.oktetlabs.ru (Postfix) with ESMTP id 5FCD569; Sun, 9 Oct 2022 16:25:24 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 5FCD569 Authentication-Results: shelob.oktetlabs.ru/5FCD569; dkim=none; dkim-atps=neutral From: Andrew Rybchenko To: Olivier Matz Cc: dev@dpdk.org, =?utf-8?q?Morten_Br=C3=B8rup?= , Bruce Richardson Subject: [PATCH v5 1/4] mempool: check driver enqueue result in one place Date: Sun, 9 Oct 2022 16:25:12 +0300 Message-Id: <20221009132515.584958-2-andrew.rybchenko@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20221009132515.584958-1-andrew.rybchenko@oktetlabs.ru> References: <20221009132515.584958-1-andrew.rybchenko@oktetlabs.ru> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Enqueue operation must not fail. Move corresponding debug check from one particular case to dequeue operation helper in order to do it for all invocations. Log critical message with useful information instead of rte_panic(). Make rte_mempool_do_generic_put() implementation more readable and fix incosistency when return value is not checked in one place and checked in another. Signed-off-by: Andrew Rybchenko Reviewed-by: Morten Brørup --- lib/mempool/rte_mempool.h | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/mempool/rte_mempool.h b/lib/mempool/rte_mempool.h index 2401c4ac80..bc29d49aab 100644 --- a/lib/mempool/rte_mempool.h +++ b/lib/mempool/rte_mempool.h @@ -786,12 +786,19 @@ rte_mempool_ops_enqueue_bulk(struct rte_mempool *mp, void * const *obj_table, unsigned n) { struct rte_mempool_ops *ops; + int ret; RTE_MEMPOOL_STAT_ADD(mp, put_common_pool_bulk, 1); RTE_MEMPOOL_STAT_ADD(mp, put_common_pool_objs, n); rte_mempool_trace_ops_enqueue_bulk(mp, obj_table, n); ops = rte_mempool_get_ops(mp->ops_index); - return ops->enqueue(mp, obj_table, n); + ret = ops->enqueue(mp, obj_table, n); +#ifdef RTE_LIBRTE_MEMPOOL_DEBUG + if (unlikely(ret < 0)) + RTE_LOG(CRIT, MEMPOOL, "cannot enqueue %u objects to mempool %s\n", + n, mp->name); +#endif + return ret; } /** @@ -1351,12 +1358,7 @@ rte_mempool_do_generic_put(struct rte_mempool *mp, void * const *obj_table, ring_enqueue: /* push remaining objects in ring */ -#ifdef RTE_LIBRTE_MEMPOOL_DEBUG - if (rte_mempool_ops_enqueue_bulk(mp, obj_table, n) < 0) - rte_panic("cannot put objects in mempool\n"); -#else rte_mempool_ops_enqueue_bulk(mp, obj_table, n); -#endif }