Archive-only list for patches
 help / color / mirror / Atom feed
From: Dongsheng Yang <dongsheng.yang@linux.dev>
To: Nathan Chancellor <nathan@kernel.org>,
	Zheng Gu <cengku@gmail.com>,
	Mikulas Patocka <mpatocka@redhat.com>
Cc: dm-devel@lists.linux.dev, patches@lists.linux.dev
Subject: Re: [PATCH] dm-pcache: Fix 64-bit division for 32-bit platforms in get_kset_id()
Date: Fri, 22 Aug 2025 14:53:42 +0800	[thread overview]
Message-ID: <2f5aa331-aa47-4e81-9bb3-65c771b39913@linux.dev> (raw)
In-Reply-To: <20250821-dm-pcache-fix-32-bit-div-err-v1-1-cab5448f44e6@kernel.org>


在 8/22/2025 4:09 AM, Nathan Chancellor 写道:
> When building for a 32-bit platform (such as ARCH=i386 allmodconfig),
> there is a modpost error:
>
>    ERROR: modpost: "__umoddi3" [drivers/md/dm-pcache/dm-pcache.ko] undefined!
>
> Hacking up the driver Makefile to allow building into the kernel shows
> that the division comes from get_kset_id(), which is inlined into
> cache_key_append() in cache_key.c.
>
> Use the helper div_u64_rem() to avoid emitting a libcall on 32-bit targets.
>
> Fixes: fd5cc4922bef ("dm-pcache: add persistent cache target in device-mapper")
> Signed-off-by: Nathan Chancellor <nathan@kernel.org>
> ---
>   drivers/md/dm-pcache/cache.h | 4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/md/dm-pcache/cache.h b/drivers/md/dm-pcache/cache.h
> index b3b361cc406e..b10e721ab1b7 100644
> --- a/drivers/md/dm-pcache/cache.h
> +++ b/drivers/md/dm-pcache/cache.h
> @@ -373,7 +373,9 @@ static inline void *get_key_head_addr(struct pcache_cache *cache)
>   
>   static inline u32 get_kset_id(struct pcache_cache *cache, u64 off)
>   {
> -	return (off >> PCACHE_CACHE_SUBTREE_SIZE_SHIFT) % cache->n_ksets;
> +	u32 rem;
> +	div_u64_rem(off >> PCACHE_CACHE_SUBTREE_SIZE_SHIFT, cache->n_ksets, &rem);
> +	return rem;
>   }


Hi Nathan,

Thanx for your fix. It looks good to me.

Just one nit about the variable name. I prefer kset_id to rem.

Mikulas, if this looks good to you, could you apply this change to dm-6.18?

Thanx

Dongsheng

diff --git a/drivers/md/dm-pcache/cache.h b/drivers/md/dm-pcache/cache.h
index b3b361cc406e..f005c9d9a7aa 100644
--- a/drivers/md/dm-pcache/cache.h
+++ b/drivers/md/dm-pcache/cache.h
@@ -373,7 +373,11 @@ static inline void *get_key_head_addr(struct 
pcache_cache *cache)

  static inline u32 get_kset_id(struct pcache_cache *cache, u64 off)
  {
-       return (off >> PCACHE_CACHE_SUBTREE_SIZE_SHIFT) % cache->n_ksets;
+       u32 kset_id;
+
+       div_u64_rem(off >> PCACHE_CACHE_SUBTREE_SIZE_SHIFT, 
cache->n_ksets, &kset_id);
+
+       return kset_id;
  }

  static inline struct pcache_cache_kset *get_kset(struct pcache_cache 
*cache, u32 kset_id)

> re
>   
>   static inline struct pcache_cache_kset *get_kset(struct pcache_cache *cache, u32 kset_id)
>
> ---
> base-commit: fd5cc4922bef4b3c3cd0452f38dcfd066322e9a9
> change-id: 20250821-dm-pcache-fix-32-bit-div-err-4f0695e94784
>
> Best regards,
> --
> Nathan Chancellor <nathan@kernel.org>
>

  reply	other threads:[~2025-08-22  6:54 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-21 20:09 [PATCH] dm-pcache: Fix 64-bit division for 32-bit platforms in get_kset_id() Nathan Chancellor
2025-08-22  6:53 ` Dongsheng Yang [this message]
2025-08-23  5:27   ` Nathan Chancellor
2025-08-25 13:28 ` Mikulas Patocka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2f5aa331-aa47-4e81-9bb3-65c771b39913@linux.dev \
    --to=dongsheng.yang@linux.dev \
    --cc=cengku@gmail.com \
    --cc=dm-devel@lists.linux.dev \
    --cc=mpatocka@redhat.com \
    --cc=nathan@kernel.org \
    --cc=patches@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox