162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> 462306a36Sopenharmony_ci * Bugreports.to..: <Linux390@de.ibm.com> 562306a36Sopenharmony_ci * Copyright IBM Corp. 1999, 2000 662306a36Sopenharmony_ci * EMC Symmetrix ioctl Copyright EMC Corporation, 2008 762306a36Sopenharmony_ci * Author.........: Nigel Hislop <hislop_nigel@emc.com> 862306a36Sopenharmony_ci * 962306a36Sopenharmony_ci * This file is the interface of the DASD device driver, which is exported to user space 1062306a36Sopenharmony_ci * any future changes wrt the API will result in a change of the APIVERSION reported 1162306a36Sopenharmony_ci * to userspace by the DASDAPIVER-ioctl 1262306a36Sopenharmony_ci * 1362306a36Sopenharmony_ci */ 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#ifndef DASD_H 1662306a36Sopenharmony_ci#define DASD_H 1762306a36Sopenharmony_ci#include <linux/types.h> 1862306a36Sopenharmony_ci#include <linux/ioctl.h> 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci#define DASD_IOCTL_LETTER 'D' 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci#define DASD_API_VERSION 6 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci/* 2562306a36Sopenharmony_ci * struct dasd_information2_t 2662306a36Sopenharmony_ci * represents any data about the device, which is visible to userspace. 2762306a36Sopenharmony_ci * including format and featueres. 2862306a36Sopenharmony_ci */ 2962306a36Sopenharmony_citypedef struct dasd_information2_t { 3062306a36Sopenharmony_ci unsigned int devno; /* S/390 devno */ 3162306a36Sopenharmony_ci unsigned int real_devno; /* for aliases */ 3262306a36Sopenharmony_ci unsigned int schid; /* S/390 subchannel identifier */ 3362306a36Sopenharmony_ci unsigned int cu_type : 16; /* from SenseID */ 3462306a36Sopenharmony_ci unsigned int cu_model : 8; /* from SenseID */ 3562306a36Sopenharmony_ci unsigned int dev_type : 16; /* from SenseID */ 3662306a36Sopenharmony_ci unsigned int dev_model : 8; /* from SenseID */ 3762306a36Sopenharmony_ci unsigned int open_count; 3862306a36Sopenharmony_ci unsigned int req_queue_len; 3962306a36Sopenharmony_ci unsigned int chanq_len; /* length of chanq */ 4062306a36Sopenharmony_ci char type[4]; /* from discipline.name, 'none' for unknown */ 4162306a36Sopenharmony_ci unsigned int status; /* current device level */ 4262306a36Sopenharmony_ci unsigned int label_block; /* where to find the VOLSER */ 4362306a36Sopenharmony_ci unsigned int FBA_layout; /* fixed block size (like AIXVOL) */ 4462306a36Sopenharmony_ci unsigned int characteristics_size; 4562306a36Sopenharmony_ci unsigned int confdata_size; 4662306a36Sopenharmony_ci char characteristics[64]; /* from read_device_characteristics */ 4762306a36Sopenharmony_ci char configuration_data[256]; /* from read_configuration_data */ 4862306a36Sopenharmony_ci unsigned int format; /* format info like formatted/cdl/ldl/... */ 4962306a36Sopenharmony_ci unsigned int features; /* dasd features like 'ro',... */ 5062306a36Sopenharmony_ci unsigned int reserved0; /* reserved for further use ,... */ 5162306a36Sopenharmony_ci unsigned int reserved1; /* reserved for further use ,... */ 5262306a36Sopenharmony_ci unsigned int reserved2; /* reserved for further use ,... */ 5362306a36Sopenharmony_ci unsigned int reserved3; /* reserved for further use ,... */ 5462306a36Sopenharmony_ci unsigned int reserved4; /* reserved for further use ,... */ 5562306a36Sopenharmony_ci unsigned int reserved5; /* reserved for further use ,... */ 5662306a36Sopenharmony_ci unsigned int reserved6; /* reserved for further use ,... */ 5762306a36Sopenharmony_ci unsigned int reserved7; /* reserved for further use ,... */ 5862306a36Sopenharmony_ci} dasd_information2_t; 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci/* 6162306a36Sopenharmony_ci * values to be used for dasd_information_t.format 6262306a36Sopenharmony_ci * 0x00: NOT formatted 6362306a36Sopenharmony_ci * 0x01: Linux disc layout 6462306a36Sopenharmony_ci * 0x02: Common disc layout 6562306a36Sopenharmony_ci */ 6662306a36Sopenharmony_ci#define DASD_FORMAT_NONE 0 6762306a36Sopenharmony_ci#define DASD_FORMAT_LDL 1 6862306a36Sopenharmony_ci#define DASD_FORMAT_CDL 2 6962306a36Sopenharmony_ci/* 7062306a36Sopenharmony_ci * values to be used for dasd_information_t.features 7162306a36Sopenharmony_ci * 0x100: default features 7262306a36Sopenharmony_ci * 0x001: readonly (ro) 7362306a36Sopenharmony_ci * 0x002: use diag discipline (diag) 7462306a36Sopenharmony_ci * 0x004: set the device initially online (internal use only) 7562306a36Sopenharmony_ci * 0x008: enable ERP related logging 7662306a36Sopenharmony_ci * 0x010: allow I/O to fail on lost paths 7762306a36Sopenharmony_ci * 0x020: allow I/O to fail when a lock was stolen 7862306a36Sopenharmony_ci * 0x040: give access to raw eckd data 7962306a36Sopenharmony_ci * 0x080: enable discard support 8062306a36Sopenharmony_ci * 0x100: enable autodisable for IFCC errors (default) 8162306a36Sopenharmony_ci * 0x200: enable requeue of all requests on autoquiesce 8262306a36Sopenharmony_ci */ 8362306a36Sopenharmony_ci#define DASD_FEATURE_READONLY 0x001 8462306a36Sopenharmony_ci#define DASD_FEATURE_USEDIAG 0x002 8562306a36Sopenharmony_ci#define DASD_FEATURE_INITIAL_ONLINE 0x004 8662306a36Sopenharmony_ci#define DASD_FEATURE_ERPLOG 0x008 8762306a36Sopenharmony_ci#define DASD_FEATURE_FAILFAST 0x010 8862306a36Sopenharmony_ci#define DASD_FEATURE_FAILONSLCK 0x020 8962306a36Sopenharmony_ci#define DASD_FEATURE_USERAW 0x040 9062306a36Sopenharmony_ci#define DASD_FEATURE_DISCARD 0x080 9162306a36Sopenharmony_ci#define DASD_FEATURE_PATH_AUTODISABLE 0x100 9262306a36Sopenharmony_ci#define DASD_FEATURE_REQUEUEQUIESCE 0x200 9362306a36Sopenharmony_ci#define DASD_FEATURE_DEFAULT DASD_FEATURE_PATH_AUTODISABLE 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ci#define DASD_PARTN_BITS 2 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci/* 9862306a36Sopenharmony_ci * struct dasd_information_t 9962306a36Sopenharmony_ci * represents any data about the data, which is visible to userspace 10062306a36Sopenharmony_ci */ 10162306a36Sopenharmony_citypedef struct dasd_information_t { 10262306a36Sopenharmony_ci unsigned int devno; /* S/390 devno */ 10362306a36Sopenharmony_ci unsigned int real_devno; /* for aliases */ 10462306a36Sopenharmony_ci unsigned int schid; /* S/390 subchannel identifier */ 10562306a36Sopenharmony_ci unsigned int cu_type : 16; /* from SenseID */ 10662306a36Sopenharmony_ci unsigned int cu_model : 8; /* from SenseID */ 10762306a36Sopenharmony_ci unsigned int dev_type : 16; /* from SenseID */ 10862306a36Sopenharmony_ci unsigned int dev_model : 8; /* from SenseID */ 10962306a36Sopenharmony_ci unsigned int open_count; 11062306a36Sopenharmony_ci unsigned int req_queue_len; 11162306a36Sopenharmony_ci unsigned int chanq_len; /* length of chanq */ 11262306a36Sopenharmony_ci char type[4]; /* from discipline.name, 'none' for unknown */ 11362306a36Sopenharmony_ci unsigned int status; /* current device level */ 11462306a36Sopenharmony_ci unsigned int label_block; /* where to find the VOLSER */ 11562306a36Sopenharmony_ci unsigned int FBA_layout; /* fixed block size (like AIXVOL) */ 11662306a36Sopenharmony_ci unsigned int characteristics_size; 11762306a36Sopenharmony_ci unsigned int confdata_size; 11862306a36Sopenharmony_ci char characteristics[64]; /* from read_device_characteristics */ 11962306a36Sopenharmony_ci char configuration_data[256]; /* from read_configuration_data */ 12062306a36Sopenharmony_ci} dasd_information_t; 12162306a36Sopenharmony_ci 12262306a36Sopenharmony_ci/* 12362306a36Sopenharmony_ci * Read Subsystem Data - Performance Statistics 12462306a36Sopenharmony_ci */ 12562306a36Sopenharmony_citypedef struct dasd_rssd_perf_stats_t { 12662306a36Sopenharmony_ci unsigned char invalid:1; 12762306a36Sopenharmony_ci unsigned char format:3; 12862306a36Sopenharmony_ci unsigned char data_format:4; 12962306a36Sopenharmony_ci unsigned char unit_address; 13062306a36Sopenharmony_ci unsigned short device_status; 13162306a36Sopenharmony_ci unsigned int nr_read_normal; 13262306a36Sopenharmony_ci unsigned int nr_read_normal_hits; 13362306a36Sopenharmony_ci unsigned int nr_write_normal; 13462306a36Sopenharmony_ci unsigned int nr_write_fast_normal_hits; 13562306a36Sopenharmony_ci unsigned int nr_read_seq; 13662306a36Sopenharmony_ci unsigned int nr_read_seq_hits; 13762306a36Sopenharmony_ci unsigned int nr_write_seq; 13862306a36Sopenharmony_ci unsigned int nr_write_fast_seq_hits; 13962306a36Sopenharmony_ci unsigned int nr_read_cache; 14062306a36Sopenharmony_ci unsigned int nr_read_cache_hits; 14162306a36Sopenharmony_ci unsigned int nr_write_cache; 14262306a36Sopenharmony_ci unsigned int nr_write_fast_cache_hits; 14362306a36Sopenharmony_ci unsigned int nr_inhibit_cache; 14462306a36Sopenharmony_ci unsigned int nr_bybass_cache; 14562306a36Sopenharmony_ci unsigned int nr_seq_dasd_to_cache; 14662306a36Sopenharmony_ci unsigned int nr_dasd_to_cache; 14762306a36Sopenharmony_ci unsigned int nr_cache_to_dasd; 14862306a36Sopenharmony_ci unsigned int nr_delayed_fast_write; 14962306a36Sopenharmony_ci unsigned int nr_normal_fast_write; 15062306a36Sopenharmony_ci unsigned int nr_seq_fast_write; 15162306a36Sopenharmony_ci unsigned int nr_cache_miss; 15262306a36Sopenharmony_ci unsigned char status2; 15362306a36Sopenharmony_ci unsigned int nr_quick_write_promotes; 15462306a36Sopenharmony_ci unsigned char reserved; 15562306a36Sopenharmony_ci unsigned short ssid; 15662306a36Sopenharmony_ci unsigned char reseved2[96]; 15762306a36Sopenharmony_ci} __attribute__((packed)) dasd_rssd_perf_stats_t; 15862306a36Sopenharmony_ci 15962306a36Sopenharmony_ci/* 16062306a36Sopenharmony_ci * struct profile_info_t 16162306a36Sopenharmony_ci * holds the profinling information 16262306a36Sopenharmony_ci */ 16362306a36Sopenharmony_citypedef struct dasd_profile_info_t { 16462306a36Sopenharmony_ci unsigned int dasd_io_reqs; /* number of requests processed at all */ 16562306a36Sopenharmony_ci unsigned int dasd_io_sects; /* number of sectors processed at all */ 16662306a36Sopenharmony_ci unsigned int dasd_io_secs[32]; /* histogram of request's sizes */ 16762306a36Sopenharmony_ci unsigned int dasd_io_times[32]; /* histogram of requests's times */ 16862306a36Sopenharmony_ci unsigned int dasd_io_timps[32]; /* histogram of requests's times per sector */ 16962306a36Sopenharmony_ci unsigned int dasd_io_time1[32]; /* histogram of time from build to start */ 17062306a36Sopenharmony_ci unsigned int dasd_io_time2[32]; /* histogram of time from start to irq */ 17162306a36Sopenharmony_ci unsigned int dasd_io_time2ps[32]; /* histogram of time from start to irq */ 17262306a36Sopenharmony_ci unsigned int dasd_io_time3[32]; /* histogram of time from irq to end */ 17362306a36Sopenharmony_ci unsigned int dasd_io_nr_req[32]; /* histogram of # of requests in chanq */ 17462306a36Sopenharmony_ci} dasd_profile_info_t; 17562306a36Sopenharmony_ci 17662306a36Sopenharmony_ci/* 17762306a36Sopenharmony_ci * struct format_data_t 17862306a36Sopenharmony_ci * represents all data necessary to format a dasd 17962306a36Sopenharmony_ci */ 18062306a36Sopenharmony_citypedef struct format_data_t { 18162306a36Sopenharmony_ci unsigned int start_unit; /* from track */ 18262306a36Sopenharmony_ci unsigned int stop_unit; /* to track */ 18362306a36Sopenharmony_ci unsigned int blksize; /* sectorsize */ 18462306a36Sopenharmony_ci unsigned int intensity; 18562306a36Sopenharmony_ci} format_data_t; 18662306a36Sopenharmony_ci 18762306a36Sopenharmony_ci/* 18862306a36Sopenharmony_ci * struct dasd_copypair_swap_data_t 18962306a36Sopenharmony_ci * represents all data necessary to issue a swap of the copy pair relation 19062306a36Sopenharmony_ci */ 19162306a36Sopenharmony_cistruct dasd_copypair_swap_data_t { 19262306a36Sopenharmony_ci char primary[20]; /* BUSID of primary */ 19362306a36Sopenharmony_ci char secondary[20]; /* BUSID of secondary */ 19462306a36Sopenharmony_ci 19562306a36Sopenharmony_ci /* Reserved for future updates. */ 19662306a36Sopenharmony_ci __u8 reserved[64]; 19762306a36Sopenharmony_ci}; 19862306a36Sopenharmony_ci 19962306a36Sopenharmony_ci/* 20062306a36Sopenharmony_ci * values to be used for format_data_t.intensity 20162306a36Sopenharmony_ci * 0/8: normal format 20262306a36Sopenharmony_ci * 1/9: also write record zero 20362306a36Sopenharmony_ci * 3/11: also write home address 20462306a36Sopenharmony_ci * 4/12: invalidate track 20562306a36Sopenharmony_ci */ 20662306a36Sopenharmony_ci#define DASD_FMT_INT_FMT_R0 1 /* write record zero */ 20762306a36Sopenharmony_ci#define DASD_FMT_INT_FMT_HA 2 /* write home address, also set FMT_R0 ! */ 20862306a36Sopenharmony_ci#define DASD_FMT_INT_INVAL 4 /* invalidate tracks */ 20962306a36Sopenharmony_ci#define DASD_FMT_INT_COMPAT 8 /* use OS/390 compatible disk layout */ 21062306a36Sopenharmony_ci#define DASD_FMT_INT_FMT_NOR0 16 /* remove permission to write record zero */ 21162306a36Sopenharmony_ci#define DASD_FMT_INT_ESE_FULL 32 /* release space for entire volume */ 21262306a36Sopenharmony_ci 21362306a36Sopenharmony_ci/* 21462306a36Sopenharmony_ci * struct format_check_t 21562306a36Sopenharmony_ci * represents all data necessary to evaluate the format of 21662306a36Sopenharmony_ci * different tracks of a dasd 21762306a36Sopenharmony_ci */ 21862306a36Sopenharmony_citypedef struct format_check_t { 21962306a36Sopenharmony_ci /* Input */ 22062306a36Sopenharmony_ci struct format_data_t expect; 22162306a36Sopenharmony_ci 22262306a36Sopenharmony_ci /* Output */ 22362306a36Sopenharmony_ci unsigned int result; /* Error indication (DASD_FMT_ERR_*) */ 22462306a36Sopenharmony_ci unsigned int unit; /* Track that is in error */ 22562306a36Sopenharmony_ci unsigned int rec; /* Record that is in error */ 22662306a36Sopenharmony_ci unsigned int num_records; /* Records in the track in error */ 22762306a36Sopenharmony_ci unsigned int blksize; /* Blocksize of first record in error */ 22862306a36Sopenharmony_ci unsigned int key_length; /* Key length of first record in error */ 22962306a36Sopenharmony_ci} format_check_t; 23062306a36Sopenharmony_ci 23162306a36Sopenharmony_ci/* Values returned in format_check_t when a format error is detected: */ 23262306a36Sopenharmony_ci/* Too few records were found on a single track */ 23362306a36Sopenharmony_ci#define DASD_FMT_ERR_TOO_FEW_RECORDS 1 23462306a36Sopenharmony_ci/* Too many records were found on a single track */ 23562306a36Sopenharmony_ci#define DASD_FMT_ERR_TOO_MANY_RECORDS 2 23662306a36Sopenharmony_ci/* Blocksize/data-length of a record was wrong */ 23762306a36Sopenharmony_ci#define DASD_FMT_ERR_BLKSIZE 3 23862306a36Sopenharmony_ci/* A record ID is defined by cylinder, head, and record number (CHR). */ 23962306a36Sopenharmony_ci/* On mismatch, this error is set */ 24062306a36Sopenharmony_ci#define DASD_FMT_ERR_RECORD_ID 4 24162306a36Sopenharmony_ci/* If key-length was != 0 */ 24262306a36Sopenharmony_ci#define DASD_FMT_ERR_KEY_LENGTH 5 24362306a36Sopenharmony_ci 24462306a36Sopenharmony_ci/* 24562306a36Sopenharmony_ci * struct attrib_data_t 24662306a36Sopenharmony_ci * represents the operation (cache) bits for the device. 24762306a36Sopenharmony_ci * Used in DE to influence caching of the DASD. 24862306a36Sopenharmony_ci */ 24962306a36Sopenharmony_citypedef struct attrib_data_t { 25062306a36Sopenharmony_ci unsigned char operation:3; /* cache operation mode */ 25162306a36Sopenharmony_ci unsigned char reserved:5; /* cache operation mode */ 25262306a36Sopenharmony_ci __u16 nr_cyl; /* no of cyliners for read ahaed */ 25362306a36Sopenharmony_ci __u8 reserved2[29]; /* for future use */ 25462306a36Sopenharmony_ci} __attribute__ ((packed)) attrib_data_t; 25562306a36Sopenharmony_ci 25662306a36Sopenharmony_ci/* definition of operation (cache) bits within attributes of DE */ 25762306a36Sopenharmony_ci#define DASD_NORMAL_CACHE 0x0 25862306a36Sopenharmony_ci#define DASD_BYPASS_CACHE 0x1 25962306a36Sopenharmony_ci#define DASD_INHIBIT_LOAD 0x2 26062306a36Sopenharmony_ci#define DASD_SEQ_ACCESS 0x3 26162306a36Sopenharmony_ci#define DASD_SEQ_PRESTAGE 0x4 26262306a36Sopenharmony_ci#define DASD_REC_ACCESS 0x5 26362306a36Sopenharmony_ci 26462306a36Sopenharmony_ci/* 26562306a36Sopenharmony_ci * Perform EMC Symmetrix I/O 26662306a36Sopenharmony_ci */ 26762306a36Sopenharmony_citypedef struct dasd_symmio_parms { 26862306a36Sopenharmony_ci unsigned char reserved[8]; /* compat with older releases */ 26962306a36Sopenharmony_ci unsigned long long psf_data; /* char * cast to u64 */ 27062306a36Sopenharmony_ci unsigned long long rssd_result; /* char * cast to u64 */ 27162306a36Sopenharmony_ci int psf_data_len; 27262306a36Sopenharmony_ci int rssd_result_len; 27362306a36Sopenharmony_ci} __attribute__ ((packed)) dasd_symmio_parms_t; 27462306a36Sopenharmony_ci 27562306a36Sopenharmony_ci/* 27662306a36Sopenharmony_ci * Data returned by Sense Path Group ID (SNID) 27762306a36Sopenharmony_ci */ 27862306a36Sopenharmony_cistruct dasd_snid_data { 27962306a36Sopenharmony_ci struct { 28062306a36Sopenharmony_ci __u8 group:2; 28162306a36Sopenharmony_ci __u8 reserve:2; 28262306a36Sopenharmony_ci __u8 mode:1; 28362306a36Sopenharmony_ci __u8 res:3; 28462306a36Sopenharmony_ci } __attribute__ ((packed)) path_state; 28562306a36Sopenharmony_ci __u8 pgid[11]; 28662306a36Sopenharmony_ci} __attribute__ ((packed)); 28762306a36Sopenharmony_ci 28862306a36Sopenharmony_cistruct dasd_snid_ioctl_data { 28962306a36Sopenharmony_ci struct dasd_snid_data data; 29062306a36Sopenharmony_ci __u8 path_mask; 29162306a36Sopenharmony_ci} __attribute__ ((packed)); 29262306a36Sopenharmony_ci 29362306a36Sopenharmony_ci 29462306a36Sopenharmony_ci/******************************************************************************** 29562306a36Sopenharmony_ci * SECTION: Definition of IOCTLs 29662306a36Sopenharmony_ci * 29762306a36Sopenharmony_ci * Here ist how the ioctl-nr should be used: 29862306a36Sopenharmony_ci * 0 - 31 DASD driver itself 29962306a36Sopenharmony_ci * 32 - 239 still open 30062306a36Sopenharmony_ci * 240 - 255 reserved for EMC 30162306a36Sopenharmony_ci *******************************************************************************/ 30262306a36Sopenharmony_ci 30362306a36Sopenharmony_ci/* Disable the volume (for Linux) */ 30462306a36Sopenharmony_ci#define BIODASDDISABLE _IO(DASD_IOCTL_LETTER,0) 30562306a36Sopenharmony_ci/* Enable the volume (for Linux) */ 30662306a36Sopenharmony_ci#define BIODASDENABLE _IO(DASD_IOCTL_LETTER,1) 30762306a36Sopenharmony_ci/* Issue a reserve/release command, rsp. */ 30862306a36Sopenharmony_ci#define BIODASDRSRV _IO(DASD_IOCTL_LETTER,2) /* reserve */ 30962306a36Sopenharmony_ci#define BIODASDRLSE _IO(DASD_IOCTL_LETTER,3) /* release */ 31062306a36Sopenharmony_ci#define BIODASDSLCK _IO(DASD_IOCTL_LETTER,4) /* steal lock */ 31162306a36Sopenharmony_ci/* reset profiling information of a device */ 31262306a36Sopenharmony_ci#define BIODASDPRRST _IO(DASD_IOCTL_LETTER,5) 31362306a36Sopenharmony_ci/* Quiesce IO on device */ 31462306a36Sopenharmony_ci#define BIODASDQUIESCE _IO(DASD_IOCTL_LETTER,6) 31562306a36Sopenharmony_ci/* Resume IO on device */ 31662306a36Sopenharmony_ci#define BIODASDRESUME _IO(DASD_IOCTL_LETTER,7) 31762306a36Sopenharmony_ci/* Abort all I/O on a device */ 31862306a36Sopenharmony_ci#define BIODASDABORTIO _IO(DASD_IOCTL_LETTER, 240) 31962306a36Sopenharmony_ci/* Allow I/O on a device */ 32062306a36Sopenharmony_ci#define BIODASDALLOWIO _IO(DASD_IOCTL_LETTER, 241) 32162306a36Sopenharmony_ci 32262306a36Sopenharmony_ci 32362306a36Sopenharmony_ci/* retrieve API version number */ 32462306a36Sopenharmony_ci#define DASDAPIVER _IOR(DASD_IOCTL_LETTER,0,int) 32562306a36Sopenharmony_ci/* Get information on a dasd device */ 32662306a36Sopenharmony_ci#define BIODASDINFO _IOR(DASD_IOCTL_LETTER,1,dasd_information_t) 32762306a36Sopenharmony_ci/* retrieve profiling information of a device */ 32862306a36Sopenharmony_ci#define BIODASDPRRD _IOR(DASD_IOCTL_LETTER,2,dasd_profile_info_t) 32962306a36Sopenharmony_ci/* Get information on a dasd device (enhanced) */ 33062306a36Sopenharmony_ci#define BIODASDINFO2 _IOR(DASD_IOCTL_LETTER,3,dasd_information2_t) 33162306a36Sopenharmony_ci/* Performance Statistics Read */ 33262306a36Sopenharmony_ci#define BIODASDPSRD _IOR(DASD_IOCTL_LETTER,4,dasd_rssd_perf_stats_t) 33362306a36Sopenharmony_ci/* Get Attributes (cache operations) */ 33462306a36Sopenharmony_ci#define BIODASDGATTR _IOR(DASD_IOCTL_LETTER,5,attrib_data_t) 33562306a36Sopenharmony_ci 33662306a36Sopenharmony_ci 33762306a36Sopenharmony_ci/* #define BIODASDFORMAT _IOW(IOCTL_LETTER,0,format_data_t) , deprecated */ 33862306a36Sopenharmony_ci#define BIODASDFMT _IOW(DASD_IOCTL_LETTER,1,format_data_t) 33962306a36Sopenharmony_ci/* Set Attributes (cache operations) */ 34062306a36Sopenharmony_ci#define BIODASDSATTR _IOW(DASD_IOCTL_LETTER,2,attrib_data_t) 34162306a36Sopenharmony_ci/* Release Allocated Space */ 34262306a36Sopenharmony_ci#define BIODASDRAS _IOW(DASD_IOCTL_LETTER, 3, format_data_t) 34362306a36Sopenharmony_ci/* Swap copy pair relation */ 34462306a36Sopenharmony_ci#define BIODASDCOPYPAIRSWAP _IOW(DASD_IOCTL_LETTER, 4, struct dasd_copypair_swap_data_t) 34562306a36Sopenharmony_ci 34662306a36Sopenharmony_ci/* Get Sense Path Group ID (SNID) data */ 34762306a36Sopenharmony_ci#define BIODASDSNID _IOWR(DASD_IOCTL_LETTER, 1, struct dasd_snid_ioctl_data) 34862306a36Sopenharmony_ci/* Check device format according to format_check_t */ 34962306a36Sopenharmony_ci#define BIODASDCHECKFMT _IOWR(DASD_IOCTL_LETTER, 2, format_check_t) 35062306a36Sopenharmony_ci 35162306a36Sopenharmony_ci#define BIODASDSYMMIO _IOWR(DASD_IOCTL_LETTER, 240, dasd_symmio_parms_t) 35262306a36Sopenharmony_ci 35362306a36Sopenharmony_ci#endif /* DASD_H */ 35462306a36Sopenharmony_ci 355