| #ifndef __GFS2_FS_H |
| #define __GFS2_FS_H |
| |
| #define GFS2_MAGIC 0x01161970 |
| #define GFS2_FORMAT_FS 1801 |
| #define GFS2_FORMAT_MULTI 1900 |
| |
| |
| /* |
| * An on-disk inode number |
| */ |
| struct gfs2_inum { |
| __be64 no_formal_ino; |
| __be64 no_addr; |
| }; |
| |
| /* |
| * Generic metadata head structure |
| * Every inplace buffer logged in the journal must start with this. |
| */ |
| struct gfs2_meta_header { |
| uint32_t mh_magic; |
| uint32_t mh_type; |
| uint64_t __pad0; /* Was generation number in gfs1 */ |
| uint32_t mh_format; |
| uint32_t __pad1; /* Was incarnation number in gfs1 */ |
| }; |
| |
| /* Requirement: GFS2_LOCKNAME_LEN % 8 == 0 |
| * Includes: the fencing zero at the end */ |
| #define GFS2_LOCKNAME_LEN 64 |
| |
| /* |
| * super-block structure |
| */ |
| struct gfs2_sb { |
| struct gfs2_meta_header sb_header; |
| |
| uint32_t sb_fs_format; |
| uint32_t sb_multihost_format; |
| uint32_t __pad0; /* Was superblock flags in gfs1 */ |
| |
| uint32_t sb_bsize; |
| uint32_t sb_bsize_shift; |
| uint32_t __pad1; /* Was journal segment size in gfs1 */ |
| |
| struct gfs2_inum sb_master_dir; /* Was jindex dinode in gfs1 */ |
| struct gfs2_inum __pad2; /* Was rindex dinode in gfs1 */ |
| struct gfs2_inum sb_root_dir; |
| |
| char sb_lockproto[GFS2_LOCKNAME_LEN]; |
| char sb_locktable[GFS2_LOCKNAME_LEN]; |
| /* In gfs1, quota and license dinodes followed */ |
| } __attribute__ ((__packed__)); |
| |
| #endif /* __GFS2_FS_H */ |