f2fs: shrink size of struct seg_entry
authorChao Yu <yuchao0@huawei.com>
Wed, 4 May 2016 15:19:48 +0000 (23:19 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Sat, 7 May 2016 17:32:29 +0000 (10:32 -0700)
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 <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/segment.h

index 975c33df65c7cb9af7c8245c711b2cd5ecc50e16..7a756ff5a36dd118ace7ebe5318c779c87e59b1b 100644 (file)
@@ -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 */
 };