12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- /*
- * Copyright (C) 2004 Red Hat, Inc. All rights reserved.
- *
- * This file is released under the GPL.
- *
- * Multipath hardware handler registration.
- */
- #ifndef DM_HW_HANDLER_H
- #define DM_HW_HANDLER_H
- #include <linux/device-mapper.h>
- #include "dm-mpath.h"
- struct hw_handler_type;
- struct hw_handler {
- struct hw_handler_type *type;
- void *context;
- };
- /*
- * Constructs a hardware handler object, takes custom arguments
- */
- /* Information about a hardware handler type */
- struct hw_handler_type {
- char *name;
- struct module *module;
- int (*create) (struct hw_handler *handler, unsigned int argc,
- char **argv);
- void (*destroy) (struct hw_handler *hwh);
- void (*pg_init) (struct hw_handler *hwh, unsigned bypassed,
- struct path *path);
- unsigned (*error) (struct hw_handler *hwh, struct bio *bio);
- int (*status) (struct hw_handler *hwh, status_type_t type,
- char *result, unsigned int maxlen);
- };
- /* Register a hardware handler */
- int dm_register_hw_handler(struct hw_handler_type *type);
- /* Unregister a hardware handler */
- int dm_unregister_hw_handler(struct hw_handler_type *type);
- /* Returns a registered hardware handler type */
- struct hw_handler_type *dm_get_hw_handler(const char *name);
- /* Releases a hardware handler */
- void dm_put_hw_handler(struct hw_handler_type *hwht);
- /* Default err function */
- unsigned dm_scsi_err_handler(struct hw_handler *hwh, struct bio *bio);
- /* Error flags for err and dm_pg_init_complete */
- #define MP_FAIL_PATH 1
- #define MP_BYPASS_PG 2
- #define MP_ERROR_IO 4 /* Don't retry this I/O */
- #endif
|