SIOC_QUERY_PATH
This IOCTL command returns the primary path and the first alternate path information for a physical device.
The data structure is
struct scsi_path
{
char primary_name[30]; /* primary logical device name */
char primary_parent[30]; /* primary SCSI parent name, "Host" name */
unchar primary_id; /* primary target address of device, "Id" value*/
unchar primary_lun; /* primary logical unit of device, "lun" value */
unchar primary_bus; /* primary SCSI bus for device, "Channel" value*/
unsigned long long primary_fcp_scsi_id; /* not supported */
unsigned long long primary_fcp_lun_id; /* not supported */
unsigned long long primary_fcp_ww_name; /* not supported */
unchar primary_enabled; /* primary path enabled */
unchar primary_id_valid; /* primary id/lun/bus fields valid */
unchar primary_fcp_id_valid; /* not supported */
unchar alternate_configured; /* alternate path configured */
char alternate_name[30]; /* alternate logical device name */
char alternate_parent[30]; /* alternate SCSI parent name */
unchar alternate_id; /* alternate target address of device */
unchar alternate_lun; /* alternate logical unit of device */
unchar alternate_bus; /* alternate SCSI bus for device */
unsigned long long alternate_fcp_scsi_id; /* not supported */
unsigned long long alternate_fcp_lun_id; /* not supported */
unsigned long long alternate_fcp_ww_name; /* not supported */
unchar alternate_enabled; /* alternate path enabled */
unchar alternate_id_valid; /* alternate id/lun/bus fields valid */
unchar alternate_fcp_id_valid; /* not supported */
unchar primary_drive_port_valid; /* not supported */
unchar primary_drive_port; /* not supported */
unchar alternate_drive_port_valid; /* not supported */
unchar alternate_drive_port; /* not supported */
unchar primary_fenced; /* primary fenced by disable path ioctl */
unchar alternate_fenced; /* alternate fenced by disable path ioctl */
unchar primary_host; /* primary host bus adapter id */
unchar alternate_host; /* alternate host bus adapter id */
char reserved[56];
};
An example of the SIOC_QUERY_PATH command is
#include <sys/IBM_tape.h>
struct scsi_path path;
memset(&path, 0, sizeof(struct scsi_path));
printf("Querying SCSI paths...\n");
rc = ioctl(fd, SIOC_QUERY_PATH, &path);
if(rc == 0)
show_path(&path);