Linux-2.6.12-rc2
[linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git] / fs / isofs / rock.h
blobdeaf5c8e8b4a5693665630bd7b17a2af79766417
1 /* These structs are used by the system-use-sharing protocol, in which the
2 Rock Ridge extensions are embedded. It is quite possible that other
3 extensions are present on the disk, and this is fine as long as they
4 all use SUSP */
6 struct SU_SP{
7 unsigned char magic[2];
8 unsigned char skip;
9 } __attribute__((packed));
11 struct SU_CE{
12 char extent[8];
13 char offset[8];
14 char size[8];
17 struct SU_ER{
18 unsigned char len_id;
19 unsigned char len_des;
20 unsigned char len_src;
21 unsigned char ext_ver;
22 char data[0];
23 } __attribute__((packed));
25 struct RR_RR{
26 char flags[1];
27 } __attribute__((packed));
29 struct RR_PX{
30 char mode[8];
31 char n_links[8];
32 char uid[8];
33 char gid[8];
36 struct RR_PN{
37 char dev_high[8];
38 char dev_low[8];
42 struct SL_component{
43 unsigned char flags;
44 unsigned char len;
45 char text[0];
46 } __attribute__((packed));
48 struct RR_SL{
49 unsigned char flags;
50 struct SL_component link;
51 } __attribute__((packed));
53 struct RR_NM{
54 unsigned char flags;
55 char name[0];
56 } __attribute__((packed));
58 struct RR_CL{
59 char location[8];
62 struct RR_PL{
63 char location[8];
66 struct stamp{
67 char time[7];
68 } __attribute__((packed));
70 struct RR_TF{
71 char flags;
72 struct stamp times[0]; /* Variable number of these beasts */
73 } __attribute__((packed));
75 /* Linux-specific extension for transparent decompression */
76 struct RR_ZF{
77 char algorithm[2];
78 char parms[2];
79 char real_size[8];
82 /* These are the bits and their meanings for flags in the TF structure. */
83 #define TF_CREATE 1
84 #define TF_MODIFY 2
85 #define TF_ACCESS 4
86 #define TF_ATTRIBUTES 8
87 #define TF_BACKUP 16
88 #define TF_EXPIRATION 32
89 #define TF_EFFECTIVE 64
90 #define TF_LONG_FORM 128
92 struct rock_ridge{
93 char signature[2];
94 unsigned char len;
95 unsigned char version;
96 union{
97 struct SU_SP SP;
98 struct SU_CE CE;
99 struct SU_ER ER;
100 struct RR_RR RR;
101 struct RR_PX PX;
102 struct RR_PN PN;
103 struct RR_SL SL;
104 struct RR_NM NM;
105 struct RR_CL CL;
106 struct RR_PL PL;
107 struct RR_TF TF;
108 struct RR_ZF ZF;
109 } u;
112 #define RR_PX 1 /* POSIX attributes */
113 #define RR_PN 2 /* POSIX devices */
114 #define RR_SL 4 /* Symbolic link */
115 #define RR_NM 8 /* Alternate Name */
116 #define RR_CL 16 /* Child link */
117 #define RR_PL 32 /* Parent link */
118 #define RR_RE 64 /* Relocation directory */
119 #define RR_TF 128 /* Timestamps */