60 lines
1.9 KiB
C
60 lines
1.9 KiB
C
/* $OpenBSD: mpathvar.h,v 1.10 2019/09/27 23:07:42 krw Exp $ */
|
|
|
|
/*
|
|
* Copyright (c) 2010 David Gwynne <dlg@openbsd.org>
|
|
*
|
|
* Permission to use, copy, modify, and distribute this software for any
|
|
* purpose with or without fee is hereby granted, provided that the above
|
|
* copyright notice and this permission notice appear in all copies.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
*/
|
|
|
|
#ifndef _SCSI_MPATHVAR_H
|
|
#define _SCSI_MPATHVAR_H
|
|
|
|
struct mpath_group;
|
|
|
|
struct mpath_ops {
|
|
char op_name[16];
|
|
int (*op_checksense)(struct scsi_xfer *);
|
|
void (*op_status)(struct scsi_link *);
|
|
};
|
|
|
|
#define MPATH_SENSE_DECLINED 0 /* path driver declined to interpret sense */
|
|
#define MPATH_SENSE_FAILOVER 1 /* sense says controllers have failed over */
|
|
|
|
#define MPATH_S_UNKNOWN -1
|
|
#define MPATH_S_ACTIVE 0
|
|
#define MPATH_S_PASSIVE 1
|
|
|
|
struct mpath_path {
|
|
/* the path driver must set these */
|
|
struct scsi_xshandler p_xsh;
|
|
struct scsi_link *p_link;
|
|
int p_gid;
|
|
|
|
/* the following are private to mpath.c */
|
|
TAILQ_ENTRY(mpath_path) p_entry;
|
|
struct mpath_group *p_group;
|
|
int p_state;
|
|
};
|
|
|
|
int mpath_path_probe(struct scsi_link *);
|
|
int mpath_path_attach(struct mpath_path *, u_int,
|
|
const struct mpath_ops *);
|
|
void mpath_path_status(struct mpath_path *, int);
|
|
int mpath_path_detach(struct mpath_path *);
|
|
|
|
void mpath_start(struct mpath_path *, struct scsi_xfer *);
|
|
|
|
struct device *mpath_bootdv(struct device *);
|
|
|
|
#endif /* _SCSI_MPATHVAR_H */
|