a907e85eb30a3b093ade13a29f6b6180483c3cca
[multipath-tools/.git] / libmultipath / structs_vec.h
1 #ifndef _STRUCTS_VEC_H
2 #define _STRUCTS_VEC_H
3
4 #include "lock.h"
5 /*
6 struct mutex_lock {
7         pthread_mutex_t *mutex;
8         int depth;
9 }; */
10 struct vectors {
11         struct mutex_lock lock; /* defined in lock.h */
12         vector pathvec;
13         vector mpvec;
14 };
15
16 void set_no_path_retry(struct multipath *mpp);
17
18 int adopt_paths (vector pathvec, struct multipath * mpp, int get_info);
19 void orphan_paths (vector pathvec, struct multipath * mpp);
20 void orphan_path (struct path * pp);
21
22 int verify_paths(struct multipath * mpp, struct vectors * vecs, vector rpvec);
23 int update_mpp_paths(struct multipath * mpp, vector pathvec);
24 int __setup_multipath (struct vectors * vecs, struct multipath * mpp,
25                        int reset);
26 #define setup_multipath(vecs, mpp) __setup_multipath(vecs, mpp, 1)
27 int update_multipath_strings (struct multipath *mpp, vector pathvec);
28         
29 void remove_map (struct multipath * mpp, struct vectors * vecs, int purge_vec);
30 void remove_map_and_stop_waiter (struct multipath * mpp, struct vectors * vecs, int purge_vec);
31 void remove_maps (struct vectors * vecs);
32 void remove_maps_and_stop_waiters (struct vectors * vecs);
33
34 struct multipath * add_map_without_path (struct vectors * vecs, char * alias);
35 struct multipath * add_map_with_path (struct vectors * vecs,
36                                 struct path * pp, int add_vec);
37 int update_multipath (struct vectors *vecs, char *mapname, int reset);
38 void update_queue_mode_del_path(struct multipath *mpp);
39 void update_queue_mode_add_path(struct multipath *mpp);
40
41 #endif /* _STRUCTS_VEC_H */