st(4) Device Drivers Manual st(4) st - SCSI #include int ioctl(int fd, int request [, (void *)arg3]); int ioctl(int fd, MTIOCTOP, (struct mtop *)mt_cmd); int ioctl(int fd, MTIOCGET, (struct mtget *)mt_status); int ioctl(int fd, MTIOCPOS, (struct mtpos *)mt_pos); st SCSI. " ". st 9. . . 2.6 . : ( ) n " " (n + 128). REWIND . " " . ( mt : mt ). ( ). . ( ). ( . 32 . 64 ). : mknod -m 666 /dev/st0 c 9 0 mknod -m 666 /dev/st0l c 9 32 mknod -m 666 /dev/st0m c 9 64 mknod -m 666 /dev/st0a c 9 96 mknod -m 666 /dev/nst0 c 9 128 mknod -m 666 /dev/nst0l c 9 160 mknod -m 666 /dev/nst0m c 9 192 mknod -m 666 /dev/nst0a c 9 224 . . 2.1.121 . . 128 32- 256 64-. . 16. (2 16 128 ). . . 2.1.121 ( kerneld kmod). . . . ioctl(2) . . . . ( ). . ( . ). ioctl(2). . ioctl(2). . ( ). ioctl(2) . /dev/tape . 2.6.2 sysfs /sys/class/scsi_tape . ( ). . . : . . . . . 2.1.121 . ( 2.1.121 ) . 2.6 . . ( 512 HBA) SCSI . . . . . . . . Ioctls ioctl(2). st SCSI. /usr/include/linux/mtio.h: MTIOCTOP -- (struct mtop *). . EIO . /* MTIOCTOP - : */ struct mtop { short mt_op; /* */ int mt_count; /* */ }; : MTBSF mt_count . MTBSFM mt_count . EOT . MTBSR mt_count ( ). MTBSS mt_count . MTCOMPRESSION mt_count mt_count . MODE 15 DATs. MTEOM ( ). MTERASE . 2.6 ( ) . ( ). MTFSF mt_count . MTFSFM mt_count . BOT . MTFSR mt_count ( ). MTFSS mt_count . MTLOAD SCSI. HP . mt_count MT_ST_HPLOADER_OFFSET . MTLOCK . MTMKPART . mt_count 1 0 . mt_count . 4.6 mt_count 0 1. . ( MT_ST_CAN_PARTITIONS ). MTNOP -- . MTIOCGET. MTOFFL . MTRESET . MTRETEN . MTREW . MTSEEK mt_count. SCSI-2 LOCATE ( ) SCSI-1 Tandberg ( Tandberg Archive Viper Wangtek ...). MTIOCPOS . MTSETBLK mt_count. . MTSETDENSITY mt_count. . MTSETPART mt_count. . ( MT_ST_CAN_PARTITIONS ). MTUNLOAD SCSI ( ). MTUNLOCK . MTWEOF mt_count . MTWSM mt_count . ( ): MTSETDRVBUFFER mt_count. ( 2.1 ). ( ). . : 0 GOOD . 1 GOOD . 2 GOOD () () . mt_count MT_ST_WRITE_THRESHOLD OR 28 . 1024 . ( ). mt_count MT_ST_BOOLEANS MT_ST_SETBOOLEANS MT_ST_CLEARBOOLEANS MT_ST_DEFBOOLEANS OR . MT_ST_BOOLEANS . MT_ST_SETBOOLEANS MT_ST_DEFBOOLEANS . MT_ST_DEFBOOLEANS. ( 32 160) . . : MT_ST_BUFFER_WRITES (: true) . false . false . MT_ST_ASYNC_WRITES (: true) true . SCSI . . false . MT_ST_READ_AHEAD (: true) . false . MT_ST_TWO_FM (: false) . . true . : true QIC . . . MT_ST_DEBUGGING (: false) ( DEBUG ). MT_ST_FAST_EOM (: false) MTEOM MTIOCGET. MT_ST_FAST_EOM false MTEOM . MT_ST_AUTO_LOCK (: false) true . MT_ST_DEF_WRITES (: false) ( ) . SCSI . false SCSI . true SCSI . SCSI . MT_ST_CAN_BSR (: false) SCSI . . . 2.6 true SCSI-3. MT_ST_NO_BLKLIMS (: false) SCSI READ BLOCK LIMITS. . . MT_ST_CAN_PARTITIONS (: false) . . MT_ST_SCSI2LOGICAL (: false) SCSI-2 ( MTSEEK MTIOCPOS ). . . . MT_ST_SYSV (: false) System V. BSD. : System V . BSD . MT_NO_WAIT (: false) ( ) ( ). : struct mtop mt_cmd; mt_cmd.mt_op = MTSETDRVBUFFER; mt_cmd.mt_count = MT_ST_BOOLEANS | MT_ST_BUFFER_WRITES | MT_ST_ASYNC_WRITES; ioctl(fd, MTIOCTOP, mt_cmd); MT_ST_DEF_BLKSIZE MT_ST_DEFDENSITY. OR . 2.1.x MT_ST_SET_TIMEOUT OR . ( ) MT_ST_SET_LONG_TIMEOUT. . . . . 2.4.19 2.5.43 . MT_ST_SEL_CLN. . TapeAlert SCSI-3 ( ). 2 17 . 18 . 9 16 17 23 . . . MTIOCGET -- (struct mtget *). /* MTIOCGET - */ struct mtget { long mt_type; long mt_resid; /* */ long mt_dsreg; long mt_gstat; long mt_erreg; /* */ daddr_t mt_fileno; daddr_t mt_blkno; }; mt_type mt_type MT_ISSCSI1 ( SCSI-1 ) MT_ISSCSI2 ( SCSI-2 ). mt_resid . mt_dsreg ( 24 ) ( 8 ). MT_ST_BLKSIZE_SHIFT MT_ST_BLKSIZE_MASK MT_ST_DENSITY_SHIFT MT_ST_DENSITY_MASK. mt_gstat ( ). : GMT_EOF(x) ( false MTSEEK). GMT_BOT(x) ( false MTSEEK). GMT_EOT(x) . GMT_SM(x) ( false MTSEEK). GMT_EOD(x) . GMT_WR_PROT(x) . . GMT_ONLINE(x) open(2) . GMT_D_6250(x) GMT_D_1600(x) GMT_D_800(x) "" 9 1/2 . GMT_DR_OPEN(x) . GMT_IM_REP_EN(x) . . . GMT_CLN(x) . 2.4.19 2.5.43. mt_erreg mt_erreg 16 ( MT_ST_SOFTERR_SHIFT MT_ST_SOFTERR_MASK). ( SCSI MODE SELECT). mt_fileno ( ). -1 ( MTBSS MTSEEK). mt_blkno ( ) . -1 ( MTBSF MTBSS MTSEEK). MTIOCPOS -- (struct mtpos *) mt_blkno MTIOCGET. SCSI-2 READ POSITION ( ) SCSI-1 Tandberg ( Tandberg Archive Viper Wangtek ...). /* MTIOCPOS - */ struct mtpos { long mt_blkno; /* */ }; EACCES . ( open(2)). EBUSY . EFAULT . EINVAL ioctl(2) . EIO . ENOMEM read(2) . ( 2.2.18 2.4.0 ). ENOSPC . ENOSYS ioctl(2) . ENXIO . EOVERFLOW . EROFS O_WRONLY O_RDWR . /dev/st* SCSI /dev/nst* SCSI o . . . DATs 8 DLTs . ( MTSETBLK MTSETDEFBLK ) . SCSI. o ( tar(1)) . . o SCSI SCSI SCSI SCSI . SCSI . o /. SENSE SCSI . o read(2) write(2) . 2.6. ( ). . mt(1) drivers/scsi/README.st Documentation/scsi/st.rst ( >= 2.6) 3 . . : . 6.18 8 2026 st(4)