Logo Search packages:      
Sourcecode: linux version File versions  Download package

dm-hw-handler.h

/*
 * 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;
      struct mapped_device *md;
      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 dm_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 */
#define MP_RETRY 8

#endif

Generated by  Doxygen 1.6.0   Back to index