diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-03-23 16:36:45 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-03-31 16:03:16 -0400 |
commit | 39429c5e4a2c56a39c9a1c9bdad54431c63104b0 (patch) | |
tree | 06abc2a4ff8d323b0358b768a71c7b651c3229f3 /include/linux/ext2_fs.h | |
parent | 2f99c36986ff27a86f06f27212c5f5fa8c7164a3 (diff) |
new helper: ext2_image_size()
... implemented that way since the next commit will leave it
almost alone in ext2_fs.h - most of the file (including
struct ext2_super_block) is going to move to fs/ext2/ext2.h.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'include/linux/ext2_fs.h')
-rw-r--r-- | include/linux/ext2_fs.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/include/linux/ext2_fs.h b/include/linux/ext2_fs.h index f28dba518a4a..5f65ec75b48a 100644 --- a/include/linux/ext2_fs.h +++ b/include/linux/ext2_fs.h | |||
@@ -536,4 +536,26 @@ enum { | |||
536 | ~EXT2_DIR_ROUND) | 536 | ~EXT2_DIR_ROUND) |
537 | #define EXT2_MAX_REC_LEN ((1<<16)-1) | 537 | #define EXT2_MAX_REC_LEN ((1<<16)-1) |
538 | 538 | ||
539 | #define EXT2_SB_MAGIC_OFFSET 0x38 | ||
540 | #define EXT2_SB_BLOCKS_OFFSET 0x04 | ||
541 | #define EXT2_SB_BSIZE_OFFSET 0x18 | ||
542 | |||
543 | static inline u64 ext2_image_size(void *ext2_sb) | ||
544 | { | ||
545 | __u8 *p = ext2_sb; | ||
546 | if (*(__le16 *)(p + EXT2_SB_MAGIC_OFFSET) != cpu_to_le16(EXT2_SUPER_MAGIC)) | ||
547 | return 0; | ||
548 | return (u64)le32_to_cpup((__le32 *)(p + EXT2_SB_BLOCKS_OFFSET)) << | ||
549 | le32_to_cpup((__le32 *)(p + EXT2_SB_BSIZE_OFFSET)); | ||
550 | } | ||
551 | |||
552 | static inline void verify_offsets(void) | ||
553 | { | ||
554 | #define A(x,y) BUILD_BUG_ON(x != offsetof(struct ext2_super_block, y)); | ||
555 | A(EXT2_SB_MAGIC_OFFSET, s_magic); | ||
556 | A(EXT2_SB_BLOCKS_OFFSET, s_blocks_count); | ||
557 | A(EXT2_SB_BSIZE_OFFSET, s_log_block_size); | ||
558 | #undef A | ||
559 | } | ||
560 | |||
539 | #endif /* _LINUX_EXT2_FS_H */ | 561 | #endif /* _LINUX_EXT2_FS_H */ |