[dm-devel] How to understand dm-writecache/memory_entry

Mike Snitzer snitzer at redhat.com
Mon Oct 22 15:25:18 UTC 2018


On Sun, Oct 21 2018 at  9:18am -0400,
shenghui <shhuiw at foxmail.com> wrote:

> Hi Mikulas,
> 
> Sorry to trouble you again.
> 
> I'm reading the source code of dm-writecache, and noticed:
> -----------------------------------------------------
> static struct wc_memory_entry *memory_entry(struct dm_writecache *wc, struct wc_entry *e)
> {
> 	if (is_power_of_2(sizeof(struct wc_entry)) && 0)    // why this?
> 		return &sb(wc)->entries[e - wc->entries];
> 	else
> 		return &sb(wc)->entries[e->index];
> }
> 
> Seems there is something wrong with the if condition, right?

Certainly looks very wrong.

I've staged this fix:
https://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git/commit/?h=dm-4.20&id=da4ad3a23af3d7f357b24b33e9fec7531b59ee49




More information about the dm-devel mailing list