/usr/include/linux/iso_fs.h is in linux-libc-dev 4.15.0-20.21.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 | /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _ISOFS_FS_H
#define _ISOFS_FS_H
#include <linux/types.h>
#include <linux/magic.h>
/*
* The isofs filesystem constants/structures
*/
/* This part borrowed from the bsd386 isofs */
#define ISODCL(from, to) (to - from + 1)
struct iso_volume_descriptor {
__u8 type[ISODCL(1,1)]; /* 711 */
char id[ISODCL(2,6)];
__u8 version[ISODCL(7,7)];
__u8 data[ISODCL(8,2048)];
};
/* volume descriptor types */
#define ISO_VD_PRIMARY 1
#define ISO_VD_SUPPLEMENTARY 2
#define ISO_VD_END 255
#define ISO_STANDARD_ID "CD001"
struct iso_primary_descriptor {
__u8 type [ISODCL ( 1, 1)]; /* 711 */
char id [ISODCL ( 2, 6)];
__u8 version [ISODCL ( 7, 7)]; /* 711 */
__u8 unused1 [ISODCL ( 8, 8)];
char system_id [ISODCL ( 9, 40)]; /* achars */
char volume_id [ISODCL ( 41, 72)]; /* dchars */
__u8 unused2 [ISODCL ( 73, 80)];
__u8 volume_space_size [ISODCL ( 81, 88)]; /* 733 */
__u8 unused3 [ISODCL ( 89, 120)];
__u8 volume_set_size [ISODCL (121, 124)]; /* 723 */
__u8 volume_sequence_number [ISODCL (125, 128)]; /* 723 */
__u8 logical_block_size [ISODCL (129, 132)]; /* 723 */
__u8 path_table_size [ISODCL (133, 140)]; /* 733 */
__u8 type_l_path_table [ISODCL (141, 144)]; /* 731 */
__u8 opt_type_l_path_table [ISODCL (145, 148)]; /* 731 */
__u8 type_m_path_table [ISODCL (149, 152)]; /* 732 */
__u8 opt_type_m_path_table [ISODCL (153, 156)]; /* 732 */
__u8 root_directory_record [ISODCL (157, 190)]; /* 9.1 */
char volume_set_id [ISODCL (191, 318)]; /* dchars */
char publisher_id [ISODCL (319, 446)]; /* achars */
char preparer_id [ISODCL (447, 574)]; /* achars */
char application_id [ISODCL (575, 702)]; /* achars */
char copyright_file_id [ISODCL (703, 739)]; /* 7.5 dchars */
char abstract_file_id [ISODCL (740, 776)]; /* 7.5 dchars */
char bibliographic_file_id [ISODCL (777, 813)]; /* 7.5 dchars */
__u8 creation_date [ISODCL (814, 830)]; /* 8.4.26.1 */
__u8 modification_date [ISODCL (831, 847)]; /* 8.4.26.1 */
__u8 expiration_date [ISODCL (848, 864)]; /* 8.4.26.1 */
__u8 effective_date [ISODCL (865, 881)]; /* 8.4.26.1 */
__u8 file_structure_version [ISODCL (882, 882)]; /* 711 */
__u8 unused4 [ISODCL (883, 883)];
__u8 application_data [ISODCL (884, 1395)];
__u8 unused5 [ISODCL (1396, 2048)];
};
/* Almost the same as the primary descriptor but two fields are specified */
struct iso_supplementary_descriptor {
__u8 type [ISODCL ( 1, 1)]; /* 711 */
char id [ISODCL ( 2, 6)];
__u8 version [ISODCL ( 7, 7)]; /* 711 */
__u8 flags [ISODCL ( 8, 8)]; /* 853 */
char system_id [ISODCL ( 9, 40)]; /* achars */
char volume_id [ISODCL ( 41, 72)]; /* dchars */
__u8 unused2 [ISODCL ( 73, 80)];
__u8 volume_space_size [ISODCL ( 81, 88)]; /* 733 */
__u8 escape [ISODCL ( 89, 120)]; /* 856 */
__u8 volume_set_size [ISODCL (121, 124)]; /* 723 */
__u8 volume_sequence_number [ISODCL (125, 128)]; /* 723 */
__u8 logical_block_size [ISODCL (129, 132)]; /* 723 */
__u8 path_table_size [ISODCL (133, 140)]; /* 733 */
__u8 type_l_path_table [ISODCL (141, 144)]; /* 731 */
__u8 opt_type_l_path_table [ISODCL (145, 148)]; /* 731 */
__u8 type_m_path_table [ISODCL (149, 152)]; /* 732 */
__u8 opt_type_m_path_table [ISODCL (153, 156)]; /* 732 */
__u8 root_directory_record [ISODCL (157, 190)]; /* 9.1 */
char volume_set_id [ISODCL (191, 318)]; /* dchars */
char publisher_id [ISODCL (319, 446)]; /* achars */
char preparer_id [ISODCL (447, 574)]; /* achars */
char application_id [ISODCL (575, 702)]; /* achars */
char copyright_file_id [ISODCL (703, 739)]; /* 7.5 dchars */
char abstract_file_id [ISODCL (740, 776)]; /* 7.5 dchars */
char bibliographic_file_id [ISODCL (777, 813)]; /* 7.5 dchars */
__u8 creation_date [ISODCL (814, 830)]; /* 8.4.26.1 */
__u8 modification_date [ISODCL (831, 847)]; /* 8.4.26.1 */
__u8 expiration_date [ISODCL (848, 864)]; /* 8.4.26.1 */
__u8 effective_date [ISODCL (865, 881)]; /* 8.4.26.1 */
__u8 file_structure_version [ISODCL (882, 882)]; /* 711 */
__u8 unused4 [ISODCL (883, 883)];
__u8 application_data [ISODCL (884, 1395)];
__u8 unused5 [ISODCL (1396, 2048)];
};
#define HS_STANDARD_ID "CDROM"
struct hs_volume_descriptor {
__u8 foo [ISODCL ( 1, 8)]; /* 733 */
__u8 type [ISODCL ( 9, 9)]; /* 711 */
char id [ISODCL ( 10, 14)];
__u8 version [ISODCL ( 15, 15)]; /* 711 */
__u8 data[ISODCL(16,2048)];
};
struct hs_primary_descriptor {
__u8 foo [ISODCL ( 1, 8)]; /* 733 */
__u8 type [ISODCL ( 9, 9)]; /* 711 */
__u8 id [ISODCL ( 10, 14)];
__u8 version [ISODCL ( 15, 15)]; /* 711 */
__u8 unused1 [ISODCL ( 16, 16)]; /* 711 */
char system_id [ISODCL ( 17, 48)]; /* achars */
char volume_id [ISODCL ( 49, 80)]; /* dchars */
__u8 unused2 [ISODCL ( 81, 88)]; /* 733 */
__u8 volume_space_size [ISODCL ( 89, 96)]; /* 733 */
__u8 unused3 [ISODCL ( 97, 128)]; /* 733 */
__u8 volume_set_size [ISODCL (129, 132)]; /* 723 */
__u8 volume_sequence_number [ISODCL (133, 136)]; /* 723 */
__u8 logical_block_size [ISODCL (137, 140)]; /* 723 */
__u8 path_table_size [ISODCL (141, 148)]; /* 733 */
__u8 type_l_path_table [ISODCL (149, 152)]; /* 731 */
__u8 unused4 [ISODCL (153, 180)]; /* 733 */
__u8 root_directory_record [ISODCL (181, 214)]; /* 9.1 */
};
/* We use this to help us look up the parent inode numbers. */
struct iso_path_table{
__u8 name_len[2]; /* 721 */
__u8 extent[4]; /* 731 */
__u8 parent[2]; /* 721 */
char name[0];
} __attribute__((packed));
/* high sierra is identical to iso, except that the date is only 6 bytes, and
there is an extra reserved byte after the flags */
struct iso_directory_record {
__u8 length [ISODCL (1, 1)]; /* 711 */
__u8 ext_attr_length [ISODCL (2, 2)]; /* 711 */
__u8 extent [ISODCL (3, 10)]; /* 733 */
__u8 size [ISODCL (11, 18)]; /* 733 */
__u8 date [ISODCL (19, 25)]; /* 7 by 711 */
__u8 flags [ISODCL (26, 26)];
__u8 file_unit_size [ISODCL (27, 27)]; /* 711 */
__u8 interleave [ISODCL (28, 28)]; /* 711 */
__u8 volume_sequence_number [ISODCL (29, 32)]; /* 723 */
__u8 name_len [ISODCL (33, 33)]; /* 711 */
char name [0];
} __attribute__((packed));
#define ISOFS_BLOCK_BITS 11
#define ISOFS_BLOCK_SIZE 2048
#define ISOFS_BUFFER_SIZE(INODE) ((INODE)->i_sb->s_blocksize)
#define ISOFS_BUFFER_BITS(INODE) ((INODE)->i_sb->s_blocksize_bits)
#endif /* _ISOFS_FS_H */
|