2005-04-17 02:20:36 +04:00
/*
* Copyright ( C ) International Business Machines Corp . , 2000 - 2003
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
2006-10-02 18:55:27 +04:00
* the Free Software Foundation ; either version 2 of the License , or
2005-04-17 02:20:36 +04:00
* ( at your option ) any later version .
2006-10-02 18:55:27 +04:00
*
2005-04-17 02:20:36 +04:00
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See
* the GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
2006-10-02 18:55:27 +04:00
* along with this program ; if not , write to the Free Software
2005-04-17 02:20:36 +04:00
* Foundation , Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
*/
# ifndef _H_JFS_SUPERBLOCK
# define _H_JFS_SUPERBLOCK
/*
* make the magic number something a human could read
*/
2006-10-02 18:55:27 +04:00
# define JFS_MAGIC "JFS1" /* Magic word */
2005-04-17 02:20:36 +04:00
# define JFS_VERSION 2 /* Version number: Version 2 */
# define LV_NAME_SIZE 11 /* MUST BE 11 for OS/2 boot sector */
2006-10-02 18:55:27 +04:00
/*
* aggregate superblock
2005-04-17 02:20:36 +04:00
*
* The name superblock is too close to super_block , so the name has been
* changed to jfs_superblock . The utilities are still using the old name .
*/
struct jfs_superblock {
char s_magic [ 4 ] ; /* 4: magic number */
__le32 s_version ; /* 4: version number */
__le64 s_size ; /* 8: aggregate size in hardware/LVM blocks;
* VFS : number of blocks
*/
2006-10-02 18:55:27 +04:00
__le32 s_bsize ; /* 4: aggregate block size in bytes;
2005-04-17 02:20:36 +04:00
* VFS : fragment size
*/
__le16 s_l2bsize ; /* 2: log2 of s_bsize */
__le16 s_l2bfactor ; /* 2: log2(s_bsize/hardware block size) */
__le32 s_pbsize ; /* 4: hardware/LVM block size in bytes */
__le16 s_l2pbsize ; /* 2: log2 of s_pbsize */
__le16 pad ; /* 2: padding necessary for alignment */
__le32 s_agsize ; /* 4: allocation group size in aggr. blocks */
__le32 s_flag ; /* 4: aggregate attributes:
* see jfs_filsys . h
*/
2006-10-02 18:55:27 +04:00
__le32 s_state ; /* 4: mount/unmount/recovery state:
2005-04-17 02:20:36 +04:00
* see jfs_filsys . h
*/
__le32 s_compress ; /* 4: > 0 if data compression */
pxd_t s_ait2 ; /* 8: first extent of secondary
* aggregate inode table
*/
pxd_t s_aim2 ; /* 8: first extent of secondary
* aggregate inode map
*/
__le32 s_logdev ; /* 4: device address of log */
__le32 s_logserial ; /* 4: log serial number at aggregate mount */
pxd_t s_logpxd ; /* 8: inline log extent */
pxd_t s_fsckpxd ; /* 8: inline fsck work space extent */
struct timestruc_t s_time ; /* 8: time last updated */
__le32 s_fsckloglen ; /* 4: Number of filesystem blocks reserved for
2006-10-02 18:55:27 +04:00
* the fsck service log .
2005-04-17 02:20:36 +04:00
* N . B . These blocks are divided among the
* versions kept . This is not a per
* version size .
2006-10-02 18:55:27 +04:00
* N . B . These blocks are included in the
2005-04-17 02:20:36 +04:00
* length field of s_fsckpxd .
*/
s8 s_fscklog ; /* 1: which fsck service log is most recent
* 0 = > no service log data yet
* 1 = > the first one
* 2 = > the 2 nd one
*/
2006-10-02 18:55:27 +04:00
char s_fpack [ 11 ] ; /* 11: file system volume name
2005-04-17 02:20:36 +04:00
* N . B . This must be 11 bytes to
* conform with the OS / 2 BootSector
* requirements
* Only used when s_version is 1
*/
/* extendfs() parameter under s_state & FM_EXTENDFS */
__le64 s_xsize ; /* 8: extendfs s_size */
pxd_t s_xfsckpxd ; /* 8: extendfs fsckpxd */
pxd_t s_xlogpxd ; /* 8: extendfs logpxd */
/* - 128 byte boundary - */
char s_uuid [ 16 ] ; /* 16: 128-bit uuid for volume */
char s_label [ 16 ] ; /* 16: volume label */
char s_loguuid [ 16 ] ; /* 16: 128-bit uuid for log device */
} ;
extern int readSuper ( struct super_block * , struct buffer_head * * ) ;
extern int updateSuper ( struct super_block * , uint ) ;
2013-06-05 03:39:15 +04:00
__printf ( 2 , 3 )
2005-04-17 02:20:36 +04:00
extern void jfs_error ( struct super_block * , const char * , . . . ) ;
2005-05-05 00:29:35 +04:00
extern int jfs_mount ( struct super_block * ) ;
extern int jfs_mount_rw ( struct super_block * , int ) ;
extern int jfs_umount ( struct super_block * ) ;
extern int jfs_umount_rw ( struct super_block * ) ;
extern int jfs_extendfs ( struct super_block * , s64 , int ) ;
2005-04-17 02:20:36 +04:00
2006-02-15 21:49:04 +03:00
extern struct task_struct * jfsIOthread ;
extern struct task_struct * jfsSyncThread ;
2005-04-17 02:20:36 +04:00
# endif /*_H_JFS_SUPERBLOCK */