ocfs2: Add backup superblock info to ocfs2_fs.h

This synchronizes us with recent ocfs2-tools changes.

Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
This commit is contained in:
Mark Fasheh 2007-01-21 14:44:59 -08:00
parent 6a1bd4a578
commit 50af94b14c
1 changed files with 42 additions and 1 deletions

View File

@ -85,7 +85,7 @@
#define OCFS2_CLEAR_INCOMPAT_FEATURE(sb,mask) \ #define OCFS2_CLEAR_INCOMPAT_FEATURE(sb,mask) \
OCFS2_SB(sb)->s_feature_incompat &= ~(mask) OCFS2_SB(sb)->s_feature_incompat &= ~(mask)
#define OCFS2_FEATURE_COMPAT_SUPP 0 #define OCFS2_FEATURE_COMPAT_SUPP OCFS2_FEATURE_COMPAT_BACKUP_SB
#define OCFS2_FEATURE_INCOMPAT_SUPP OCFS2_FEATURE_INCOMPAT_LOCAL_MOUNT #define OCFS2_FEATURE_INCOMPAT_SUPP OCFS2_FEATURE_INCOMPAT_LOCAL_MOUNT
#define OCFS2_FEATURE_RO_COMPAT_SUPP 0 #define OCFS2_FEATURE_RO_COMPAT_SUPP 0
@ -109,6 +109,20 @@
/* Support for sparse allocation in b-trees */ /* Support for sparse allocation in b-trees */
#define OCFS2_FEATURE_INCOMPAT_SPARSE_ALLOC 0x0010 #define OCFS2_FEATURE_INCOMPAT_SPARSE_ALLOC 0x0010
/*
* backup superblock flag is used to indicate that this volume
* has backup superblocks.
*/
#define OCFS2_FEATURE_COMPAT_BACKUP_SB 0x0001
/* The byte offset of the first backup block will be 1G.
* The following will be 4G, 16G, 64G, 256G and 1T.
*/
#define OCFS2_BACKUP_SB_START 1 << 30
/* the max backup superblock nums */
#define OCFS2_MAX_BACKUP_SUPERBLOCKS 6
/* /*
* Flags on ocfs2_dinode.i_flags * Flags on ocfs2_dinode.i_flags
*/ */
@ -566,6 +580,20 @@ static inline int ocfs2_truncate_recs_per_inode(struct super_block *sb)
return size / sizeof(struct ocfs2_truncate_rec); return size / sizeof(struct ocfs2_truncate_rec);
} }
static inline u64 ocfs2_backup_super_blkno(struct super_block *sb, int index)
{
u64 offset = OCFS2_BACKUP_SB_START;
if (index >= 0 && index < OCFS2_MAX_BACKUP_SUPERBLOCKS) {
offset <<= (2 * index);
offset /= sb->s_blocksize;
return offset;
}
return 0;
}
#else #else
static inline int ocfs2_fast_symlink_chars(int blocksize) static inline int ocfs2_fast_symlink_chars(int blocksize)
{ {
@ -631,6 +659,19 @@ static inline int ocfs2_truncate_recs_per_inode(int blocksize)
return size / sizeof(struct ocfs2_truncate_rec); return size / sizeof(struct ocfs2_truncate_rec);
} }
static inline uint64_t ocfs2_backup_super_blkno(int blocksize, int index)
{
uint64_t offset = OCFS2_BACKUP_SB_START;
if (index >= 0 && index < OCFS2_MAX_BACKUP_SUPERBLOCKS) {
offset <<= (2 * index);
offset /= blocksize;
return offset;
}
return 0;
}
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */