dmd - Driver for MMS drive managers
/devices/pseudo/dmd@0:watcher
/devices/pseudo/dmd@0:ndrm
/devices/pseudo/dmd@0:stat
The Media Management System (MMS) is a distributed removable media management system based on the IEEE 1244 Media Management System specification. MMS provides a uniform, consistent tape interface to client applications.
Drives managed by MMS have a drive manager on each host that processes tapes and accesses the drive. The drive manager provides device-specific operations and label processing. (Note: only ANSI labels are currently supported.) The handle returned by the MMS MMP mount command belongs to the drive manager driver (dmd). When dmd receives an open or close system call, it passes it to the drive manager for processing. The drive manager then validates the file according to the file disposition flags. Note that only O_RDONLY, O_WRONLY and O_RDWR flags are used in validation. If O_APPEND is specified, the drive manager positions the file as if append is specified in the mount command and the record format and blocksize are set.
The Device Manager driver supports the MTIOCTOP, MTREW, MTRETEN, MTFSF, MTFSR, MTBSF, MTBSR, MTWEOF, MTEOM, MTSRSZ, MTGRSZ, MTIOCGET and MTIOCLRERR driver ioctls. In addition, MMS provides the ioctls shown below for the device manager driver. (Note that MMS_LOCATE is supported in both mms and raw modes and MMS_LOCATE is supported only in mms mode).
MMS_BLK_LIMIT - returns the block limit of a drive. arg: typedef struct mms_blk_limit { uint64_t mms_max; /* Max blocksize */ uint32_t mms_min; /* Min blocksize */ uint32_t mms_gran; /* granularity */ } mms_blk_limit_t; MMS_GET_POS - gets the current position. arg: typedef struct mms_pos { uint32_t mms_type; /* LBN or non LBN) */ uint64_t mms_pos; } mms_pos_t; /* Value of mms_pos_type */ #define MMS_LBYTEN 1 /* logical byte */ #define MMS_LBLKN 2 /* logical block */ MMS_LOCATE - locate to a specific location. arg: arg must be a mms_pos_t obtained from a previous MMS_GET_POS. MMS_GET_CAPACITY - returns the tape's capacity. arg: typedef struct mms_capacity { /* * Capacity is in megabytes (1048576) */ uint64_t mms_max; /* cartridge capacity */ uint64_t mms_avail; /* amount available */ /* from EOD */ uint32_t mms_pc_avail; /* percent available */ } mms_capacity_t; MMS_SET_DENSITY - sets the tape's density. arg: typedef struct mms_density { uint32_t mms_den; } mms_density_t; MMS_GET_DENSITY - gets the current tape density. arg: typedef struct mms_density { uint32_t mms_den; } mms_density_t; MMS_INQUIRY - gets inquiry data of drive. arg: typedef struct mms_inquiry { uchar_t mms_inq[64]; } mms_inquiry_t; Status of dmd MMS uses the MTIOCGET ioctl to report status. The status code in mt_dsreg is defined as follows: /usr/include/sys/scsi/generic/status.h #define STATUS_MASK 0x3E #define STATUS_GOOD 0x00 #define STATUS_CHECK 0x02 #define STATUS_MET 0x04 #define STATUS_BUSY 0x08 #define STATUS_INTERMEDIATE 0x10 #define STATUS_SCSI2 0x20 #define STATUS_INTERMEDIATE_MET 0x14 #define STATUS_RESERVATION_CONFLICT 0x18 #define STATUS_TERMINATED 0x22 #define STATUS_QFULL 0x28 #define STATUS_ACA_ACTIVE 0x30 The error code in mt_erreg are defined as follows: /usr/include/sys/scsi/generic/sense.h /* * Sense Key values for Extended Sense. */ #define KEY_NO_SENSE 0x00 #define KEY_RECOVERABLE_ERROR 0x01 #define KEY_NOT_READY 0x02 #define KEY_MEDIUM_ERROR 0x03 #define KEY_HARDWARE_ERROR 0x04 #define KEY_ILLEGAL_REQUEST 0x05 #define KEY_UNIT_ATTENTION 0x06 #define KEY_WRITE_PROTECT 0x07 #define KEY_DATA_PROTECT KEY_WRITE_PROTECT #define KEY_BLANK_CHECK 0x08 #define KEY_VENDOR_UNIQUE 0x09 #define KEY_COPY_ABORTED 0x0A #define KEY_ABORTED_COMMAND 0x0B #define KEY_EQUAL 0x0C #define KEY_VOLUME_OVERFLOW 0x0D #define KEY_MISCOMPARE 0x0E #define KEY_RESERVED 0x0F /usr/include/sys/scsi/impl/sense.h: /* Status returned by driver */ #define SUN_KEY_FATAL 0x10 /* handshake failure */ #define SUN_KEY_TIMEOUT 0x11 /* command timeout */ #define SUN_KEY_EOF 0x12 /* eof hit */ #define SUN_KEY_EOT 0x13 /* eot hit */ #define SUN_KEY_LENGTH 0x14 /* length error */ #define SUN_KEY_BOT 0x15 /* bot hit */ #define SUN_KEY_WRONGMEDIA 0x16 /* wrong tape media */ #define NUM_IMPL_SENSE_KEYS 7 /* seven extra keys */ In MMS mode, the following values may be in mt_erreg when using mms mode. They are defined in mms.h #define MMS_KEY_BOF 0xe0 /* beginning of file. */ #define MMS_KEY_EOF 0xe1 /* end of file. */
/kernel/drv/dmd
/kernel/drv/sparcv9/dmd
/kernel/drv/amd64/dmd
/kernel/drv/dmd.conf
See attributes(5) for a description of the following attributes:
|
mt(1), mmsadm(1M), attributes(5), dda(7D), st(7D), mtio(7I)
IEEE 1244 Removable Media Standards Specification --- IEEE, 2000
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |