Go to the documentation of this file.
27 #define VLIB_GROW_UNITS 8
28 #define VLIB_GROW_PORTS 4
29 #define VLIB_GROW_ADAPTERS 2
34 #define min(a, b) (((a) < (b)) ? (a) : (b))
53 HBA_STATUS getAdapterConfig(
void);
83 *((uint64_t *)(&hba->wwn)) = wwn;
93 *wwn = *((uint64_t *)hba->wwn);
Central header file for the library.
wwn_t wwnn
WWNN of the port.
Definition: vlib.h:446
struct vlib_adapter_ident ident
Adapter identification.
Definition: vlib.h:476
void doCloseAdapter(struct vlib_adapter *adapter)
Close an adapter in the repository.
Definition: vlib_aux.c:644
static void * block_addItem(struct block *, size_t, size_t)
Add a new item to a block.
Definition: vlib_aux.c:82
HBA_PORTSTATE vlibCharToIntPortState(char *)
Map the result of a port state string from sysfs to an int.
Definition: vlib_aux.c:713
wwn_t wwnn
WWN of adapter node.
Definition: vlib.h:459
char sysfsPath[PATH_MAX]
path of adapter in sysfs in the form /sys/devices/css0/0.0.0010/0.0.5923
Definition: vlib.h:469
unsigned int host
SCSI host.
Definition: vlib.h:451
Representation of a FC port in the library.
Definition: vlib.h:443
char * getAttachedWLUN(struct vlib_adapter *adapter, struct vlib_port *port)
Try to attach the report luns wlun and return its name as in "/dev".
Definition: vlib_aux.c:925
HBA_HANDLE handle
Handle for this adapter.
Definition: vlib.h:477
devid_t devid
Unique id for adapter device.
Definition: vlib.h:458
void doCloseAdapter(struct vlib_adapter *)
Close an adapter in the repository.
Definition: vlib_aux.c:644
static void vlib_wwn_to_HBA_WWN(uint64_t wwn, HBA_WWN *hba)
Convert uint64_t to HBA_WWN – hide ill-favoured type cast.
Definition: vlib_aux.h:81
Represenation of an FCP unit in the library.
Definition: vlib.h:432
void block_free(struct block *block)
Free the array contained in a struct block.
Definition: vlib_aux.c:102
wwn_t wwpn
WWPN of the port.
Definition: vlib.h:445
char bus_dev_name[9]
name of device as in /sys/bus/ccw/drivers/zfcp in the form "x.x.xxxx"
Definition: vlib.h:463
HBA_COS vlibCharToIntCOS(char *)
Map the result of a class of service string to an int.
Definition: vlib_aux.c:873
wwn_t wwpn
WWN of adapter port.
Definition: vlib.h:460
char name[32]
name as in sysfs under fc_remote_ports
Definition: vlib.h:449
HBA_PORTTYPE vlibCharToIntPortType(char *)
Map the result of a port type string from sysfs to an int.
Definition: vlib_aux.c:688
struct vlib_adapter * getAdapterByIndex(uint32_t index)
Get an adapter by its index.
Definition: vlib_aux.c:118
#define REPORTLUNS_WLUN
This is the value the report luns well known lun.
Definition: vlib.h:403
int addAdapterToRepos(struct vlib_adapter *adapter)
Add an adapter to the repository.
Definition: vlib_aux.c:472
char * getAttachedWLUN(struct vlib_adapter *, struct vlib_port *)
Try to attach the report luns wlun and return its name as in "/dev".
Definition: vlib_aux.c:925
struct vlib_unit * getUnitByFcLun(const struct vlib_port *port, uint64_t fcLun)
Get an unit by its fclun.
Definition: vlib_aux.c:295
HBA_PORTSPEED vlibCharToIntPortSpeed(char *)
Map the result of a port speed string to the HBA_PORTSPEED int.
Definition: vlib_aux.c:810
unsigned short host
SCSI host id of this adapter.
Definition: vlib.h:461
size_t used
number of used elements in the array
Definition: vlib.h:427
int findIndexByName(char *name)
Find an adapter index by name.
Definition: vlib_aux.c:582
int addPortToRepos(struct vlib_adapter *adapter, struct vlib_port *port)
Add a port from to the repository.
Definition: vlib_aux.c:409
void detachWLUN(struct vlib_adapter *adapter, struct vlib_port *port)
Try to detach lun 0.
Definition: vlib_aux.c:955
struct vlib_adapter * getAdapterByHandle(HBA_HANDLE handle, HBA_STATUS *status)
Get an adapter by its handle.
Definition: vlib_aux.c:143
int vlibCOStoFlag(int class)
Maps the number of a class of service to its bit flag according to FC-GS-4.
Definition: vlib_aux.c:841
struct vlib_adapter * getAdapterByHostNo(unsigned short host)
Get an adapter by SCSI Host number as in sysfs.
Definition: vlib_aux.c:202
struct vlib_port * getPortByIndex(const struct vlib_adapter *, const uint32_t)
Get a port by its index.
Definition: vlib_aux.c:230
unsigned int isInvalid
Adapter invalid or not.
Definition: vlib.h:475
unsigned int isValid
Repositoy valid or not This flag is set for instance if a loss of events is detected.
Definition: vlib.h:487
int addUnitToRepos(struct vlib_port *port, struct vlib_unit *unit)
Add a unit to the repository.
Definition: vlib_aux.c:351
int findIndexByName(char *)
Find an adapter index by name.
Definition: vlib_aux.c:582
unsigned int isInvalid
Unit invalid or not.
Definition: vlib.h:433
static struct vlib_port * getPortFromRepos(struct vlib_adapter *adapter, char *sysfs_name)
Check if a port specified is already stored in the repository.
Definition: vlib_aux.c:381
struct block adapters
List of adapters In fact this is the anchor of the library's repository.
Definition: vlib.h:494
#define VLIB_MUTEX_LOCK(mutex)
To lock a mutex, this macro is used, which checks for errors.
Definition: vlib.h:571
struct vlib_port * getPortByIndex(const struct vlib_adapter *adapter, const uint32_t index)
Get a port by its index.
Definition: vlib_aux.c:230
int sysfs_getUnitsFromPort(struct vlib_port *port)
Get unit configuration information for a port.
Definition: vlib_sysfs.c:310
struct vlib_unit * getUnitByFcLun(const struct vlib_port *, uint64_t)
Get an unit by its fclun.
Definition: vlib_aux.c:295
Primary data structure used in the library.
Definition: vlib.h:484
unsigned int target
SCSI id.
Definition: vlib.h:453
Represenation of an adapter in the library.
Definition: vlib.h:474
pthread_mutex_t mutex
Protects this structure.
Definition: vlib.h:499
void closeAllAdapters(void)
Close all adapters in the repository.
Definition: vlib_aux.c:669
struct vlib_adapter * getAdapterByIndex(uint32_t)
Get an adapter by its index.
Definition: vlib_aux.c:118
HBA_COS vlibCharToIntCOS(char *s)
Map the result of a class of service string to an int.
Definition: vlib_aux.c:873
int addAdapterToRepos(struct vlib_adapter *)
Add an adapter to the repository.
Definition: vlib_aux.c:472
static int revalidateUnits(struct vlib_port *port)
Revalidate units of an adapter and port in the repository.
Definition: vlib_sysfs.h:103
int updateAdapter(struct vlib_adapter *adapter)
Update information about ports and units of an adapter.
Definition: vlib_aux.c:512
uint64_t fcLun
FCP LUN.
Definition: vlib.h:438
unsigned int host
SCSI host.
Definition: vlib.h:434
fc_id_t did
FC did of the port.
Definition: vlib.h:447
static void markRepositoryInvalid(void)
Mark repositroy of library as invalid. This is appropriate if a loss of events is detected.
Definition: vlib_aux.h:138
unsigned int channel
SCSI channel.
Definition: vlib.h:435
static int block_assertSize(struct block *, const size_t, const size_t, const size_t)
Assert that there is space for at least num elements in the block.
Definition: vlib_aux.c:43
struct vlib_adapter * getAdapterByHostNo(unsigned short)
Get an adapter by SCSI Host number as in sysfs.
Definition: vlib_aux.c:202
static uint32_t vlib_hbaFCID_to_FCID(uint32_t fcid)
Convert a FC-HBA PortFcId to a FC DID.
Definition: vlib_aux.h:111
#define VLIB_MUTEX_UNLOCK(mutex)
To unlock a mutex, this macro is used, which checks for errors.
Definition: vlib.h:594
Block structure used to hold all needed data for growable arrays.
Definition: vlib.h:425
int updateAdapter(struct vlib_adapter *adapter)
Update information about ports and units of an adapter.
Definition: vlib_aux.c:512
char sg_dev[16]
name of sg device
Definition: vlib.h:439
int revalidateAdapters(void)
Revalidate adapters in the repository.
Definition: vlib_aux.c:546
static void vlib_HBA_WWN_to_wwn(HBA_WWN *hba, uint64_t *wwn)
Convert HBA_WWN to uint64_t – hide ill-favoured type cast.
Definition: vlib_aux.h:91
HBA_STATUS sysfs_createAndReadConfigPorts(struct vlib_adapter *adapter)
Read and store all discovered ports of an adapter.
Definition: vlib_sysfs.c:226
HBA_HANDLE openAdapterByIndex(HBA_UINT32 index)
Open an adapter by index.
Definition: vlib_aux.c:614
unsigned int isInvalid
Port invalid or not.
Definition: vlib.h:444
char class_dev_name[9]
name of device as in /sys/class/fc_host in the form "hostxxxx"
Definition: vlib.h:466
char * getSgDevFromPort(struct vlib_port *port)
Get the first sg device from an adapter.
Definition: vlib_aux.c:901
struct vlib_adapter * getAdapterByDevid(devid_t)
Get an adapter by its devid.
Definition: vlib_aux.c:176
void * data
pointer to an array
Definition: vlib.h:426
HBA_PORTTYPE vlibCharToIntPortType(char *portType)
Map the result of a port type string from sysfs to an int.
Definition: vlib_aux.c:688
struct vlib_port * getPortByWWPN(const struct vlib_adapter *, const wwn_t)
Get a port by its WWPN.
Definition: vlib_aux.c:249
struct vlib_unit * getUnitByIndex(const struct vlib_port *, const uint32_t)
Get an unit by its index.
Definition: vlib_aux.c:276
HBA_PORTSPEED vlibCharToIntPortSpeed(char *pS)
Map the result of a port speed string to the HBA_PORTSPEED int.
Definition: vlib_aux.c:810
struct block units
List of units.
Definition: vlib.h:448
struct vlib_adapter * getAdapterByHandle(HBA_HANDLE, HBA_STATUS *)
Get an adapter by its handle.
Definition: vlib_aux.c:143
#define VLIB_ADAPTERNAME_LEN
Maximal lenght of an adapter name as used in this libary.
Definition: vlib.h:397
int revalidateAdapters(void)
Revalidate adapters in the repository.
Definition: vlib_aux.c:546
struct vlib_unit * getUnitByIndex(const struct vlib_port *port, const uint32_t index)
Get an unit by its index.
Definition: vlib_aux.c:276
#define VLIB_PERROR(errnum, fmt, args...)
To log errors in the library, this macro is used which invokes vlib_print_error().
Definition: vlib.h:538
HBA_PORTSTATE vlibCharToIntPortState(char *portState)
Map the result of a port state string from sysfs to an int.
Definition: vlib_aux.c:713
void detachWLUN(struct vlib_adapter *, struct vlib_port *)
Try to detach lun 0.
Definition: vlib_aux.c:955
int addUnitToRepos(struct vlib_port *, struct vlib_unit *)
Add a unit to the repository.
Definition: vlib_aux.c:351
struct vlib_adapter * getAdapterByDevid(devid_t devid)
Get an adapter by its devid.
Definition: vlib_aux.c:176
static struct vlib_adapter * getAdapterFromRepos(char *bus_dev_name)
Check if an adapter specified in an event is already stored in the repository.
Definition: vlib_aux.c:446
HBA_HANDLE openAdapterByIndex(HBA_UINT32)
Open an adapter by index.
Definition: vlib_aux.c:614
void closeAllAdapters(void)
Close all adapters in the repository.
Definition: vlib_aux.c:669
unsigned int channel
SCSI channel.
Definition: vlib.h:452
size_t allocated
total number of elements in the array
Definition: vlib.h:428
#define VLIB_INVALID_HANDLE
This is the value of an invalid handle as used in this library.
Definition: vlib.h:400
static struct vlib_unit * getUnitFromRepos(struct vlib_port *port, struct vlib_unit *unit)
Check if an unit specified in an unit event is already stored in the repository.
Definition: vlib_aux.c:322
int addPortToRepos(struct vlib_adapter *, struct vlib_port *)
Add a port from to the repository.
Definition: vlib_aux.c:409
unsigned int target
SCSI id.
Definition: vlib.h:436
static uint32_t vlib_FCID_to_hbaFCID(uint32_t fcid)
Convert a FC DID to a FC-HBA PortFcId.
Definition: vlib_aux.h:101
char * getSgDevFromPort(struct vlib_port *)
Get the first sg device from an adapter.
Definition: vlib_aux.c:901
#define VLIB_ADAPTERNAME_PREFIX
Prefix used to concatednate an adapter name.
Definition: vlib.h:394
struct block ports
List of ports.
Definition: vlib.h:478
HBA_PORTSPEED vlibIntToSymbolPortSpeed(int speed)
Maps the result of a port speed int to the HBA_PORTSPEED int.
Definition: vlib_aux.c:760
static void invalidateAllAdapters(void)
Mark all adapters in repository as invalid.
Definition: vlib_aux.h:122
struct vlib_port * getPortByWWPN(const struct vlib_adapter *adapter, const wwn_t wwpn)
Get a port by its WWPN.
Definition: vlib_aux.c:249