mkfs.f2fs: Limit pragma pack(1) only for Windows Host
PATCH 1/1 mkfs.f2fs: Limit pragma pack(1) only for Windows Host
From: Hyojun Kim <[email protected]>
A side-effect was found for #pragma pack(1), which were added for Windows SDK support. Limiting it with ANDROID_WINDOWS_HOST.
Signed-off-by Hyojun Kim <[email protected]>
--- include/f2fs_fs.h | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ include/quota.h | 6 ++++++ 2 files changed, 58 insertions(+)
include/f2fs_fs.h +52 -0
@@ -556,13 +556,17 @@ enum {/* * For superblock */ +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct f2fs_device {__u8 path[MAX_PATH_LEN ];__le32 total_segments; } __attribute__((packed)); +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct f2fs_super_block {__le32 magic;/* Magic Number */ __le16 major_ver;/* Major Version */
@@ -619,7 +623,9 @@ struct f2fs_super_block {#define CP_ORPHAN_PRESENT_FLAG 0x00000002#define CP_UMOUNT_FLAG 0x00000001 +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct f2fs_checkpoint {__le64 checkpoint_ver;/* checkpoint block version number */ __le64 user_block_count;/* # of user blocks */
@@ -656,7 +662,9 @@ struct f2fs_checkpoint {*/ #define F2FS_ORPHANS_PER_BLOCK 1020 +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct f2fs_orphan_block {__le32 ino[F2FS_ORPHANS_PER_BLOCK ];/* inode numbers */ __le32 reserved;/* reserved */
@@ -669,7 +677,9 @@ struct f2fs_orphan_block {/* * For NODE structure */ +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct f2fs_extent {__le32 fofs;/* start file offset of the extent */ __le32 blk_addr;/* start block address of the extent */
@@ -736,7 +746,9 @@ struct f2fs_extent {#define file_is_encrypt (fi) ((fi)->i_advise & FADVISE_ENCRYPT_BIT)#define file_enc_name (fi) ((fi)->i_advise & FADVISE_ENC_NAME_BIT) +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct f2fs_inode {__le16 i_mode;/* file mode */ __u8 i_advise;/* file hints */
@@ -778,12 +790,16 @@ struct f2fs_inode { } __attribute__((packed)); +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct direct_node {__le32 addr[ADDRS_PER_BLOCK ];/* array of data block address */ } __attribute__((packed)); +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct indirect_node {__le32 nid[NIDS_PER_BLOCK ];/* array of data block address */ } __attribute__((packed));
@@ -797,7 +813,9 @@ enum {#define XATTR_NODE_OFFSET ((((unsigned int)-1) << OFFSET_BIT_SHIFT) \ >> OFFSET_BIT_SHIFT) +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct node_footer {__le32 nid;/* node id */ __le32 ino;/* inode nunmber */
@@ -806,7 +824,9 @@ struct node_footer {__le32 next_blkaddr;/* next node page block address */ } __attribute__((packed)); +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct f2fs_node {/* can be one of three types: inode, direct, and indirect types */ union {
@@ -823,14 +843,18 @@ struct f2fs_node {#define NAT_ENTRY_PER_BLOCK (PAGE_CACHE_SIZE / sizeof(struct f2fs_nat_entry))#define NAT_BLOCK_OFFSET (start_nid) (start_nid / NAT_ENTRY_PER_BLOCK) +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct f2fs_nat_entry {__u8 version;/* latest version of cached nat entry */ __le32 ino;/* inode number */ __le32 block_addr;/* block address */ } __attribute__((packed)); +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct f2fs_nat_block {struct f2fs_nat_entry entries[NAT_ENTRY_PER_BLOCK ]; } __attribute__((packed));
@@ -867,14 +891,18 @@ struct f2fs_nat_block { ((le16_to_cpu ((raw_sit)->vblocks) & ~SIT_VBLOCKS_MASK ) \ >> SIT_VBLOCKS_SHIFT) +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct f2fs_sit_entry {__le16 vblocks;/* reference above */ __u8 valid_map[SIT_VBLOCK_MAP_SIZE ];/* bitmap for valid blocks */ __le64 mtime;/* segment age for cleaning */ } __attribute__((packed)); +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct f2fs_sit_block {struct f2fs_sit_entry entries[SIT_ENTRY_PER_BLOCK ]; } __attribute__((packed));
@@ -900,12 +928,16 @@ struct f2fs_sit_block {#define SUM_ENTRIES_SIZE (SUMMARY_SIZE * ENTRIES_IN_SUM)/* a summary entry for a 4KB-sized block in a segment */ +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct f2fs_summary { __le32 nid; /* parent node id */ union { __u8 reserved[3]; +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct { __u8 version; /* node version number */ __le16 ofs_in_node; /* block index in parent node */
@@ -917,7 +949,9 @@ struct f2fs_summary {#define SUM_TYPE_NODE (1)#define SUM_TYPE_DATA (0) +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct summary_footer {unsigned char entry_type;/* SUM_TYPE_XXX */ __le32 check_sum;/* summary checksum */
@@ -949,37 +983,49 @@ enum {SIT_JOURNAL }; +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct nat_journal_entry {__le32 nid;struct f2fs_nat_entry ne; } __attribute__((packed)); +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct nat_journal {struct nat_journal_entry entries[NAT_JOURNAL_ENTRIES ];__u8 reserved[NAT_JOURNAL_RESERVED ]; } __attribute__((packed)); +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct sit_journal_entry {__le32 segno;struct f2fs_sit_entry se; } __attribute__((packed)); +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct sit_journal {struct sit_journal_entry entries[SIT_JOURNAL_ENTRIES ];__u8 reserved[SIT_JOURNAL_RESERVED ]; } __attribute__((packed)); +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct f2fs_extra_info {__le64 kbytes_written;__u8 reserved[EXTRA_INFO_RESERVED ]; } __attribute__((packed)); +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct f2fs_journal { union { __le16 n_nats;
@@ -994,7 +1040,9 @@ struct f2fs_journal { } __attribute__((packed));/* 4KB-sized summary block structure */ +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct f2fs_summary_block {struct f2fs_summary entries[ENTRIES_IN_SUM ];struct f2fs_journal journal;
@@ -1034,7 +1082,9 @@ typedef __le32 f2fs_hash_t; NR_DENTRY_IN_BLOCK + SIZE_OF_DENTRY_BITMAP))/* One directory entry slot representing F2FS_SLOT_LEN-sized file name */ +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct f2fs_dir_entry {__le32 hash_code;/* hash code of file name */ __le32 ino;/* inode number */
@@ -1043,7 +1093,9 @@ struct f2fs_dir_entry { } __attribute__((packed));/* 4KB-sized directory entry block */ +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct f2fs_dentry_block {/* validity bitmap for directory entries in each block */ __u8 dentry_bitmap[SIZE_OF_DENTRY_BITMAP ];
include/quota.h +6 -0
@@ -44,14 +44,18 @@ enum quota_type {#define QT_TREEOFF 1/* Offset of tree in file in blocks */ +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct v2_disk_dqheader {u_int32_t dqh_magic;/* Magic number identifying file */ u_int32_t dqh_version;/* File version */ } __attribute__ ((packed));/* Header with type and version specific information */ +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct v2_disk_dqinfo {u_int32_t dqi_bgrace;/* Time before block soft limit becomes hard limit */ u_int32_t dqi_igrace;/* Time before inode soft limit becomes hard limit */
@@ -61,7 +65,9 @@ struct v2_disk_dqinfo {u_int32_t dqi_free_entry;/* Number of block with at least one free entry */ } __attribute__ ((packed)); +#ifdef ANDROID_WINDOWS_HOST #pragma pack(1) +#endif struct v2r1_disk_dqblk {__le32 dqb_id;/* id this quota applies to */ __le32 dqb_pad;
Signature · 6 lines
2.15.0.531.g2ccb3012c9-goog ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot