2013-05-23 (목), 13:12 +0300, Dan Carpenter: > Btw, Linus's new Sparse changes don't like the f2fs's NEW_ADDR > macro. > > #define NEW_ADDR -1U > > We use it like this: > > block_t src, dest; > > if (src != dest && dest != NEW_ADDR && dest != NULL_ADDR) { > > block_t is 64 bits so probably the macro should probably be: > > #define NEW_ADDR ((block_t)-1) Hi, Agreed that it needs to synchronize on-disk and in-memory block address types, __le32 and u64. How about the below patch? > > I'm not able to test this so there may be some reason why changing > this breaks something. In that case we could do: > > #define NEW_ADDR ((u32)(block_t)-1) /* explanation */ > > regards, > dan carpenter > From ded3c78fcb6dd8c39a8664471544942e51ff9faf Mon Sep 17 00:00:00 2001 From: Jaegeuk Kim <jaegeuk.kim@xxxxxxxxxxx> Date: Fri, 24 May 2013 12:41:04 +0900 Subject: [PATCH] f2fs: align data types between on-disk and in-memory block addresses Cc: linux-fsdevel@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, linux-f2fs-devel@xxxxxxxxxxxxxxxxxxxxx The on-disk block address is defined as __le32, but in-memory block address, block_t, does as u64. Let's synchronize them to 32 bits. Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> Signed-off-by: Jaegeuk Kim <jaegeuk.kim@xxxxxxxxxxx> --- fs/f2fs/f2fs.h | 5 ++++- include/linux/f2fs_fs.h | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h index 7b05029..92fd4e9 100644 --- a/fs/f2fs/f2fs.h +++ b/fs/f2fs/f2fs.h @@ -37,7 +37,10 @@ typecheck(unsigned long long, b) && \ ((long long)((a) - (b)) > 0)) -typedef u64 block_t; +typedef u32 block_t; /* + * should not change u32, since it is the on-disk block + * address format, __le32. + */ typedef u32 nid_t; struct f2fs_mount_info { diff --git a/include/linux/f2fs_fs.h b/include/linux/f2fs_fs.h index df6fab8..383d5e3 100644 --- a/include/linux/f2fs_fs.h +++ b/include/linux/f2fs_fs.h @@ -20,8 +20,8 @@ #define F2FS_BLKSIZE 4096 /* support only 4KB block */ #define F2FS_MAX_EXTENSION 64 /* # of extension entries */ -#define NULL_ADDR 0x0U -#define NEW_ADDR -1U +#define NULL_ADDR ((block_t)0) /* used as block_t addresses */ +#define NEW_ADDR ((block_t)-1) /* used as block_t addresses */ #define F2FS_ROOT_INO(sbi) (sbi->root_ino_num) #define F2FS_NODE_INO(sbi) (sbi->node_ino_num) -- 1.8.1.3.566.gaa39828 -- Jaegeuk Kim Samsung
Attachment:
signature.asc
Description: This is a digitally signed message part