Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  *   Copyright (C) International Business Machines Corp., 2000-2003
0004  */
0005 #ifndef _H_JFS_SUPERBLOCK
0006 #define _H_JFS_SUPERBLOCK
0007 
0008 #include <linux/uuid.h>
0009 
0010 /*
0011  * make the magic number something a human could read
0012  */
0013 #define JFS_MAGIC   "JFS1"  /* Magic word */
0014 
0015 #define JFS_VERSION 2   /* Version number: Version 2 */
0016 
0017 #define LV_NAME_SIZE    11  /* MUST BE 11 for OS/2 boot sector */
0018 
0019 /*
0020  *  aggregate superblock
0021  *
0022  * The name superblock is too close to super_block, so the name has been
0023  * changed to jfs_superblock.  The utilities are still using the old name.
0024  */
0025 struct jfs_superblock {
0026     char s_magic[4];    /* 4: magic number */
0027     __le32 s_version;   /* 4: version number */
0028 
0029     __le64 s_size;      /* 8: aggregate size in hardware/LVM blocks;
0030                  * VFS: number of blocks
0031                  */
0032     __le32 s_bsize;     /* 4: aggregate block size in bytes;
0033                  * VFS: fragment size
0034                  */
0035     __le16 s_l2bsize;   /* 2: log2 of s_bsize */
0036     __le16 s_l2bfactor; /* 2: log2(s_bsize/hardware block size) */
0037     __le32 s_pbsize;    /* 4: hardware/LVM block size in bytes */
0038     __le16 s_l2pbsize;  /* 2: log2 of s_pbsize */
0039     __le16 pad;     /* 2: padding necessary for alignment */
0040 
0041     __le32 s_agsize;    /* 4: allocation group size in aggr. blocks */
0042 
0043     __le32 s_flag;      /* 4: aggregate attributes:
0044                  *    see jfs_filsys.h
0045                  */
0046     __le32 s_state;     /* 4: mount/unmount/recovery state:
0047                  *    see jfs_filsys.h
0048                  */
0049     __le32 s_compress;      /* 4: > 0 if data compression */
0050 
0051     pxd_t s_ait2;       /* 8: first extent of secondary
0052                  *    aggregate inode table
0053                  */
0054 
0055     pxd_t s_aim2;       /* 8: first extent of secondary
0056                  *    aggregate inode map
0057                  */
0058     __le32 s_logdev;        /* 4: device address of log */
0059     __le32 s_logserial; /* 4: log serial number at aggregate mount */
0060     pxd_t s_logpxd;     /* 8: inline log extent */
0061 
0062     pxd_t s_fsckpxd;    /* 8: inline fsck work space extent */
0063 
0064     struct timestruc_t s_time;  /* 8: time last updated */
0065 
0066     __le32 s_fsckloglen;    /* 4: Number of filesystem blocks reserved for
0067                  *    the fsck service log.
0068                  *    N.B. These blocks are divided among the
0069                  *         versions kept.  This is not a per
0070                  *         version size.
0071                  *    N.B. These blocks are included in the
0072                  *         length field of s_fsckpxd.
0073                  */
0074     s8 s_fscklog;       /* 1: which fsck service log is most recent
0075                  *    0 => no service log data yet
0076                  *    1 => the first one
0077                  *    2 => the 2nd one
0078                  */
0079     char s_fpack[11];   /* 11: file system volume name
0080                  *     N.B. This must be 11 bytes to
0081                  *          conform with the OS/2 BootSector
0082                  *          requirements
0083                  *          Only used when s_version is 1
0084                  */
0085 
0086     /* extendfs() parameter under s_state & FM_EXTENDFS */
0087     __le64 s_xsize;     /* 8: extendfs s_size */
0088     pxd_t s_xfsckpxd;   /* 8: extendfs fsckpxd */
0089     pxd_t s_xlogpxd;    /* 8: extendfs logpxd */
0090     uuid_t s_uuid;      /* 16: 128-bit uuid for volume */
0091     char s_label[16];   /* 16: volume label */
0092     uuid_t s_loguuid;   /* 16: 128-bit uuid for log device */
0093 
0094 };
0095 
0096 extern int readSuper(struct super_block *, struct buffer_head **);
0097 extern int updateSuper(struct super_block *, uint);
0098 __printf(2, 3)
0099 extern void jfs_error(struct super_block *, const char *, ...);
0100 extern int jfs_mount(struct super_block *);
0101 extern int jfs_mount_rw(struct super_block *, int);
0102 extern int jfs_umount(struct super_block *);
0103 extern int jfs_umount_rw(struct super_block *);
0104 extern int jfs_extendfs(struct super_block *, s64, int);
0105 
0106 extern struct task_struct *jfsIOthread;
0107 extern struct task_struct *jfsSyncThread;
0108 
0109 #endif /*_H_JFS_SUPERBLOCK */