Blame view
drivers/md/dm-path-selector.h
2.29 KB
1da177e4c Linux-2.6.12-rc2 |
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 |
/* * Copyright (C) 2003 Sistina Software. * Copyright (C) 2004 Red Hat, Inc. All rights reserved. * * Module Author: Heinz Mauelshagen * * This file is released under the GPL. * * Path-Selector registration. */ #ifndef DM_PATH_SELECTOR_H #define DM_PATH_SELECTOR_H #include <linux/device-mapper.h> #include "dm-mpath.h" /* * We provide an abstraction for the code that chooses which path * to send some io down. */ struct path_selector_type; struct path_selector { struct path_selector_type *type; void *context; }; /* Information about a path selector type */ struct path_selector_type { char *name; struct module *module; unsigned int table_args; unsigned int info_args; /* * Constructs a path selector object, takes custom arguments */ int (*create) (struct path_selector *ps, unsigned argc, char **argv); void (*destroy) (struct path_selector *ps); /* * Add an opaque path object, along with some selector specific * path args (eg, path priority). */ |
c922d5f7f [PATCH] struct pa... |
47 |
int (*add_path) (struct path_selector *ps, struct dm_path *path, |
1da177e4c Linux-2.6.12-rc2 |
48 49 50 51 52 |
int argc, char **argv, char **error); /* * Chooses a path for this io, if no paths are available then * NULL will be returned. |
1da177e4c Linux-2.6.12-rc2 |
53 |
*/ |
c922d5f7f [PATCH] struct pa... |
54 |
struct dm_path *(*select_path) (struct path_selector *ps, |
02ab823fd dm mpath: add sta... |
55 |
size_t nr_bytes); |
1da177e4c Linux-2.6.12-rc2 |
56 57 58 59 |
/* * Notify the selector that a path has failed. */ |
c922d5f7f [PATCH] struct pa... |
60 |
void (*fail_path) (struct path_selector *ps, struct dm_path *p); |
1da177e4c Linux-2.6.12-rc2 |
61 62 63 64 |
/* * Ask selector to reinstate a path. */ |
c922d5f7f [PATCH] struct pa... |
65 |
int (*reinstate_path) (struct path_selector *ps, struct dm_path *p); |
1da177e4c Linux-2.6.12-rc2 |
66 67 68 69 70 |
/* * Table content based on parameters added in ps_add_path_fn * or path selector status */ |
c922d5f7f [PATCH] struct pa... |
71 |
int (*status) (struct path_selector *ps, struct dm_path *path, |
1da177e4c Linux-2.6.12-rc2 |
72 |
status_type_t type, char *result, unsigned int maxlen); |
02ab823fd dm mpath: add sta... |
73 74 75 76 |
int (*start_io) (struct path_selector *ps, struct dm_path *path, size_t nr_bytes); int (*end_io) (struct path_selector *ps, struct dm_path *path, size_t nr_bytes); |
1da177e4c Linux-2.6.12-rc2 |
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
}; /* Register a path selector */ int dm_register_path_selector(struct path_selector_type *type); /* Unregister a path selector */ int dm_unregister_path_selector(struct path_selector_type *type); /* Returns a registered path selector type */ struct path_selector_type *dm_get_path_selector(const char *name); /* Releases a path selector */ void dm_put_path_selector(struct path_selector_type *pst); #endif |