From: Chao Yu <yuch...@huawei.com>

Restructure struct seg_entry to eliminate holes in it, after that,
in 32-bits machine, it reduces size from 32 bytes to 24 bytes; in
64-bits machine, it reduces size from 56 bytes to 40 bytes.

Signed-off-by: Chao Yu <yuch...@huawei.com>
---
 fs/f2fs/segment.h | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/fs/f2fs/segment.h b/fs/f2fs/segment.h
index 975c33d..7a756ff 100644
--- a/fs/f2fs/segment.h
+++ b/fs/f2fs/segment.h
@@ -158,16 +158,17 @@ struct victim_sel_policy {
 };
 
 struct seg_entry {
-       unsigned short valid_blocks;    /* # of valid blocks */
+       unsigned int type:6;            /* segment type like CURSEG_XXX_TYPE */
+       unsigned int valid_blocks:10;   /* # of valid blocks */
+       unsigned int ckpt_valid_blocks:10;      /* # of valid blocks last cp */
+       unsigned int padding:6;         /* padding */
        unsigned char *cur_valid_map;   /* validity bitmap of blocks */
        /*
         * # of valid blocks and the validity bitmap stored in the the last
         * checkpoint pack. This information is used by the SSR mode.
         */
-       unsigned short ckpt_valid_blocks;
-       unsigned char *ckpt_valid_map;
+       unsigned char *ckpt_valid_map;  /* validity bitmap of blocks last cp */
        unsigned char *discard_map;
-       unsigned char type;             /* segment type like CURSEG_XXX_TYPE */
        unsigned long long mtime;       /* modification time of the segment */
 };
 
-- 
2.7.2

Reply via email to