Re: [PATCH] bcache: fix wrong BITMASK offset value for BDEV_CACHE_MODE

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 5/13/22 23:20, Coly Li wrote:
On 7/20/21 6:32 PM, Lin Feng wrote:
Original codes:
BITMASK(CACHE_SYNC,			struct cache_sb, flags, 0, 1);
BITMASK(CACHE_DISCARD,			struct cache_sb, flags, 1, 1);
BITMASK(CACHE_REPLACEMENT,		struct cache_sb, flags, 2, 3);
...
BITMASK(BDEV_CACHE_MODE,		struct cache_sb, flags, 0, 4);

Should BDEV_CACHE_MODE bits start from bit-nr 5(2+3) else it overlaps
with previous defined bit chunks, since we have 4 types of cache modes,
BDEV_CACHE_MODE will overwrite CACHE_SYNC and CACHE_DISCARD bits.

The overlap won't happen, previous lines are for cache device, and what
you modified is for backing device.

And your patch changes the on-disk format, which is unacceptable anyway.


Yes, you are right, this patch happened as I started reading bcache codes,
I did not get a whole picture of bcache at that time, I'm sorry for making
noise.

Thank you, Coly!

linfeng

Coly Li


This bug stays there since first upstream version of bcache, don't know
why it lives so long, or am i missing something, please point me out
if I'm wrong, thanks!

Signed-off-by: Lin Feng <linf@xxxxxxxxxx>
---
   include/uapi/linux/bcache.h | 2 +-
   1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/uapi/linux/bcache.h b/include/uapi/linux/bcache.h
index cf7399f03b71..dccd89756451 100644
--- a/include/uapi/linux/bcache.h
+++ b/include/uapi/linux/bcache.h
@@ -288,7 +288,7 @@ BITMASK(CACHE_REPLACEMENT,		struct cache_sb, flags, 2, 3);
   #define CACHE_REPLACEMENT_FIFO		1U
   #define CACHE_REPLACEMENT_RANDOM	2U
-BITMASK(BDEV_CACHE_MODE, struct cache_sb, flags, 0, 4);
+BITMASK(BDEV_CACHE_MODE,		struct cache_sb, flags, 5, 4);
   #define CACHE_MODE_WRITETHROUGH		0U
   #define CACHE_MODE_WRITEBACK		1U
   #define CACHE_MODE_WRITEAROUND		2U





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux ARM Kernel]     [Linux Filesystem Development]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux