burn.net

Check IPv4 | Check Auto | Check IPv6
Sun System Handbook (ISO 3.4 June 2011)
Tools

st.conf options decoder/builder


Decodes/builds the options value for a given tape drive in st.conf on Solaris

Heavily based on the Cisco Config Register decoder. Nearly all credit to Dave over there.




0x0001     ST_VARIABLE
0x0002     ST_QIC
0x0004     ST_REEL
0x0008     ST_BSF

0x0010 ST_BSR 0x0020 ST_LONG_ERASE 0x0040 ST_AUTODEN_OVERRIDE 0x0080 ST_NOBUF
0x0200 ST_KNOWS_EOD 0x0400 ST_UNLOADABLE 0x0800 ST_SOFT_ERROR_REPORTING
0x1000 ST_LONG_TIMEOUTS 0x4000 ST_BUFFERED_WRITES (DEPRECATED ! WILL CAUSE ERROR MESSAGE BUT NO HARM) 0x8000 ST_NO_RECSIZE_LIMIT
0x10000 ST_MODE_SEL_COMP 0x20000 ST_NO_RESERVE_RELEASE 0x40000 ST_READ_IGNORE_ILI 0x80000 ST_READ_IGNORE_EOFS
0x100000 ST_SHORT_FILEMARKS 0x200000 ST_EJECT_TAPE_ON_CHANGER_FAILURE 0x400000 ST_RETRY_ON_RECOVERED_DEFERRED_ERROR
0x1000000 ST_WORMABLE


Please see: Oracle Solaris 11.4 "st" man page for descriptions of these options.

In the event of linkrot etc., the relevant section follows (note to Larry Ellison: Please don't sue me)

ST_VARIABLE

	The flag indicates the tape device supports variable length record 
	sizes.

ST_QIC

	The flag indicates a Quarter Inch Cartridge (QIC) tape device.

ST_REEL

	The flag indicates a 1/2-inch reel tape device.

ST_BSF

	If flag is set, the device supports backspace over EOF marks (bsf - 
	see mt(1)).

ST_BSR

	If flag is set, the tape device supports the backspace record 
	operation (bsr - see mt(1)). If the device does not support bsr, the 
	st driver emulates the action by rewinding the tape and using the 
	forward space record (fsf) operation to forward the tape to the 
	correct file. The driver then uses forward space record (fsr - see 
	mt(1)) to forward the tape to the correct record.

ST_LONG_ERASE

	The flag indicates the tape device needs a longer time than normal to 
	erase.

ST_AUTODEN_OVERRIDE

	The auto-density override flag. The device is capable of determining 
	the tape density automatically without issuing a 
	"mode-select"/"mode-sense command."

ST_NOBUF

	The flag disables the device's ability to perform buffered writes. A 
	buffered write occurs when the device acknowledges the completion of a 
	write request after the data has been written to the device's buffer, 
	but before all of the data has been written to the tape.

ST_KNOWS_EOD

	If flag is set, the device can determine when EOD (End of Data) has 
	been reached. When this flag is set, the st driver uses fast file 
	skipping. Otherwise, file skipping happens one file at a time.

ST_UNLOADABLE

	The flag indicates the device will not complain if the st driver is 
	unloaded and loaded again (see modload(1M) and modunload(1M)). That 
	is, the driver will return the correct inquiry string.

ST_SOFT_ERROR_REPORTING

	The flag indicates the tape device will perform a "request sense" or 
	"log sense" command when the device is closed. Currently, only Exabyte 
	and DAT drives support this feature.

ST_LONG_TIMEOUTS

	The flag indicates the tape device requires timeouts that are five 
	times longer than usual for normal operation.

ST_NO_RECSIZE_LIMIT

	The flag applies to variable-length tape devices. If this flag is set, 
	the record size is not limited to a 64 Kbyte record size. The record 
	size is only limited by the smaller of either the record size 
	supported by the device or the maximum DMA transfer size of the 
	system. (Refer to Large Record Sizes and WARNINGS.) The maximum block 
	size that will not be broken into smaller blocks can be determined 
	from the mt_bf returned from the MTIOCGET ioctl(). This number is the 
	lesser of the upper block limit returned by the drive from READ BLOCK 
	LIMITS command and the dma-max property set by the Host Bus Adapter 
	(HBA) to which the drive is attached.

ST_MODE_SEL_COMP

	If the ST_MODE_SEL_COMP flag is set, the driver determines which of 
	the two mode pages the device supports for selecting or deselecting 
	compression. It first tries the Data Compression mode page (0x0F); if 
	this fails, it tries the Device Configuration mode page (0x10). Some 
	devices, however, may need a specific density code for selecting or 
	deselecting compression. Please refer to the device specific SCSI 
	manual. When the flag is set, compression is enabled only if the "c" 
	or "u" device is used. Note that when the lower 2 densities of a drive 
	are identically configured and the upper 2 densities are identically 
	configured, but the lower and upper differ from each other and 
	ST_MODE_SEL_COMP is set, the "m" node sets compression on for the 
	lower density code (for example, 0x42) and the "c" and "u" nodes set 
	compression on for the higher density (for example, 0x43). For any 
	other device densities, compression is disabled.

ST_NO_RESERVE_RELEASE

	The ST_NO_RESERVE_RELEASE flag disables the use of reserve on open and 
	release on close. If an attempt to use a ioctl of MTRESERVE or 
	MTRELEASE on a drive with this flag set, it will return an error of 
	ENOTTY (inappropriate ioctl for device).

ST_READ_IGNORE_ILI

	The ST_READ_IGNORE_ILI flag is applicable only to variable block 
	devices which support the SILI bit option. The ST_READ_IGNORE_ILI flag 
	indicates that SILI (supress incorrect length indicator) bit will be 
	set during reads. When this flag is set, short reads (requested read 
	size is less than the record size on the tape) will be successful and 
	the number of bytes transferred will be equal to the record size on 
	the tape. The tape will be positioned at the start of the next record 
	skipping over the extra data (the remaining data has been has been 
	lost). Long reads (requested read size is more than the record size on 
	the tape) will see a large performance gain when this flag is set, due 
	to overhead reduction. When this flag is not set, short reads will 
	return an error of ENOMEM.

ST_READ_IGNORE_EOFS

	The ST_READ_IGNORE_EOFS flag is applicable only to 1/2" Reel Tape 
	drives and when performing consecutive reads only. It should not be 
	used for any other tape command. Usually End-of-recorded-media (EOM) 
	is indicated by two EOF marks on 1/2" tape and application cannot read 
	past EOM. When this flag is set, two EOF marks no longer indicate EOM 
	allowing applications to read past two EOF marks. In this case it is 
	the responsibility of the application to detect end-of-recorded-media 
	(EOM). When this flag is set, tape operations (like MTEOM) which 
	positions the tape at end-of-recorded-media will fail since detection 
	of end-of-recorded-media (EOM) is to be handled by the application. 
	This flag should be used when backup applications have embedded double 
	filemarks between files.

ST_SHORT_FILEMARKS

	The ST_SHORT_FILEMARKS flag is applicable only to EXABYTE 8mm tape 
	drives which supports short filemarks. When this flag is set, short 
	filemarks is used for writing filemarks. Short filemarks could lead to 
	tape incompatible with some otherwise compatible device. By default 
	long filemarks will be used for writing filemarks.

ST_EJECT_TAPE_ON_CHANGER_FAILURE

	If ST_EJECT_TAPE_ON_CHANGER_FAILURE flag is set, the tape is ejected 
	automatically if the tape cartridge is trapped in the medium due to 
	positioning problems of the medium changer.

	The following ASC/ASCQ keys are defined to the reasons for causing 
	tape ejection if ST_EJECT_TAPE_ON_CHANGER_FAILURE option is set to 
	0x200000:

	Sense ASC/ASCQ Description

	Key

	4 15/01 Mechanical Failure

	4 44/00 Internal Target Failure

	2 53/00 Media Load or Eject Failed

	4 53/00 Media Load or Eject Failed

	4 53/01 Unload Tape Failure

ST_RETRY_ON_RECOVERED_DEFERRED_ERROR

	If ST_RETRY_ON_RECOVERED_DEFERRED_ERROR flag is set, the st driver 
	will retry the last write if this cmd caused a check condition with 
	error code 0x71 and sense code 0x01. Some tape drives, notably the IBM 
	3090, require this option.

ST_WORMABLE

	When ST_WORMABLE is set, st attempts to detect the presence of WORM 
	media in the device.