Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
md
dm-path-selector.h
Go to the documentation of this file.
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
Generated on Thu Jan 10 2013 13:43:46 for Linux Kernel by
1.8.2