From d43575dc06ff91254ed6e8dfe89b651a16b2f956 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Wed, 19 Mar 2025 13:44:13 -0400 Subject: [PATCH] MT#55283 look up bufferpool shard from metadata Use the pointer we stored as metadata to quickly look up the respective shard. Change-Id: I01c39d9dbe229bb9bd98d90efb95adfe076e426d --- lib/bufferpool.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/bufferpool.c b/lib/bufferpool.c index 12b1b9435..150864b35 100644 --- a/lib/bufferpool.c +++ b/lib/bufferpool.c @@ -181,10 +181,10 @@ static struct bpool_shard **bpool_find_shard_ptr(void *p) { return bsearch(p, bpool_shards->pdata, bpool_shards->len, sizeof(*bpool_shards->pdata), bpool_shard_cmp); } -// bpool_shards_lock must be held + static struct bpool_shard *bpool_find_shard(void *p) { - struct bpool_shard **sp = bpool_find_shard_ptr(p); - return sp ? *sp : NULL; + struct bpool_shard **head = (struct bpool_shard **) ((size_t) p & BUFFERPOOL_TOP_MASK); + return *head; } static void bpool_shard_destroy(struct bpool_shard *shard) {