(long long)(int)sizeof(((struct fiemap *)0)->fm_reserved));
LASSERTF((int)offsetof(struct fiemap, fm_extents) == 32, "found %lld\n",
(long long)(int)offsetof(struct fiemap, fm_extents));
- LASSERTF((int)sizeof(((struct fiemap *)0)->fm_extents) == 0, "found %lld\n",
- (long long)(int)sizeof(((struct fiemap *)0)->fm_extents));
+ BUILD_BUG_ON(offsetof(struct fiemap, fm_extents) != sizeof(struct fiemap));
BUILD_BUG_ON(FIEMAP_FLAG_SYNC != 0x00000001);
BUILD_BUG_ON(FIEMAP_FLAG_XATTR != 0x00000002);
BUILD_BUG_ON(FIEMAP_FLAG_DEVICE_ORDER != 0x40000000);
#define STRINGIFY(a) #a
+#define CHECK_BUILD_TEST(a) \
+ printf(" BUILD_BUG_ON("#a");\n")
+
#define CHECK_CDEFINE(a) \
printf(" BUILD_BUG_ON("#a" != "STRINGIFY(a) ");\n")
CHECK_VALUE((int)sizeof(((s *)0)->m)); \
} while(0)
+#define CHECK_MEMBER_IS_FLEXIBLE_OR_ZERO_LENGTH(s, m) \
+do { \
+ CHECK_MEMBER_OFFSET(s, m); \
+ CHECK_BUILD_TEST(offsetof(struct s, m) != sizeof(struct s)); \
+} while (0)
+
#define CHECK_MEMBER(s, m) \
do { \
CHECK_MEMBER_OFFSET(s, m); \
CHECK_MEMBER(fiemap, fm_mapped_extents);
CHECK_MEMBER(fiemap, fm_extent_count);
CHECK_MEMBER(fiemap, fm_reserved);
- CHECK_MEMBER(fiemap, fm_extents);
+ CHECK_MEMBER_IS_FLEXIBLE_OR_ZERO_LENGTH(fiemap, fm_extents);
CHECK_CDEFINE(FIEMAP_FLAG_SYNC);
CHECK_CDEFINE(FIEMAP_FLAG_XATTR);
(long long)(int)sizeof(((struct fiemap *)0)->fm_reserved));
LASSERTF((int)offsetof(struct fiemap, fm_extents) == 32, "found %lld\n",
(long long)(int)offsetof(struct fiemap, fm_extents));
- LASSERTF((int)sizeof(((struct fiemap *)0)->fm_extents) == 0, "found %lld\n",
- (long long)(int)sizeof(((struct fiemap *)0)->fm_extents));
+ BUILD_BUG_ON(offsetof(struct fiemap, fm_extents) != sizeof(struct fiemap));
BUILD_BUG_ON(FIEMAP_FLAG_SYNC != 0x00000001);
BUILD_BUG_ON(FIEMAP_FLAG_XATTR != 0x00000002);
BUILD_BUG_ON(FIEMAP_FLAG_DEVICE_ORDER != 0x40000000);