2019-05-27 08:55:05 +02:00
/* SPDX-License-Identifier: GPL-2.0-or-later */
2005-04-16 15:20:36 -07:00
/*
* Copyright ( C ) International Business Machines Corp . , 2000 - 2003
*/
# ifndef _H_JFS_SUPERBLOCK
# define _H_JFS_SUPERBLOCK
2019-01-10 15:41:53 +02:00
# include <linux/uuid.h>
2005-04-16 15:20:36 -07:00
/*
* make the magic number something a human could read
*/
2006-10-02 09:55:27 -05:00
# define JFS_MAGIC "JFS1" /* Magic word */
2005-04-16 15:20:36 -07: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 09:55:27 -05:00
/*
* aggregate superblock
2005-04-16 15:20:36 -07: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 09:55:27 -05:00
__le32 s_bsize ; /* 4: aggregate block size in bytes;
2005-04-16 15:20:36 -07: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 09:55:27 -05:00
__le32 s_state ; /* 4: mount/unmount/recovery state:
2005-04-16 15:20:36 -07: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 09:55:27 -05:00
* the fsck service log .
2005-04-16 15:20:36 -07:00
* N . B . These blocks are divided among the
* versions kept . This is not a per
* version size .
2006-10-02 09:55:27 -05:00
* N . B . These blocks are included in the
2005-04-16 15:20:36 -07: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 09:55:27 -05:00
char s_fpack [ 11 ] ; /* 11: file system volume name
2005-04-16 15:20:36 -07: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 */
2019-01-10 15:41:53 +02:00
uuid_t s_uuid ; /* 16: 128-bit uuid for volume */
2005-04-16 15:20:36 -07:00
char s_label [ 16 ] ; /* 16: volume label */
2019-01-10 15:41:53 +02:00
uuid_t s_loguuid ; /* 16: 128-bit uuid for log device */
2005-04-16 15:20:36 -07:00
} ;
extern int readSuper ( struct super_block * , struct buffer_head * * ) ;
extern int updateSuper ( struct super_block * , uint ) ;
2013-06-04 16:39:15 -07:00
__printf ( 2 , 3 )
2005-04-16 15:20:36 -07:00
extern void jfs_error ( struct super_block * , const char * , . . . ) ;
2005-05-04 15:29:35 -05: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-16 15:20:36 -07:00
2006-02-15 12:49:04 -06:00
extern struct task_struct * jfsIOthread ;
extern struct task_struct * jfsSyncThread ;
2005-04-16 15:20:36 -07:00
# endif /*_H_JFS_SUPERBLOCK */