6b13f685e
김민수
BSP 최초 추가
|
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
|
#ifndef _LINUX_DM_DIRTY_LOG
#define _LINUX_DM_DIRTY_LOG
#ifdef __KERNEL__
#include <linux/types.h>
#include <linux/device-mapper.h>
typedef sector_t region_t;
struct dm_dirty_log_type;
struct dm_dirty_log {
struct dm_dirty_log_type *type;
int (*flush_callback_fn)(struct dm_target *ti);
void *context;
};
struct dm_dirty_log_type {
const char *name;
struct module *module;
struct list_head list;
int (*ctr)(struct dm_dirty_log *log, struct dm_target *ti,
unsigned argc, char **argv);
void (*dtr)(struct dm_dirty_log *log);
int (*presuspend)(struct dm_dirty_log *log);
int (*postsuspend)(struct dm_dirty_log *log);
int (*resume)(struct dm_dirty_log *log);
uint32_t (*get_region_size)(struct dm_dirty_log *log);
int (*is_clean)(struct dm_dirty_log *log, region_t region);
int (*in_sync)(struct dm_dirty_log *log, region_t region,
int can_block);
int (*flush)(struct dm_dirty_log *log);
void (*mark_region)(struct dm_dirty_log *log, region_t region);
void (*clear_region)(struct dm_dirty_log *log, region_t region);
int (*get_resync_work)(struct dm_dirty_log *log, region_t *region);
void (*set_region_sync)(struct dm_dirty_log *log,
region_t region, int in_sync);
region_t (*get_sync_count)(struct dm_dirty_log *log);
int (*status)(struct dm_dirty_log *log, status_type_t status_type,
char *result, unsigned maxlen);
int (*is_remote_recovering)(struct dm_dirty_log *log, region_t region);
};
int dm_dirty_log_type_register(struct dm_dirty_log_type *type);
int dm_dirty_log_type_unregister(struct dm_dirty_log_type *type);
struct dm_dirty_log *dm_dirty_log_create(const char *type_name,
struct dm_target *ti,
int (*flush_callback_fn)(struct dm_target *ti),
unsigned argc, char **argv);
void dm_dirty_log_destroy(struct dm_dirty_log *log);
#endif /* __KERNEL__ */
#endif /* _LINUX_DM_DIRTY_LOG_H */
|