SA(4)

명칭
sa - SCSI 시퀸셜 액세스 디바이스 드라이버

서식
device sa0 device sa1 at scbus0 target 4 lun 0

해설
sa 드라이버는 서포트되고 있다 SCSI 호스트 어댑터를 경유해, 시스템에 아탓치 되고 있다 시퀀셜인 액세스 클래스의 모든 SCSI 디바이스에의 서포트를 제공합니다. 시퀸셜 액세스 클래스는 테이프등의 리니어인 액세스 디바이스입니다.

SCSI 호스트 어댑터는 SCSI 시퀸셜 액세스 디바이스가 설정되기 전에 별로 시스템으로 설정되어 있지 않으면 안됩니다.

mount 세션
sa 드라이버는, 테이프가 mount 되고 나서 언마운트 될 때까지의 기간으로서 정의된다 “mount 세션” 의 개념에 근거하고 있습니다. mount 세션의 사이에 세트 되었다 임의의 파라미터는, 그 세션의 나머지 기간 혹은 테이프를 바꿀 수 없을지, 유효하게 되어 있습니다. 무엇으로 방법으로 세션을 클로우즈 하는 것으로, 테이프를 언마운트 할 수가 있습니다. 클로우즈 하는 방법에는 다음과 같은 것이 있습니다.

1.  이하에 나타내는 서브 모드 00 에 따라 `되감기 디바이스'를 클로우즈 한다. 예를 들면 /dev/rsa0.

2.  ioctl(2) 의 MTOFFL 명령을 사용한다. mt(1) 의 ‘offline’ 명령을 이용하는 것으로써 가능합니다.

테이프 디바이스는 배타적으로 오픈되는 디바이스인 것에 주의해야 합니다. 제어 모드 디바이스가 오픈되고 있는 경우는 예외로, 필요한 때 (예를 들면 파라미터를 세트 할 때)에 한계 배타적인 액세스를 할 필요가 있습니다.

서브 모드
마이너 번호의 비트 0 으로 비트 1 은 ‘서브 모드’ (으)로서 해석됩니다. 서브 모드의 차이는, 디바이스가 클로우즈 되었을 때의 거동에 있습니다:

00  클로우즈 되면(자) 디바이스를 되감기; 만약 테이프에 기입해지고 있으면(자), 되감기가 요구되기 전에 파일 마크가 기입해집니다. 디바이스는 언마운트 됩니다.

01  클로우즈 후도 테이프가 mount 된 채로 합니다. 테이프에 기입해지고 있으면(자), 파일 마크가 기입해집니다. 그 이외에 헤드의 이동은 행해지지 않습니다. 한층 더 읽어들이거나 기입하거나 하면(자), 마지막에 읽어내졌다 , 혹은 파일 마크가 기입해진 나중에 직접 행해집니다.

10  클로우즈 되면(자) 디바이스를 되감습니다. 만약 테이프에 기입해져 있으면(자), 되감아 요구 전에 파일 마크가 기입해집니다. 권반환이 완료하면(자), 언로드 명령이 발행됩니다. 디바이스는 언마운트 됩니다.

블로킹 모드
SCSI 테이프는 ‘가변’ 혹은 ‘고정’ 블록 사이즈 모드로 움직일 수가 있습니다. 대부분의 QIC 타입의 디바이스는 고정 블록 사이즈 모드로 움직여, 대부분의 9 트럭 테이프와 많은 새로운 카트리지 포맷은 가변 블록 사이즈를 허용 합니다. 이 두 개의 차이는 다음과 같습니다:

가변 블록 사이즈: 디바이스에의 기입해 마다, 단일의 논리 레코드가 테이프에 기입해집니다. 레코드의 일부분 (을)를 테이프로부터 읽어들이거나 기입하거나 할 수 없습니다 (비록 큰 블록을 요구해 작은 레코드를 읽어도입니다); 복수의 블록을 읽어들일 수도 있습니다. 즉, 1 회의 기입에 의한 데이터는 1 회에 읽힙니다. 블록 사이즈는, 디바이스 즉 SCSI 어댑터와 시스템이 서포트하고 있는 임의의 값입니다. (대체로는 1 바이트에서 64K 바이트의 사이로, 좀 더 커지는 경우도 있습니다. )

테이프로부터 가변장의 레코드나 블록을 읽어들일 때, 헤드는 마지막에 읽힌 아이템의 직후에 있어, 다음의 아이템의 직전에 있다고 생각됩니다. 만약 다음의 아이템이 파일 마크로, 아직 읽혀지지 않았다고 하면(자), 읽기로 곧바로 그 파일 마크에 맞아, 파일 종단 (end-of-file)의 통지를 받습니다.

고정 블록 사이즈: 유저가 기입한 데이터는 고정 사이즈의 블록의 연속으로서 테이프에 건네받습니다. 그것은 메모리중에서 연속하고 있을지도 모릅니다만, 독립한 블록의 연속이라고 생각됩니다. 블록 사이즈의 정확한 정수배가 아닌 양의 데이터를 읽어들인다 (일)것은 할 수 없습니다. 다른 레코드 집합으로서 같은 데이터를 읽어들이거나 기입하거나 할 수 있습니다. 바꾸어 말하면(자), 함께 기입해진 블록을 따로 따로 읽어들이는 것이 할 수 있고, 역도 또 가능합니다.

파일안에 남아 있는 것보다 많은 블록이 요구되면(자), 드라이브는 파일 마크에 조우하겠지요. 돌려주어야 할 데이터가 존재한다 의로 (파일 마크보다 전에 레코드가 존재하는 한), 그 데이터는 돌려주어져 읽기는 성공합니다. 다음의 읽기는 즉시 0 을 돌려줍니다. (위와 같게, 만약 파일 마크가 읽혀지지 않으면 비되감아 모드의 경우는 다음의 읽기 처리에 남습니다).

파일 마크의 취급
파일 마크는 자동적으로 다루어집니다. 유저가 테이프에 기입해, 마지막에 기입하고 나서 읽기를 하지 않았던 경우, 디바이스를 클로우즈 할 때에 파일 마크가 테이프에 기입해지겠지요. 기입의 뒤에 되감아 요구가 있으면(자), 드라이버는 테이프상의 마지막 파일이 기입해졌다고 가정해, 테이프에 기입해진 2 개의 파일 마크가 존재 하는 것을 프로텍션합니다. 이것에는 예외가 있어, 어떤 종류의 테이프는, 실제로는 2 개의 파일 마크를 기입하지 않고, 마지막 파일이 읽혔을 때에 `환상의'파일 마크를 보고한다고 한다 표준 (우리는 이것에 따릅니다만, 어째서 그렇게 하는지 이해할 수 없습니다) 하지만 존재하는 것 같습니다. 그러한 디바이스에는, QIC 패밀리가 포함됩니다. (이 디바이스는 고정 블록 디바이스와 같을지도 알려지지 않습니다. 이것은 아직 분명히 하고 있지 않습니다만, 현재 드라이버는 다른 행동으로서 취급하고 있습니다. )

IOCTL
sa 드라이버는 mtio(4) 의 모든 ioctl 를 서포트하고 있습니다.

파일
/dev/[n][e]rsa[0-9]
    일반적인 형태 :
/dev/rsa0
    클로우즈시에 되감아
/dev/nrsa0
    클로우즈시에 되감지 않는다
/dev/erst0
    클로우즈시에 이젝트 한다 (가능하면)
/dev/rsa0.ctl
    제어 모드 디바이스 (다른 프로그램이 그 디바이스에 액세스 하고 있는 동안에 상태를 검사하는 등을 위한 것)

버그
낡은 디바이스를 취급하기 위해서(때문에) 필요한 많은 핵이 빠져 있습니다. 많은 낡다 SCSI-1 디바이스는, 이 드라이버에서는 올바르게 움직이지 않을 것입니다.

특별한 디바이스명에 결합된, 고밀도 및 압축 모드의 서포트를 더할 필요가 있습니다.

파티션의 이용에 의한 고속의 인젝크싱의 서포트가 없습니다.

진단
없습니다.

관련 항목
mt(1), scsi(4), sa(9)

역사
sa 드라이버는 CAM SCSI 하부조직을 위해서(때문에) Justin T. Gibbs 와 Kenneth Merry 가 썼습니다. Julian Elischer 가 써, Mach 2.5 로부터 이식했다 st 디바이스 드라이버로부터는 많은 아이디어를 얻고 있습니다.

현재, 기록을 소유하고 있는 것은, 테이프 드라이버를 파괴해 온 너무 긴 세월을 희생하고 있는 Matthew Jacob 입니다.