Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
at v2.6.18-rc6 61 lines 1.6 kB view raw
1/* 2 * Copyright (C) 2004 Red Hat, Inc. All rights reserved. 3 * 4 * This file is released under the GPL. 5 * 6 * Multipath hardware handler registration. 7 */ 8 9#ifndef DM_HW_HANDLER_H 10#define DM_HW_HANDLER_H 11 12#include <linux/device-mapper.h> 13 14#include "dm-mpath.h" 15 16struct hw_handler_type; 17struct hw_handler { 18 struct hw_handler_type *type; 19 void *context; 20}; 21 22/* 23 * Constructs a hardware handler object, takes custom arguments 24 */ 25/* Information about a hardware handler type */ 26struct hw_handler_type { 27 char *name; 28 struct module *module; 29 30 int (*create) (struct hw_handler *handler, unsigned int argc, 31 char **argv); 32 void (*destroy) (struct hw_handler *hwh); 33 34 void (*pg_init) (struct hw_handler *hwh, unsigned bypassed, 35 struct path *path); 36 unsigned (*error) (struct hw_handler *hwh, struct bio *bio); 37 int (*status) (struct hw_handler *hwh, status_type_t type, 38 char *result, unsigned int maxlen); 39}; 40 41/* Register a hardware handler */ 42int dm_register_hw_handler(struct hw_handler_type *type); 43 44/* Unregister a hardware handler */ 45int dm_unregister_hw_handler(struct hw_handler_type *type); 46 47/* Returns a registered hardware handler type */ 48struct hw_handler_type *dm_get_hw_handler(const char *name); 49 50/* Releases a hardware handler */ 51void dm_put_hw_handler(struct hw_handler_type *hwht); 52 53/* Default err function */ 54unsigned dm_scsi_err_handler(struct hw_handler *hwh, struct bio *bio); 55 56/* Error flags for err and dm_pg_init_complete */ 57#define MP_FAIL_PATH 1 58#define MP_BYPASS_PG 2 59#define MP_ERROR_IO 4 /* Don't retry this I/O */ 60 61#endif