mirror of
https://github.com/systemd/systemd.git
synced 2024-11-02 19:21:53 +03:00
4081da7fe5
incremental to 20031220, 2003-12-22 multipath-010 * don't print .sg_dev if equal to .dev (2.6) in print_path() * since the kernel code handles defective paths, remove all code to cope with them : * move do_tur() to unused.c * remove .state from path struct * remove .state settings & conditionals * add a cmdline switch to force maps to failover mode, ie 1 path per priority group * add default policies to the whitelist array (spread io == MULTIBUS / io forced to 1 path == FAILOVER) * move get_disk_size() call out of add_map() to coalesce() * comment tricky coalesce() fn * bogus unsused.c file renamed to unused.c
129 lines
2.8 KiB
C
129 lines
2.8 KiB
C
/*
|
|
* Soft: Description here...
|
|
*
|
|
* Version: $Id: main.h,v 0.0.1 2003/09/18 15:13:38 cvaroqui Exp $
|
|
*
|
|
* Author: Copyright (C) 2003 Christophe Varoqui
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
* See the GNU General Public License for more details.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version
|
|
* 2 of the License, or (at your option) any later version.
|
|
*/
|
|
|
|
#ifndef _MAIN_H
|
|
#define _MAIN_H
|
|
|
|
/* local includes */
|
|
#include "sg_include.h"
|
|
|
|
/* exerpt from "sg_err.h" */
|
|
#define SCSI_CHECK_CONDITION 0x2
|
|
#define SCSI_COMMAND_TERMINATED 0x22
|
|
#define SG_ERR_DRIVER_SENSE 0x08
|
|
|
|
/* exerpt from "scsi.h" */
|
|
#define RECOVERED_ERROR 0x01
|
|
#define SCSI_IOCTL_GET_IDLUN 0x5382
|
|
#define SCSI_IOCTL_GET_BUS_NUMBER 0x5386
|
|
|
|
/* global defs */
|
|
#define WWID_SIZE 33
|
|
#define MAX_DEVS 128
|
|
#define MAX_MP MAX_DEVS / 2
|
|
#define MAX_MP_PATHS MAX_DEVS / 4
|
|
#define FILE_NAME_SIZE 256
|
|
#define INQUIRY_CMDLEN 6
|
|
#define INQUIRY_CMD 0x12
|
|
#define SENSE_BUFF_LEN 32
|
|
#define DEF_TIMEOUT 60000
|
|
#define EBUFF_SZ 256
|
|
#define TUR_CMD_LEN 6
|
|
#define MX_ALLOC_LEN 255
|
|
#define BLKGETSIZE _IO(0x12,96)
|
|
#define DM_TARGET "multipath"
|
|
|
|
/* Storage controlers cpabilities */
|
|
#define FAILOVER 0
|
|
#define MULTIBUS 1
|
|
|
|
#define PINDEX(x,y) mp[(x)].pindex[(y)]
|
|
|
|
/* global types */
|
|
struct scsi_idlun {
|
|
int dev_id;
|
|
int host_unique_id;
|
|
int host_no;
|
|
};
|
|
|
|
struct sg_id {
|
|
int host_no;
|
|
int channel;
|
|
int scsi_id;
|
|
int lun;
|
|
int scsi_type;
|
|
short h_cmd_per_lun;
|
|
short d_queue_depth;
|
|
int unused1;
|
|
int unused2;
|
|
};
|
|
|
|
struct scsi_dev {
|
|
char dev[FILE_NAME_SIZE];
|
|
struct scsi_idlun scsi_id;
|
|
int host_no;
|
|
};
|
|
|
|
struct path {
|
|
char dev[FILE_NAME_SIZE];
|
|
char sg_dev[FILE_NAME_SIZE];
|
|
struct scsi_idlun scsi_id;
|
|
struct sg_id sg_id;
|
|
char wwid[WWID_SIZE];
|
|
char vendor_id[8];
|
|
char product_id[16];
|
|
char rev[4];
|
|
int iopolicy;
|
|
};
|
|
|
|
struct multipath {
|
|
char wwid[WWID_SIZE];
|
|
int npaths;
|
|
long size;
|
|
int pindex[MAX_MP_PATHS];
|
|
};
|
|
|
|
struct env {
|
|
int max_devs;
|
|
int verbose;
|
|
int quiet;
|
|
int dry_run;
|
|
int forcedfailover;
|
|
int with_sysfs;
|
|
int dm_path_test_int;
|
|
char sysfs_path[FILE_NAME_SIZE];
|
|
char hotplugdev[FILE_NAME_SIZE];
|
|
};
|
|
|
|
/* Build version */
|
|
#define PROG "multipath"
|
|
|
|
#define VERSION_CODE 0x000010
|
|
#define DATE_CODE 0x0C1503
|
|
|
|
#define MULTIPATH_VERSION(version) \
|
|
(version >> 16) & 0xFF, \
|
|
(version >> 8) & 0xFF, \
|
|
version & 0xFF
|
|
|
|
#define VERSION_STRING PROG" v%d.%d.%d (%.2d/%.2d, 20%.2d)\n", \
|
|
MULTIPATH_VERSION(VERSION_CODE), \
|
|
MULTIPATH_VERSION(DATE_CODE)
|
|
|
|
#endif
|