md: Allow read error in a single drive raid1 to be passed up.
[linux-2.6] / include / mtd / nftl-user.h
1 /*
2  * Parts of NFTL headers shared with userspace
3  *
4  */
5
6 #ifndef __MTD_NFTL_USER_H__
7 #define __MTD_NFTL_USER_H__
8
9 /* Block Control Information */
10
11 struct nftl_bci {
12         unsigned char ECCSig[6];
13         uint8_t Status;
14         uint8_t Status1;
15 }__attribute__((packed));
16
17 /* Unit Control Information */
18
19 struct nftl_uci0 {
20         uint16_t VirtUnitNum;
21         uint16_t ReplUnitNum;
22         uint16_t SpareVirtUnitNum;
23         uint16_t SpareReplUnitNum;
24 } __attribute__((packed));
25
26 struct nftl_uci1 {
27         uint32_t WearInfo;
28         uint16_t EraseMark;
29         uint16_t EraseMark1;
30 } __attribute__((packed));
31
32 struct nftl_uci2 {
33         uint16_t FoldMark;
34         uint16_t FoldMark1;
35         uint32_t unused;
36 } __attribute__((packed));
37
38 union nftl_uci {
39         struct nftl_uci0 a;
40         struct nftl_uci1 b;
41         struct nftl_uci2 c;
42 };
43
44 struct nftl_oob {
45         struct nftl_bci b;
46         union nftl_uci u;
47 };
48
49 /* NFTL Media Header */
50
51 struct NFTLMediaHeader {
52         char DataOrgID[6];
53         uint16_t NumEraseUnits;
54         uint16_t FirstPhysicalEUN;
55         uint32_t FormattedSize;
56         unsigned char UnitSizeFactor;
57 } __attribute__((packed));
58
59 #define MAX_ERASE_ZONES (8192 - 512)
60
61 #define ERASE_MARK 0x3c69
62 #define SECTOR_FREE 0xff
63 #define SECTOR_USED 0x55
64 #define SECTOR_IGNORE 0x11
65 #define SECTOR_DELETED 0x00
66
67 #define FOLD_MARK_IN_PROGRESS 0x5555
68
69 #define ZONE_GOOD 0xff
70 #define ZONE_BAD_ORIGINAL 0
71 #define ZONE_BAD_MARKED 7
72
73
74 #endif /* __MTD_NFTL_USER_H__ */