OpenCores
URL https://opencores.org/ocsvn/hf-risc/hf-risc/trunk

Subversion Repositories hf-risc

[/] [hf-risc/] [trunk/] [tools/] [riscv-gnu-toolchain-master/] [linux-headers/] [include/] [linux/] [raid/] [md_u.h] - Blame information for rev 13

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 13 serginhofr
/*
2
   md_u.h : user <=> kernel API between Linux raidtools and RAID drivers
3
          Copyright (C) 1998 Ingo Molnar
4
 
5
   This program is free software; you can redistribute it and/or modify
6
   it under the terms of the GNU General Public License as published by
7
   the Free Software Foundation; either version 2, or (at your option)
8
   any later version.
9
 
10
   You should have received a copy of the GNU General Public License
11
   (for example /usr/src/linux/COPYING); if not, write to the Free
12
   Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
13
*/
14
 
15
#ifndef _MD_U_H
16
#define _MD_U_H
17
 
18
/*
19
 * Different major versions are not compatible.
20
 * Different minor versions are only downward compatible.
21
 * Different patchlevel versions are downward and upward compatible.
22
 */
23
#define MD_MAJOR_VERSION                0
24
#define MD_MINOR_VERSION                90
25
/*
26
 * MD_PATCHLEVEL_VERSION indicates kernel functionality.
27
 * >=1 means different superblock formats are selectable using SET_ARRAY_INFO
28
 *     and major_version/minor_version accordingly
29
 * >=2 means that Internal bitmaps are supported by setting MD_SB_BITMAP_PRESENT
30
 *     in the super status byte
31
 * >=3 means that bitmap superblock version 4 is supported, which uses
32
 *     little-ending representation rather than host-endian
33
 */
34
#define MD_PATCHLEVEL_VERSION           3
35
 
36
/* ioctls */
37
 
38
/* status */
39
#define RAID_VERSION            _IOR (MD_MAJOR, 0x10, mdu_version_t)
40
#define GET_ARRAY_INFO          _IOR (MD_MAJOR, 0x11, mdu_array_info_t)
41
#define GET_DISK_INFO           _IOR (MD_MAJOR, 0x12, mdu_disk_info_t)
42
#define PRINT_RAID_DEBUG        _IO (MD_MAJOR, 0x13)
43
#define RAID_AUTORUN            _IO (MD_MAJOR, 0x14)
44
#define GET_BITMAP_FILE         _IOR (MD_MAJOR, 0x15, mdu_bitmap_file_t)
45
 
46
/* configuration */
47
#define CLEAR_ARRAY             _IO (MD_MAJOR, 0x20)
48
#define ADD_NEW_DISK            _IOW (MD_MAJOR, 0x21, mdu_disk_info_t)
49
#define HOT_REMOVE_DISK         _IO (MD_MAJOR, 0x22)
50
#define SET_ARRAY_INFO          _IOW (MD_MAJOR, 0x23, mdu_array_info_t)
51
#define SET_DISK_INFO           _IO (MD_MAJOR, 0x24)
52
#define WRITE_RAID_INFO         _IO (MD_MAJOR, 0x25)
53
#define UNPROTECT_ARRAY         _IO (MD_MAJOR, 0x26)
54
#define PROTECT_ARRAY           _IO (MD_MAJOR, 0x27)
55
#define HOT_ADD_DISK            _IO (MD_MAJOR, 0x28)
56
#define SET_DISK_FAULTY         _IO (MD_MAJOR, 0x29)
57
#define HOT_GENERATE_ERROR      _IO (MD_MAJOR, 0x2a)
58
#define SET_BITMAP_FILE         _IOW (MD_MAJOR, 0x2b, int)
59
 
60
/* usage */
61
#define RUN_ARRAY               _IOW (MD_MAJOR, 0x30, mdu_param_t)
62
/*  0x31 was START_ARRAY  */
63
#define STOP_ARRAY              _IO (MD_MAJOR, 0x32)
64
#define STOP_ARRAY_RO           _IO (MD_MAJOR, 0x33)
65
#define RESTART_ARRAY_RW        _IO (MD_MAJOR, 0x34)
66
 
67
/* 63 partitions with the alternate major number (mdp) */
68
#define MdpMinorShift 6
69
 
70
typedef struct mdu_version_s {
71
        int major;
72
        int minor;
73
        int patchlevel;
74
} mdu_version_t;
75
 
76
typedef struct mdu_array_info_s {
77
        /*
78
         * Generic constant information
79
         */
80
        int major_version;
81
        int minor_version;
82
        int patch_version;
83
        int ctime;
84
        int level;
85
        int size;
86
        int nr_disks;
87
        int raid_disks;
88
        int md_minor;
89
        int not_persistent;
90
 
91
        /*
92
         * Generic state information
93
         */
94
        int utime;              /*  0 Superblock update time                  */
95
        int state;              /*  1 State bits (clean, ...)                 */
96
        int active_disks;       /*  2 Number of currently active disks        */
97
        int working_disks;      /*  3 Number of working disks                 */
98
        int failed_disks;       /*  4 Number of failed disks                  */
99
        int spare_disks;        /*  5 Number of spare disks                   */
100
 
101
        /*
102
         * Personality information
103
         */
104
        int layout;             /*  0 the array's physical layout             */
105
        int chunk_size; /*  1 chunk size in bytes                     */
106
 
107
} mdu_array_info_t;
108
 
109
/* non-obvious values for 'level' */
110
#define LEVEL_MULTIPATH         (-4)
111
#define LEVEL_LINEAR            (-1)
112
#define LEVEL_FAULTY            (-5)
113
 
114
/* we need a value for 'no level specified' and 0
115
 * means 'raid0', so we need something else.  This is
116
 * for internal use only
117
 */
118
#define LEVEL_NONE              (-1000000)
119
 
120
typedef struct mdu_disk_info_s {
121
        /*
122
         * configuration/status of one particular disk
123
         */
124
        int number;
125
        int major;
126
        int minor;
127
        int raid_disk;
128
        int state;
129
 
130
} mdu_disk_info_t;
131
 
132
typedef struct mdu_start_info_s {
133
        /*
134
         * configuration/status of one particular disk
135
         */
136
        int major;
137
        int minor;
138
        int raid_disk;
139
        int state;
140
 
141
} mdu_start_info_t;
142
 
143
typedef struct mdu_bitmap_file_s
144
{
145
        char pathname[4096];
146
} mdu_bitmap_file_t;
147
 
148
typedef struct mdu_param_s
149
{
150
        int                     personality;    /* 1,2,3,4 */
151
        int                     chunk_size;     /* in bytes */
152
        int                     max_fault;      /* unused for now */
153
} mdu_param_t;
154
 
155
#endif /* _MD_U_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.