Print this page
usr/src/common/zfs/zprop_common.c
@@ -16,16 +16,18 @@
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
+
/*
* Copyright (c) 1990, 2010, Oracle and/or its affiliates. All rights reserved.
*/
+
/*
* Copyright 2011 cyril.galibern@opensvc.com
- * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
+ * Copyright 2019 Nexenta Systems, Inc.
*/
#ifndef _SYS_SCSI_TARGETS_SDDEF_H
#define _SYS_SCSI_TARGETS_SDDEF_H
@@ -36,14 +38,12 @@
#ifdef __cplusplus
extern "C" {
#endif
-
#if defined(_KERNEL) || defined(_KMEMUSER)
-
#define SD_SUCCESS 0
#define SD_FAILURE (-1)
#if defined(TRUE)
#undef TRUE
@@ -54,39 +54,22 @@
#endif
#define TRUE 1
#define FALSE 0
-#if defined(VERBOSE)
-#undef VERBOSE
-#endif
-
-#if defined(SILENT)
-#undef SILENT
-#endif
-
-
/*
* Fault Injection Flag for Inclusion of Code
- *
- * This should only be defined when SDDEBUG is defined
- * #if DEBUG || lint
- * #define SD_FAULT_INJECTION
- * #endif
*/
-
#if DEBUG || lint
#define SD_FAULT_INJECTION
#endif
-#define VERBOSE 1
-#define SILENT 0
/*
* Structures for recording whether a device is fully open or closed.
* Assumptions:
*
- * + There are only 8 (sparc) or 16 (x86) disk slices possible.
+ * + There are only 16 disk slices possible.
* + BLK, MNT, CHR, SWP don't change in some future release!
*/
#if defined(_SUNOS_VTOC_8)
@@ -110,10 +93,15 @@
#else
#error "No VTOC format defined."
#endif
+#define P0_RAW_DISK (NDKMAP)
+#define FDISK_P1 (NDKMAP+1)
+#define FDISK_P2 (NDKMAP+2)
+#define FDISK_P3 (NDKMAP+3)
+#define FDISK_P4 (NDKMAP+4)
#define SDUNIT(dev) (getminor((dev)) >> SDUNIT_SHIFT)
#define SDPART(dev) (getminor((dev)) & SDPART_MASK)
/*
@@ -129,12 +117,10 @@
* The instance number is encoded in the minor device number.
*/
#define SD_GET_INSTANCE_FROM_BUF(bp) \
(getminor((bp)->b_edev) >> SDUNIT_SHIFT)
-
-
struct ocinfo {
/*
* Types BLK, MNT, CHR, SWP,
* assumed to be types 0-3.
*/
@@ -150,11 +136,10 @@
};
#define lyropen rinfo.lyr_open
#define regopen rinfo.reg_open
-
#define SD_CDB_GROUP0 0
#define SD_CDB_GROUP1 1
#define SD_CDB_GROUP5 2
#define SD_CDB_GROUP4 3
@@ -163,12 +148,10 @@
uchar_t sc_grpmask; /* CDB group code mask (for cmd opcode) */
uint64_t sc_maxlba; /* Maximum logical block addr. supported */
uint32_t sc_maxlen; /* Maximum transfer length supported */
};
-
-
/*
* The following declaration are for Non-512 byte block support for the
* removable devices. (ex - DVD RAM, MO).
* wm_state: This is an enumeration for the different states for
* manipalating write range list during the read-modify-write-operation.
@@ -194,13 +177,10 @@
struct sd_w_map *wm_next; /* Forward pointed to sd_w_map */
struct sd_w_map *wm_prev; /* Back pointer to sd_w_map */
kcondvar_t wm_avail; /* Sleep on this, while not available */
};
-_NOTE(MUTEX_PROTECTS_DATA(scsi_device::sd_mutex, sd_w_map::wm_flags))
-
-
/*
* This is the struct for the layer-private data area for the
* mapblocksize layer.
*/
@@ -210,14 +190,60 @@
struct sd_w_map *mbs_wmp; /* ptr to write-map struct for RMW */
ssize_t mbs_copy_offset;
int mbs_layer_index; /* chain index for RMW */
};
-_NOTE(SCHEME_PROTECTS_DATA("unshared data", sd_mapblocksize_info))
+/*
+ * Latency is tracked in usec and is quantized by power of two starting at
+ * offset SD_LAT_MIN_USEC_SHIFT. Values below that offset will go in the first
+ * (0th) bucket. Similar, values above SD_LAT_MAX_USEC_SHIFT go in the
+ * (SD_LAT_MAX_USEC_SHIFT - 1) bucket.
+ *
+ * From observations, using SAS SSDs and rotational drives these values are
+ * sufficient for now.
+ */
+#define SD_LAT_MIN_USEC_SHIFT 4
+#define SD_LAT_MAX_USEC_SHIFT 24
+#define SD_LAT_BUCKET_MAX (SD_LAT_MAX_USEC_SHIFT - SD_LAT_MIN_USEC_SHIFT)
+typedef struct un_lat_stat {
+ hrtime_t l_sum; /* total latency */
+ uint64_t l_nrequest; /* number of requests */
+ uint64_t l_histogram[SD_LAT_BUCKET_MAX]; /* latency histogram */
+} un_lat_stat_t;
+
+/* Thin-provisioning (UNMAP) flags for un_thin_flags. */
+enum {
+ SD_THIN_PROV_ENABLED = 1 << 0, /* UNMAP available */
+ SD_THIN_PROV_READ_ZEROS = 1 << 1 /* unmapped blk = zeros */
+};
+
/*
+ * Device limits as read from the Block Limits VPD page (0xB0). If the page
+ * is unavailable, will be filled with some defaults.
+ */
+typedef struct sd_blk_limits_s {
+ uint16_t lim_opt_xfer_len_gran;
+ uint32_t lim_max_xfer_len;
+ uint32_t lim_opt_xfer_len;
+ uint32_t lim_max_pfetch_len;
+ uint32_t lim_max_unmap_lba_cnt;
+ uint32_t lim_max_unmap_descr_cnt;
+ uint32_t lim_opt_unmap_gran;
+ uint32_t lim_unmap_gran_align;
+ uint64_t lim_max_write_same_len;
+} sd_blk_limits_t;
+
+typedef struct sd_unmapstats {
+ kstat_named_t us_cmds;
+ kstat_named_t us_errs;
+ kstat_named_t us_extents;
+ kstat_named_t us_bytes;
+} sd_unmapstats_t;
+
+/*
* sd_lun: The main data structure for a scsi logical unit.
* Stored as the softstate structure for each device.
*/
struct sd_lun {
@@ -282,11 +308,10 @@
uint_t un_busy_retry_count; /* Per disk BUSY retry count */
uint_t un_retry_count; /* Per disk retry count */
uint_t un_victim_retry_count; /* Per disk victim retry count */
- /* (4356701, 4367306) */
uint_t un_reset_retry_count; /* max io retries before issuing reset */
ushort_t un_reserve_release_time; /* reservation release timeout */
uchar_t un_reservation_type; /* SCSI-3 or SCSI-2 */
uint_t un_max_xfer_size; /* Maximum DMA transfer size */
@@ -354,11 +379,15 @@
* stats, and other such bookkeeping info.
*/
union ocmap un_ocmap; /* open partition map */
struct kstat *un_pstats[NSDMAP]; /* partition statistics */
struct kstat *un_stats; /* disk statistics */
+ sd_unmapstats_t *un_unmapstats; /* UNMAP stats structure */
+ struct kstat *un_unmapstats_ks; /* UNMAP kstat */
kstat_t *un_errstats; /* for error statistics */
+ kstat_t *un_lat_ksp; /* pointer to the raw kstat */
+ un_lat_stat_t *un_lat_stats; /* data from the above kstat */
uint64_t un_exclopen; /* exclusive open bitmask */
ddi_devid_t un_devid; /* device id */
uint_t un_vpd_page_mask; /* Supported VPD pages */
/*
@@ -400,11 +429,10 @@
un_f_mmc_cap :1, /* Device is MMC compliant */
un_f_mmc_writable_media :1, /* writable media in device */
un_f_dvdram_writable_device :1, /* DVDRAM device is writable */
un_f_cfg_cdda :1, /* READ CDDA supported */
un_f_cfg_tur_check :1, /* verify un_ncmds before tur */
-
un_f_use_adaptive_throttle :1, /* enable/disable adaptive */
/* throttling */
un_f_pm_is_enabled :1, /* PM is enabled on this */
/* instance */
un_f_watcht_stopped :1, /* media watch thread flag */
@@ -414,11 +442,11 @@
un_f_disksort_disabled :1, /* Flag to disable disksort */
un_f_lun_reset_enabled :1, /* Set if target supports */
/* SCSI Logical Unit Reset */
un_f_doorlock_supported :1, /* Device supports Doorlock */
un_f_start_stop_supported :1, /* device has motor */
- un_f_reserved1 :1;
+ un_f_sdconf_phy_blocksize :1; /* take pbs from sd.conf */
uint32_t
un_f_mboot_supported :1, /* mboot supported */
un_f_is_hotpluggable :1, /* hotpluggable */
un_f_has_removable_media :1, /* has removable media */
@@ -464,15 +492,16 @@
un_f_mmc_gesn_polling :1, /* use GET EVENT STATUS */
/* NOTIFICATION for polling */
un_f_enable_rmw :1, /* Force RMW in sd driver */
un_f_expnevent :1,
un_f_cache_mode_changeable :1, /* can change cache mode */
- un_f_reserved :1;
+ un_f_detach_waiting :1;
/* Ptr to table of strings for ASC/ASCQ error message printing */
struct scsi_asq_key_strings *un_additional_codes;
+ kcondvar_t un_detach_cv;
/*
* Power Management support.
*
* un_pm_mutex protects, un_pm_count, un_pm_timeid, un_pm_busy,
* un_pm_busy_cv, and un_pm_idle_timeid.
@@ -506,10 +535,16 @@
uint_t un_rmw_count; /* count of read-modify-writes */
struct sd_w_map *un_wm; /* head of sd_w_map chain */
uint64_t un_rmw_incre_count; /* count I/O */
timeout_id_t un_rmw_msg_timeid; /* for RMW message control */
+ /* Thin provisioning support (see SD_THIN_PROV_*) */
+ uint64_t un_thin_flags;
+
+ /* Block limits (0xB0 VPD page) */
+ sd_blk_limits_t un_blk_lim;
+
/* For timeout callback to issue a START STOP UNIT command */
timeout_id_t un_startstop_timeid;
/* Timeout callback handle for SD_PATH_DIRECT_PRIORITY cmd restarts */
timeout_id_t un_direct_priority_timeid;
@@ -527,10 +562,13 @@
* failing over, and how many I/O's are failed with the 05/94/01
* sense code.
*/
uint_t un_sonoma_failure_count;
+ int un_io_time;
+ hrtime_t un_slow_io_threshold;
+
/*
* Support for failfast operation.
*/
struct buf *un_failfast_bp;
struct buf *un_failfast_headp;
@@ -541,24 +579,23 @@
kcondvar_t un_wcc_cv; /* synchronize changes to */
/* un_f_write_cache_enabled */
#ifdef SD_FAULT_INJECTION
- /* SD Fault Injection */
#define SD_FI_MAX_BUF 65536
#define SD_FI_MAX_ERROR 1024
kmutex_t un_fi_mutex;
uint_t sd_fi_buf_len;
char sd_fi_log[SD_FI_MAX_BUF];
struct sd_fi_pkt *sd_fi_fifo_pkt[SD_FI_MAX_ERROR];
struct sd_fi_xb *sd_fi_fifo_xb[SD_FI_MAX_ERROR];
struct sd_fi_un *sd_fi_fifo_un[SD_FI_MAX_ERROR];
struct sd_fi_arq *sd_fi_fifo_arq[SD_FI_MAX_ERROR];
+ struct sd_fi_tran *sd_fi_fifo_tran[SD_FI_MAX_ERROR];
uint_t sd_fi_fifo_start;
uint_t sd_fi_fifo_end;
uint_t sd_injection_mask;
-
#endif
cmlb_handle_t un_cmlbhandle;
/*
@@ -630,104 +667,14 @@
/*
* SD_DEFAULT_MAX_XFER_SIZE is the default value to bound the max xfer
* for physio, for devices without tagged queuing enabled.
* The default for devices with tagged queuing enabled is SD_MAX_XFER_SIZE
*/
-#if defined(__i386) || defined(__amd64)
#define SD_DEFAULT_MAX_XFER_SIZE (256 * 1024)
-#endif
#define SD_MAX_XFER_SIZE (1024 * 1024)
/*
- * Warlock annotations
- */
-_NOTE(MUTEX_PROTECTS_DATA(scsi_device::sd_mutex, sd_lun))
-_NOTE(READ_ONLY_DATA(sd_lun::un_sd))
-_NOTE(DATA_READABLE_WITHOUT_LOCK(sd_lun::un_reservation_type))
-_NOTE(DATA_READABLE_WITHOUT_LOCK(sd_lun::un_mincdb))
-_NOTE(DATA_READABLE_WITHOUT_LOCK(sd_lun::un_maxcdb))
-_NOTE(DATA_READABLE_WITHOUT_LOCK(sd_lun::un_max_hba_cdb))
-_NOTE(DATA_READABLE_WITHOUT_LOCK(sd_lun::un_status_len))
-_NOTE(DATA_READABLE_WITHOUT_LOCK(sd_lun::un_f_arq_enabled))
-_NOTE(DATA_READABLE_WITHOUT_LOCK(sd_lun::un_ctype))
-_NOTE(DATA_READABLE_WITHOUT_LOCK(sd_lun::un_cmlbhandle))
-_NOTE(DATA_READABLE_WITHOUT_LOCK(sd_lun::un_fm_private))
-
-
-_NOTE(SCHEME_PROTECTS_DATA("safe sharing",
- sd_lun::un_mhd_token
- sd_lun::un_state
- sd_lun::un_tagflags
- sd_lun::un_f_format_in_progress
- sd_lun::un_resvd_timeid
- sd_lun::un_reset_throttle_timeid
- sd_lun::un_startstop_timeid
- sd_lun::un_dcvb_timeid
- sd_lun::un_f_allow_bus_device_reset
- sd_lun::un_sys_blocksize
- sd_lun::un_tgt_blocksize
- sd_lun::un_phy_blocksize
- sd_lun::un_additional_codes))
-
-_NOTE(SCHEME_PROTECTS_DATA("stable data",
- sd_lun::un_reserve_release_time
- sd_lun::un_max_xfer_size
- sd_lun::un_partial_dma_supported
- sd_lun::un_buf_breakup_supported
- sd_lun::un_f_is_fibre
- sd_lun::un_node_type
- sd_lun::un_buf_chain_type
- sd_lun::un_uscsi_chain_type
- sd_lun::un_direct_chain_type
- sd_lun::un_priority_chain_type
- sd_lun::un_xbuf_attr
- sd_lun::un_cmd_timeout
- sd_lun::un_pkt_flags))
-
-_NOTE(SCHEME_PROTECTS_DATA("Unshared data",
- block_descriptor
- buf
- cdrom_subchnl
- cdrom_tocentry
- cdrom_tochdr
- cdrom_read
- dk_cinfo
- dk_devid
- dk_label
- dk_map
- dk_temperature
- mhioc_inkeys
- mhioc_inresvs
- mode_caching
- mode_header
- mode_speed
- scsi_cdb
- scsi_arq_status
- scsi_extended_sense
- scsi_inquiry
- scsi_pkt
- uio
- uscsi_cmd))
-
-
-_NOTE(SCHEME_PROTECTS_DATA("stable data", scsi_device dk_cinfo))
-_NOTE(SCHEME_PROTECTS_DATA("unique per pkt", scsi_status scsi_cdb))
-
-_NOTE(MUTEX_PROTECTS_DATA(sd_lun::un_pm_mutex, sd_lun::un_pm_count
- sd_lun::un_pm_timeid sd_lun::un_pm_busy sd_lun::un_pm_busy_cv
- sd_lun::un_pm_idle_timeid))
-
-#ifdef SD_FAULT_INJECTION
-_NOTE(MUTEX_PROTECTS_DATA(sd_lun::un_fi_mutex,
- sd_lun::sd_fi_buf_len sd_lun::sd_fi_log))
-#endif
-
-/* _NOTE(LOCK_ORDER(sd_lun::un_sd.sd_mutex sd_lun::un_pm_mutex)) */
-
-
-
-/*
* Referenced for frequently-accessed members of the unit structure
*/
#define SD_SCSI_DEVP(un) ((un)->un_sd)
#define SD_DEVINFO(un) ((un)->un_sd->sd_dev)
#define SD_INQUIRY(un) ((un)->un_sd->sd_inq)
@@ -735,11 +682,10 @@
#define SD_ADDRESS(un) (&((un)->un_sd->sd_address))
#define SD_GET_DEV(un) (sd_make_device(SD_DEVINFO(un)))
#define SD_FM_LOG(un) (((struct sd_fm_internal *)\
((un)->un_fm_private))->fm_log_level)
-
/*
* Values for un_ctype
*/
#define CTYPE_CDROM 0
#define CTYPE_MD21 1 /* Obsolete! */
@@ -956,17 +902,10 @@
kcondvar_t srq_inprocess_cv;
kmutex_t srq_resv_reclaim_mutex;
kcondvar_t srq_resv_reclaim_cv;
};
-_NOTE(MUTEX_PROTECTS_DATA(sd_resv_reclaim_request::srq_resv_reclaim_mutex,
- sd_resv_reclaim_request))
-_NOTE(SCHEME_PROTECTS_DATA("unshared data", sd_thr_request))
-_NOTE(SCHEME_PROTECTS_DATA("Unshared data", sd_prout))
-
-
-
/*
* Driver Logging Components
*
* These components cover the functional entry points and areas of the
* driver. A component value is used for the entry point and utility
@@ -1047,10 +986,12 @@
* sd_fi_un replicates the variables that are exposed through un
*
* sd_fi_arq replicates the variables that are
* exposed for Auto-Reqeust-Sense
*
+ * sd_fi_tran HBA-level fault injection.
+ *
*/
struct sd_fi_pkt {
uint_t pkt_flags; /* flags */
uchar_t pkt_scbp; /* pointer to status block */
uchar_t pkt_cdbp; /* pointer to command block */
@@ -1097,10 +1038,19 @@
uint_t sts_rqpkt_state;
uint_t sts_rqpkt_statistics;
struct scsi_extended_sense sts_sensedata;
};
+enum sd_fi_tran_cmd {
+ SD_FLTINJ_CMD_BUSY, /* Reject command instead of sending it to HW */
+ SD_FLTINJ_CMD_TIMEOUT /* Time-out command. */
+};
+
+struct sd_fi_tran {
+ enum sd_fi_tran_cmd tran_cmd;
+};
+
/*
* Conditional set def
*/
#define SD_CONDSET(a, b, c, d) \
{ \
@@ -1120,10 +1070,11 @@
#define SDIOCINSERTUN (SDIOC|5)
#define SDIOCINSERTARQ (SDIOC|6)
#define SDIOCPUSH (SDIOC|7)
#define SDIOCRETRIEVE (SDIOC|8)
#define SDIOCRUN (SDIOC|9)
+#define SDIOCINSERTTRAN (SDIOC|0xA)
#endif
#else
#undef SDDEBUG
@@ -1172,10 +1123,12 @@
#define SD_STATE_OFFLINE 1
#define SD_STATE_RWAIT 2
#define SD_STATE_DUMPING 3
#define SD_STATE_SUSPENDED 4
#define SD_STATE_PM_CHANGING 5
+#define SD_STATE_ATTACHING 6
+#define SD_STATE_ATTACH_FAILED 7
/*
* The table is to be interpreted as follows: The rows lists all the states
* and each column is a state that a state in each row *can* reach. The entries
* in the table list the event that cause that transition to take place.
@@ -1226,12 +1179,10 @@
* (0 is a special case) which means it would never get set back to
* un_saved_throttle in routine sd_restore_throttle().
*/
#define SD_LOWEST_VALID_THROTTLE 2
-
-
/* Return codes for sd_send_polled_cmd() and sd_scsi_poll() */
#define SD_CMD_SUCCESS 0
#define SD_CMD_FAILURE 1
#define SD_CMD_RESERVATION_CONFLICT 2
#define SD_CMD_ILLEGAL_REQUEST 3
@@ -1418,12 +1369,10 @@
* right after xb_sense_data[SENSE_LENGTH]. Please do not
* add any new field after it.
*/
};
-_NOTE(SCHEME_PROTECTS_DATA("unique per pkt", sd_xbuf))
-
#define SD_PKT_ALLOC_SUCCESS 0
#define SD_PKT_ALLOC_FAILURE 1
#define SD_PKT_ALLOC_FAILURE_NO_DMA 2
#define SD_PKT_ALLOC_FAILURE_PKT_TOO_SMALL 3
#define SD_PKT_ALLOC_FAILURE_CDB_TOO_SMALL 4
@@ -1453,12 +1402,10 @@
uint32_t ui_pkt_statistics;
uint64_t ui_lba;
uint64_t ui_ena;
};
-_NOTE(SCHEME_PROTECTS_DATA("Unshared data", sd_uscsi_info))
-
/*
* This structure is used to issue 'internal' command sequences from the
* driver's attach(9E)/open(9E)/etc entry points. It provides a common context
* for issuing command sequences, with the ability to issue a command
* and provide expected/unexpected assessment of results at any code
@@ -1495,12 +1442,10 @@
struct sd_uscsi_info *ssc_uscsi_info;
int ssc_flags; /* Bits for flags */
char ssc_info[1024]; /* Buffer holding for info */
} sd_ssc_t;
-_NOTE(SCHEME_PROTECTS_DATA("Unshared data", sd_ssc_t))
-
/*
* This struct switch different 'type-of-assessment'
* as an input argument for sd_ssc_assessment
*
*
@@ -1703,14 +1648,14 @@
#endif /* defined(_KERNEL) || defined(_KMEMUSER) */
/*
- * 60 seconds is a *very* reasonable amount of time for most slow CD
- * operations.
+ * 15 seconds is a *very* reasonable amount of time for any device with retries.
+ * Doubled for slow CD operations.
*/
-#define SD_IO_TIME 60
+#define SD_IO_TIME 15
/*
* 2 hours is an excessively reasonable amount of time for format operations.
*/
#define SD_FMT_TIME (120 * 60)
@@ -1737,33 +1682,25 @@
/*
* 100 msec. is what we'll wait for certain retries for fibre channel
* targets, 0 msec for parallel SCSI.
*/
-#if defined(__fibre)
-#define SD_RETRY_DELAY (drv_usectohz(100000))
-#else
#define SD_RETRY_DELAY ((clock_t)0)
-#endif
/*
* Number of times we'll retry a normal operation.
*
* This includes retries due to transport failure
* (need to distinguish between Target and Transport failure)
*
*/
-#if defined(__fibre)
-#define SD_RETRY_COUNT 3
-#else
#define SD_RETRY_COUNT 5
-#endif
/*
* Number of times we will retry for unit attention.
*/
-#define SD_UA_RETRY_COUNT 600
+#define SD_UA_RETRY_COUNT 25
#define SD_VICTIM_RETRY_COUNT(un) (un->un_victim_retry_count)
#define CD_NOT_READY_RETRY_COUNT(un) (un->un_retry_count * 2)
#define DISK_NOT_READY_RETRY_COUNT(un) (un->un_retry_count / 2)
@@ -1867,13 +1804,10 @@
#define PIRUS_DISKSORT_DISABLED_FLAG 0
#define PIRUS_LUN_RESET_ENABLED_FLAG 1
/*
* Driver Property Bit Flag definitions
- *
- * Unfortunately, for historical reasons, the bit-flag definitions are
- * different on SPARC, INTEL, & FIBRE platforms.
*/
/*
* Bit flag telling driver to set throttle from sd.conf sd-config-list
* and driver table.
@@ -1888,130 +1822,80 @@
/*
* Bit flag telling driver to set the controller type from sd.conf
* sd-config-list and driver table.
*/
-#if defined(__i386) || defined(__amd64)
#define SD_CONF_SET_CTYPE 1
-#elif defined(__fibre)
-#define SD_CONF_SET_CTYPE 5
-#else
-#define SD_CONF_SET_CTYPE 1
-#endif
#define SD_CONF_BSET_CTYPE (1 << SD_CONF_SET_CTYPE)
/*
* Bit flag telling driver to set the not ready retry count for a device from
* sd.conf sd-config-list and driver table.
*/
-#if defined(__i386) || defined(__amd64)
#define SD_CONF_SET_NOTREADY_RETRIES 10
-#elif defined(__fibre)
-#define SD_CONF_SET_NOTREADY_RETRIES 1
-#else
-#define SD_CONF_SET_NOTREADY_RETRIES 2
-#endif
#define SD_CONF_BSET_NRR_COUNT (1 << SD_CONF_SET_NOTREADY_RETRIES)
/*
* Bit flag telling driver to set SCSI status BUSY Retries from sd.conf
* sd-config-list and driver table.
*/
-#if defined(__i386) || defined(__amd64)
#define SD_CONF_SET_BUSY_RETRIES 11
-#elif defined(__fibre)
-#define SD_CONF_SET_BUSY_RETRIES 2
-#else
-#define SD_CONF_SET_BUSY_RETRIES 5
-#endif
#define SD_CONF_BSET_BSY_RETRY_COUNT (1 << SD_CONF_SET_BUSY_RETRIES)
/*
* Bit flag telling driver that device does not have a valid/unique serial
* number.
*/
-#if defined(__i386) || defined(__amd64)
#define SD_CONF_SET_FAB_DEVID 2
-#else
-#define SD_CONF_SET_FAB_DEVID 3
-#endif
#define SD_CONF_BSET_FAB_DEVID (1 << SD_CONF_SET_FAB_DEVID)
/*
* Bit flag telling driver to disable all caching for disk device.
*/
-#if defined(__i386) || defined(__amd64)
#define SD_CONF_SET_NOCACHE 3
-#else
-#define SD_CONF_SET_NOCACHE 4
-#endif
#define SD_CONF_BSET_NOCACHE (1 << SD_CONF_SET_NOCACHE)
/*
* Bit flag telling driver that the PLAY AUDIO command requires parms in BCD
* format rather than binary.
*/
-#if defined(__i386) || defined(__amd64)
#define SD_CONF_SET_PLAYMSF_BCD 4
-#else
-#define SD_CONF_SET_PLAYMSF_BCD 6
-#endif
#define SD_CONF_BSET_PLAYMSF_BCD (1 << SD_CONF_SET_PLAYMSF_BCD)
/*
* Bit flag telling driver that the response from the READ SUBCHANNEL command
* has BCD fields rather than binary.
*/
-#if defined(__i386) || defined(__amd64)
#define SD_CONF_SET_READSUB_BCD 5
-#else
-#define SD_CONF_SET_READSUB_BCD 7
-#endif
#define SD_CONF_BSET_READSUB_BCD (1 << SD_CONF_SET_READSUB_BCD)
/*
* Bit in flags telling driver that the track number fields in the READ TOC
* request and respone are in BCD rather than binary.
*/
-#if defined(__i386) || defined(__amd64)
#define SD_CONF_SET_READ_TOC_TRK_BCD 6
-#else
-#define SD_CONF_SET_READ_TOC_TRK_BCD 8
-#endif
#define SD_CONF_BSET_READ_TOC_TRK_BCD (1 << SD_CONF_SET_READ_TOC_TRK_BCD)
/*
* Bit flag telling driver that the address fields in the READ TOC request and
* respone are in BCD rather than binary.
*/
-#if defined(__i386) || defined(__amd64)
#define SD_CONF_SET_READ_TOC_ADDR_BCD 7
-#else
-#define SD_CONF_SET_READ_TOC_ADDR_BCD 9
-#endif
#define SD_CONF_BSET_READ_TOC_ADDR_BCD (1 << SD_CONF_SET_READ_TOC_ADDR_BCD)
/*
* Bit flag telling the driver that the device doesn't support the READ HEADER
* command.
*/
-#if defined(__i386) || defined(__amd64)
#define SD_CONF_SET_NO_READ_HEADER 8
-#else
-#define SD_CONF_SET_NO_READ_HEADER 10
-#endif
#define SD_CONF_BSET_NO_READ_HEADER (1 << SD_CONF_SET_NO_READ_HEADER)
/*
* Bit flag telling the driver that for the READ CD command the device uses
* opcode 0xd4 rather than 0xbe.
*/
-#if defined(__i386) || defined(__amd64)
#define SD_CONF_SET_READ_CD_XD4 9
-#else
-#define SD_CONF_SET_READ_CD_XD4 11
-#endif
#define SD_CONF_BSET_READ_CD_XD4 (1 << SD_CONF_SET_READ_CD_XD4)
/*
* Bit flag telling the driver to set SCSI status Reset Retries
* (un_reset_retry_count) from sd.conf sd-config-list and driver table (4356701)
@@ -2033,26 +1917,26 @@
*/
#define SD_CONF_SET_TUR_CHECK 14
#define SD_CONF_BSET_TUR_CHECK (1 << SD_CONF_SET_TUR_CHECK)
/*
- * Bit in flags telling driver to set min. throttle from ssd.conf
- * ssd-config-list and driver table.
+ * Bit in flags telling driver to set min. throttle from sd.conf
+ * sd-config-list and driver table.
*/
#define SD_CONF_SET_MIN_THROTTLE 15
#define SD_CONF_BSET_MIN_THROTTLE (1 << SD_CONF_SET_MIN_THROTTLE)
/*
- * Bit in flags telling driver to set disksort disable flag from ssd.conf
- * ssd-config-list and driver table.
+ * Bit in flags telling driver to set disksort disable flag from sd.conf
+ * sd-config-list and driver table.
*/
#define SD_CONF_SET_DISKSORT_DISABLED 16
#define SD_CONF_BSET_DISKSORT_DISABLED (1 << SD_CONF_SET_DISKSORT_DISABLED)
/*
- * Bit in flags telling driver to set LUN Reset enable flag from [s]sd.conf
- * [s]sd-config-list and driver table.
+ * Bit in flags telling driver to set LUN Reset enable flag from sd.conf
+ * sd-config-list and driver table.
*/
#define SD_CONF_SET_LUN_RESET_ENABLED 17
#define SD_CONF_BSET_LUN_RESET_ENABLED (1 << SD_CONF_SET_LUN_RESET_ENABLED)
/*
@@ -2061,12 +1945,12 @@
*/
#define SD_CONF_SET_CACHE_IS_NV 18
#define SD_CONF_BSET_CACHE_IS_NV (1 << SD_CONF_SET_CACHE_IS_NV)
/*
- * Bit in flags telling driver that the power condition flag from [s]sd.conf
- * [s]sd-config-list and driver table.
+ * Bit in flags telling driver that the power condition flag from sd.conf
+ * sd-config-list and driver table.
*/
#define SD_CONF_SET_PC_DISABLED 19
#define SD_CONF_BSET_PC_DISABLED (1 << SD_CONF_SET_PC_DISABLED)
/*
@@ -2168,12 +2052,10 @@
uchar_t bdesc_length_hi; /* length of block descriptor(s) */
/* (if any) */
uchar_t bdesc_length_lo;
};
-_NOTE(SCHEME_PROTECTS_DATA("Unshared data", mode_header_grp2))
-
/*
* Length of the Mode Parameter Header for the Group 2 Mode Select command
*/
#define MODE_HEADER_LENGTH_GRP2 (sizeof (struct mode_header_grp2))
#define MODE_PARAM_LENGTH_GRP2 (MODE_HEADER_LENGTH_GRP2 + MODE_BLK_DESC_LENGTH)
@@ -2373,11 +2255,12 @@
#define SD_VPD_UNIT_SERIAL_PG 0x02 /* 0x80 - Unit Serial Number */
#define SD_VPD_OPERATING_PG 0x04 /* 0x81 - Implemented Op Defs */
#define SD_VPD_ASCII_OP_PG 0x08 /* 0x82 - ASCII Op Defs */
#define SD_VPD_DEVID_WWN_PG 0x10 /* 0x83 - Device Identification */
#define SD_VPD_EXTENDED_DATA_PG 0x80 /* 0x86 - Extended data about the lun */
-#define SD_VPD_DEV_CHARACTER_PG 0x400 /* 0xB1 - Device Characteristics */
+#define SD_VPD_BLK_LIMITS_PG 0x400 /* 0xB0 - Block Limits */
+#define SD_VPD_DEV_CHARACTER_PG 0x800 /* 0xB1 - Device Characteristics */
/*
* Non-volatile cache support
*
* Bit 1 of the byte 6 in the Extended INQUIRY data VPD page
@@ -2392,23 +2275,10 @@
* caches.
*/
#define SD_VPD_NV_SUP 0x02
#define SD_SYNC_NV_BIT 0x04
-/*
- * Addition from sddef.intel.h
- */
-#if defined(__i386) || defined(__amd64)
-
-#define P0_RAW_DISK (NDKMAP)
-#define FDISK_P1 (NDKMAP+1)
-#define FDISK_P2 (NDKMAP+2)
-#define FDISK_P3 (NDKMAP+3)
-#define FDISK_P4 (NDKMAP+4)
-
-#endif /* __i386 || __amd64 */
-
#ifdef __cplusplus
}
#endif