130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Name : qnx4_fs.h 330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Author : Richard Frowijn 430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Function : qnx4 global filesystem definitions 530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * History : 23-03-1998 created 630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _LINUX_QNX4_FS_H 830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _LINUX_QNX4_FS_H 930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h> 1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/qnxtypes.h> 1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/magic.h> 1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define QNX4_ROOT_INO 1 1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define QNX4_MAX_XTNTS_PER_XBLK 60 1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* for di_status */ 1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define QNX4_FILE_USED 0x01 1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define QNX4_FILE_MODIFIED 0x02 2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define QNX4_FILE_BUSY 0x04 2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define QNX4_FILE_LINK 0x08 2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define QNX4_FILE_INODE 0x10 2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define QNX4_FILE_FSYSCLEAN 0x20 2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define QNX4_I_MAP_SLOTS 8 2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define QNX4_Z_MAP_SLOTS 64 2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define QNX4_VALID_FS 0x0001 /* Clean fs. */ 2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define QNX4_ERROR_FS 0x0002 /* fs has errors. */ 2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define QNX4_BLOCK_SIZE 0x200 /* blocksize of 512 bytes */ 3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define QNX4_BLOCK_SIZE_BITS 9 /* blocksize shift */ 3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define QNX4_DIR_ENTRY_SIZE 0x040 /* dir entry size of 64 bytes */ 3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define QNX4_DIR_ENTRY_SIZE_BITS 6 /* dir entry size shift */ 3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define QNX4_XBLK_ENTRY_SIZE 0x200 /* xblk entry size */ 3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define QNX4_INODES_PER_BLOCK 0x08 /* 512 / 64 */ 3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* for filenames */ 3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define QNX4_SHORT_NAME_MAX 16 3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define QNX4_NAME_MAX 48 3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * This is the original qnx4 inode layout on disk. 4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 4330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct qnx4_inode_entry { 4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char di_fname[QNX4_SHORT_NAME_MAX]; 4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng qnx4_off_t di_size; 4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng qnx4_xtnt_t di_first_xtnt; 4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __le32 di_xblk; 4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __le32 di_ftime; 4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __le32 di_mtime; 5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __le32 di_atime; 5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __le32 di_ctime; 5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng qnx4_nxtnt_t di_num_xtnts; 5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng qnx4_mode_t di_mode; 5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng qnx4_muid_t di_uid; 5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng qnx4_mgid_t di_gid; 5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng qnx4_nlink_t di_nlink; 5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 di_zero[4]; 5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng qnx4_ftype_t di_type; 5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 di_status; 6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 6230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct qnx4_link_info { 6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char dl_fname[QNX4_NAME_MAX]; 6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __le32 dl_inode_blk; 6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 dl_inode_ndx; 6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 dl_spare[10]; 6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 dl_status; 6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 7030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct qnx4_xblk { 7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __le32 xblk_next_xblk; 7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __le32 xblk_prev_xblk; 7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 xblk_num_xtnts; 7430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 xblk_spare[3]; 7530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __le32 xblk_num_blocks; 7630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng qnx4_xtnt_t xblk_xtnts[QNX4_MAX_XTNTS_PER_XBLK]; 7730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char xblk_signature[8]; 7830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng qnx4_xtnt_t xblk_first_xtnt; 7930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 8030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 8130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct qnx4_super_block { 8230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct qnx4_inode_entry RootDir; 8330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct qnx4_inode_entry Inode; 8430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct qnx4_inode_entry Boot; 8530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct qnx4_inode_entry AltBoot; 8630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 8730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 8830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif 89