Root/
1 | /* |
2 | * Copyright (C) 2003 Sistina Software. |
3 | * Copyright (C) 2004 Red Hat, Inc. All rights reserved. |
4 | * |
5 | * Module Author: Heinz Mauelshagen |
6 | * |
7 | * This file is released under the GPL. |
8 | * |
9 | * Path-Selector registration. |
10 | */ |
11 | |
12 | #ifndef DM_PATH_SELECTOR_H |
13 | #define DM_PATH_SELECTOR_H |
14 | |
15 | #include <linux/device-mapper.h> |
16 | |
17 | #include "dm-mpath.h" |
18 | |
19 | /* |
20 | * We provide an abstraction for the code that chooses which path |
21 | * to send some io down. |
22 | */ |
23 | struct path_selector_type; |
24 | struct path_selector { |
25 | struct path_selector_type *type; |
26 | void *context; |
27 | }; |
28 | |
29 | /* Information about a path selector type */ |
30 | struct path_selector_type { |
31 | char *name; |
32 | struct module *module; |
33 | |
34 | unsigned int table_args; |
35 | unsigned int info_args; |
36 | |
37 | /* |
38 | * Constructs a path selector object, takes custom arguments |
39 | */ |
40 | int (*create) (struct path_selector *ps, unsigned argc, char **argv); |
41 | void (*destroy) (struct path_selector *ps); |
42 | |
43 | /* |
44 | * Add an opaque path object, along with some selector specific |
45 | * path args (eg, path priority). |
46 | */ |
47 | int (*add_path) (struct path_selector *ps, struct dm_path *path, |
48 | int argc, char **argv, char **error); |
49 | |
50 | /* |
51 | * Chooses a path for this io, if no paths are available then |
52 | * NULL will be returned. |
53 | * |
54 | * repeat_count is the number of times to use the path before |
55 | * calling the function again. 0 means don't call it again unless |
56 | * the path fails. |
57 | */ |
58 | struct dm_path *(*select_path) (struct path_selector *ps, |
59 | unsigned *repeat_count, |
60 | size_t nr_bytes); |
61 | |
62 | /* |
63 | * Notify the selector that a path has failed. |
64 | */ |
65 | void (*fail_path) (struct path_selector *ps, struct dm_path *p); |
66 | |
67 | /* |
68 | * Ask selector to reinstate a path. |
69 | */ |
70 | int (*reinstate_path) (struct path_selector *ps, struct dm_path *p); |
71 | |
72 | /* |
73 | * Table content based on parameters added in ps_add_path_fn |
74 | * or path selector status |
75 | */ |
76 | int (*status) (struct path_selector *ps, struct dm_path *path, |
77 | status_type_t type, char *result, unsigned int maxlen); |
78 | |
79 | int (*start_io) (struct path_selector *ps, struct dm_path *path, |
80 | size_t nr_bytes); |
81 | int (*end_io) (struct path_selector *ps, struct dm_path *path, |
82 | size_t nr_bytes); |
83 | }; |
84 | |
85 | /* Register a path selector */ |
86 | int dm_register_path_selector(struct path_selector_type *type); |
87 | |
88 | /* Unregister a path selector */ |
89 | int dm_unregister_path_selector(struct path_selector_type *type); |
90 | |
91 | /* Returns a registered path selector type */ |
92 | struct path_selector_type *dm_get_path_selector(const char *name); |
93 | |
94 | /* Releases a path selector */ |
95 | void dm_put_path_selector(struct path_selector_type *pst); |
96 | |
97 | #endif |
98 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9