> On Feb 1, 2018, at 6:42 PM, Kenneth Garges <gar...@ucsc.edu> wrote:
> 
> This is really weird. 
> 
> First mtx works:
> 
> # mtx -f /dev/pass42 status
>   Storage Changer /dev/pass42:2 Drives, 54 Slots ( 5 Import/Export )
> Data Transfer Element 0:Empty
> Data Transfer Element 1:Full (Storage Element 1 Loaded):VolumeTag = 000600    
>                       
>       Storage Element 1:Empty:VolumeTag=                                
>       Storage Element 2:Empty:VolumeTag=                                
>       Storage Element 3:Empty:VolumeTag=                                
>       Storage Element 4:Empty:VolumeTag=                                
>       Storage Element 5:Empty:VolumeTag=                                
>       Storage Element 6:Empty:VolumeTag=                                
>       Storage Element 7:Empty:VolumeTag=                                
>       Storage Element 8:Empty:VolumeTag=                                
>       Storage Element 9:Empty:VolumeTag=                                
>       Storage Element 10:Empty:VolumeTag=                                
>       Storage Element 11:Empty:VolumeTag=                                
>       Storage Element 12:Empty:VolumeTag=                                
>       Storage Element 13:Empty:VolumeTag=                                
>       Storage Element 14:Empty:VolumeTag=                                
>       Storage Element 15:Full :VolumeTag=B00001                          
>       Storage Element 16:Full :VolumeTag=B00002                          
>       Storage Element 17:Full :VolumeTag=B00003                          
>       Storage Element 18:Full :VolumeTag=B00004                          
>       Storage Element 19:Empty:VolumeTag=                                
>       Storage Element 20:Empty:VolumeTag=                                
>       Storage Element 21:Empty:VolumeTag=                                
>       Storage Element 22:Empty:VolumeTag=                                
>       Storage Element 23:Empty:VolumeTag=                                
>       Storage Element 24:Full :VolumeTag=B00005                          
>       Storage Element 25:Empty:VolumeTag=                                
>       Storage Element 26:Empty:VolumeTag=                                
>       Storage Element 27:Empty:VolumeTag=                                
>       Storage Element 28:Empty:VolumeTag=                                
>       Storage Element 29:Empty:VolumeTag=                                
>       Storage Element 30:Empty:VolumeTag=                                
>       Storage Element 31:Empty:VolumeTag=                                
>       Storage Element 32:Empty:VolumeTag=                                
>       Storage Element 33:Empty:VolumeTag=                                
>       Storage Element 34:Empty:VolumeTag=                                
>       Storage Element 35:Empty:VolumeTag=                                
>       Storage Element 36:Empty:VolumeTag=                                
>       Storage Element 37:Empty:VolumeTag=                                
>       Storage Element 38:Empty:VolumeTag=                                
>       Storage Element 39:Empty:VolumeTag=                                
>       Storage Element 40:Empty:VolumeTag=                                
>       Storage Element 41:Empty:VolumeTag=                                
>       Storage Element 42:Empty:VolumeTag=                                
>       Storage Element 43:Empty:VolumeTag=                                
>       Storage Element 44:Empty:VolumeTag=                                
>       Storage Element 45:Empty:VolumeTag=                                
>       Storage Element 46:Empty:VolumeTag=                                
>       Storage Element 47:Empty:VolumeTag=                                
>       Storage Element 48:Empty:VolumeTag=                                
>       Storage Element 49:Empty:VolumeTag=                                
>       Storage Element 50 IMPORT/EXPORT:Empty:VolumeTag=                       
>          
>       Storage Element 51 IMPORT/EXPORT:Empty:VolumeTag=                       
>          
>       Storage Element 52 IMPORT/EXPORT:Empty:VolumeTag=                       
>          
>       Storage Element 53 IMPORT/EXPORT:Empty:VolumeTag=                       
>          
>       Storage Element 54 IMPORT/EXPORT:Empty:VolumeTag=                       
>          
> 
> Try it again immediately afterwards and it doesn’t:

I suspect timing.  Set the sleep option in mtx-changer's config

It can take a while for a tape to settle and for the tape drive to be ready.
-- 
Dan Langille - BSDCan / PGCon
d...@langille.org




> 
> # mtx -f /dev/pass42 status
> RequestSense (0x03) failed
> mtx: Request Sense: Long Report=yes
> mtx: Request Sense: Valid Residual=no
> mtx: Request Sense: Error Code=0 (Unknown?!)
> mtx: Request Sense: Sense Key=No Sense
> mtx: Request Sense: FileMark=no
> mtx: Request Sense: EOM=no
> mtx: Request Sense: ILI=no
> mtx: Request Sense: Additional Sense Code = 00
> mtx: Request Sense: Additional Sense Qualifier = 00
> mtx: Request Sense: BPV=no
> mtx: Request Sense: Error in CDB=no
> mtx: Request Sense: SKSV=no
> Mode sense (0x1A) for Page 0x1D failed
> mtx: Request Sense: Long Report=yes
> mtx: Request Sense: Valid Residual=no
> mtx: Request Sense: Error Code=0 (Unknown?!)
> mtx: Request Sense: Sense Key=No Sense
> mtx: Request Sense: FileMark=no
> mtx: Request Sense: EOM=no
> mtx: Request Sense: ILI=no
> mtx: Request Sense: Additional Sense Code = 00
> mtx: Request Sense: Additional Sense Qualifier = 00
> mtx: Request Sense: BPV=no
> mtx: Request Sense: Error in CDB=no
> mtx: Request Sense: SKSV=no
> READ ELEMENT STATUS Command Failed
> 
> Reboot and working again:
> 
> # who
> garges           pts/0        Feb  1 14:31 (asa-vpn-81-98.ucsc.edu)
> # sync ; sync ; reboot
> Connection to core-prod-bkp-3 closed by remote host.
> Connection to core-prod-bkp-3 closed.
> …
> FreeBSD 10.3-RELEASE-p24 (GENERIC) #0: Wed Nov 15 04:57:40 UTC 2017
> 
> Password:
> garges@core-prod-bkp-3:/home/garges % uptime
>  3:35PM  up 3 mins, 1 user, load averages: 0.07, 0.22, 0.12
> garges@core-prod-bkp-3:/home/garges % sudo -s
> Password:
> # mtx -f /dev/pass42 status
>   Storage Changer /dev/pass42:2 Drives, 54 Slots ( 5 Import/Export )
> Data Transfer Element 0:Empty
> Data Transfer Element 1:Full (Storage Element 2 Loaded):VolumeTag = 000600    
>                       
>       Storage Element 1:Full :VolumeTag=B00002                          
>       Storage Element 2:Empty:VolumeTag=                                
>       Storage Element 3:Empty:VolumeTag=                                
>       Storage Element 4:Empty:VolumeTag=                                
>       Storage Element 5:Empty:VolumeTag=                                
>       Storage Element 6:Empty:VolumeTag=                                
>       Storage Element 7:Empty:VolumeTag=                                
>       Storage Element 8:Empty:VolumeTag=                                
>       Storage Element 9:Empty:VolumeTag=                                
>       Storage Element 10:Empty:VolumeTag=                                
>       Storage Element 11:Empty:VolumeTag=                                
>       Storage Element 12:Empty:VolumeTag=                                
>       Storage Element 13:Empty:VolumeTag=                                
>       Storage Element 14:Empty:VolumeTag=                                
>       Storage Element 15:Full :VolumeTag=B00001                          
>       Storage Element 16:Empty:VolumeTag=                                
>       Storage Element 17:Full :VolumeTag=B00003                          
>       Storage Element 18:Full :VolumeTag=B00004                          
>       Storage Element 19:Empty:VolumeTag=                                
>       Storage Element 20:Empty:VolumeTag=                                
>       Storage Element 21:Empty:VolumeTag=                                
>       Storage Element 22:Empty:VolumeTag=                                
>       Storage Element 23:Empty:VolumeTag=                                
>       Storage Element 24:Full :VolumeTag=B00005                          
>       Storage Element 25:Empty:VolumeTag=                                
>       Storage Element 26:Empty:VolumeTag=                                
>       Storage Element 27:Empty:VolumeTag=                                
>       Storage Element 28:Empty:VolumeTag=                                
>       Storage Element 29:Empty:VolumeTag=                                
>       Storage Element 30:Empty:VolumeTag=                                
>       Storage Element 31:Empty:VolumeTag=                                
>       Storage Element 32:Empty:VolumeTag=                                
>       Storage Element 33:Empty:VolumeTag=                                
>       Storage Element 34:Empty:VolumeTag=                                
>       Storage Element 35:Empty:VolumeTag=                                
>       Storage Element 36:Empty:VolumeTag=                                
>       Storage Element 37:Empty:VolumeTag=                                
>       Storage Element 38:Empty:VolumeTag=                                
>       Storage Element 39:Empty:VolumeTag=                                
>       Storage Element 40:Empty:VolumeTag=                                
>       Storage Element 41:Empty:VolumeTag=                                
>       Storage Element 42:Empty:VolumeTag=                                
>       Storage Element 43:Empty:VolumeTag=                                
>       Storage Element 44:Empty:VolumeTag=                                
>       Storage Element 45:Empty:VolumeTag=                                
>       Storage Element 46:Empty:VolumeTag=                                
>       Storage Element 47:Empty:VolumeTag=                                
>       Storage Element 48:Empty:VolumeTag=                                
>       Storage Element 49:Empty:VolumeTag=                                
>       Storage Element 50 IMPORT/EXPORT:Empty:VolumeTag=                       
>          
>       Storage Element 51 IMPORT/EXPORT:Empty:VolumeTag=                       
>          
>       Storage Element 52 IMPORT/EXPORT:Empty:VolumeTag=                       
>          
>       Storage Element 53 IMPORT/EXPORT:Empty:VolumeTag=                       
>          
>       Storage Element 54 IMPORT/EXPORT:Empty:VolumeTag=                       
>          
> 
> 
> 
> 
> 
> 
>> On 30Jan 2018, at 8:03 PM, Dan Langille <d...@langille.org> wrote:
>> 
>>> On Jan 30, 2018, at 10:23 PM, Kenneth Garges <gar...@ucsc.edu> wrote:
>>> 
>>> I’m having trouble getting a tape library to work. Individual tape drive 
>>> seems ok but the library sometimes makes btape hang requiring a reboot. Or 
>>> it fails.
>> 
>> Fix that first.
>>> 
>>> My system is FreeBSD 10.3-RELEASE-p24. I compiled bacula-9.0.6 from source. 
>>> I have a Quantum Scalar i80 tape library with an LTO-4 drive attached via 
>>> fiber channel. 
>> 
>> If you can I suggest using the packages.  It's what I do.  I am also the 
>> FreeBSD packager.
>> 
>> I do not think this is the cause of the issues.
>> 
>>> 
>>> Most stuff seems ok:
>>> 
>>> # uname -a
>>> FreeBSD core-prod-bkp-3.ucsc.edu 10.3-RELEASE-p24 FreeBSD 10.3-RELEASE-p24 
>>> #0: Wed Nov 15 04:57:40 UTC 2017     
>>> r...@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64
>>> 
>>> # camcontrol devlist
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 8 lun 0 (pass0,da0)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 9 lun 0 (pass1,da1)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 10 lun 0 (pass2,da2)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 11 lun 0 (pass3,da3)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 12 lun 0 (pass4,da4)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 13 lun 0 (pass5,da5)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 14 lun 0 (pass6,da6)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 15 lun 0 (pass7,da7)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 16 lun 0 (pass8,da8)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 17 lun 0 (pass9,da9)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 18 lun 0 (pass10,da10)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 19 lun 0 (pass11,da11)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 20 lun 0 (pass12,da12)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 21 lun 0 (pass13,da13)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 22 lun 0 (pass14,da14)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 23 lun 0 (pass15,da15)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 24 lun 0 (pass16,da16)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 25 lun 0 (pass17,da17)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 26 lun 0 (pass18,da18)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 27 lun 0 (pass19,da19)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 28 lun 0 (pass20,da20)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 29 lun 0 (pass21,da21)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 30 lun 0 (pass22,da22)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 31 lun 0 (pass23,da23)
>>> <LSI SAS2X36 0e0b>                 at scbus0 target 32 lun 0 (pass24,ses0)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 33 lun 0 (pass25,da24)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 34 lun 0 (pass26,da25)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 35 lun 0 (pass27,da26)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 36 lun 0 (pass28,da27)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 37 lun 0 (pass29,da28)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 38 lun 0 (pass30,da29)
>>> <HITACHI HUS723030ALS640 A440>     at scbus0 target 39 lun 0 (pass31,da30)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 40 lun 0 (pass32,da31)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 41 lun 0 (pass33,da32)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 42 lun 0 (pass34,da33)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 43 lun 0 (pass35,da34)
>>> <HITACHI HUS723030ALS640 A350>     at scbus0 target 44 lun 0 (pass36,da35)
>>> <LSI SAS2X28 0e0b>                 at scbus0 target 45 lun 0 (pass37,ses1)
>>> <SATA SSD S9FM01.6>                at scbus2 target 0 lun 0 (ada0,pass38)
>>> <InnoLite SATADOM D150QV-L 120319>  at scbus5 target 0 lun 0 (ada1,pass39)
>>> <AHCI SGPIO Enclosure 1.00 0001>   at scbus7 target 0 lun 0 (pass40,ses2)
>>> <HP Ultrium 4-SCSI V62Z>           at scbus8 target 0 lun 0 (pass41,sa0)
>>> <QUANTUM Scalar i40-i80 180G>      at scbus8 target 0 lun 1 (pass42,ch0)
>>> 
>>> # mt -f /dev/nsa0 status
>>> Drive: sa0: <HP Ultrium 4-SCSI V62Z> Serial Number: C3898E4004
>>> ---------------------------------
>>> Mode      Density              Blocksize      bpi      Compression
>>> Current:  0x46:LTO-4           variable       323215   enabled (0x1)
>>> ---------------------------------
>>> Current Driver State: at rest.
>>> ---------------------------------
>>> Partition:   0      Calc File Number:   0     Calc Record Number: 0
>>> Residual:    0  Reported File Number:   0 Reported Record Number: 0
>>> Flags: BOP
>>> 
>>> # mt -f /dev/nsa0 rewind
>>> # tar cvf /dev/nsa0 .
>>> a .
>>> a ./#make_catalog_backup.pl#
>>> a ./bacula-sd.conf~
>>> a ./master.key.info
>>> 
>>> (A bunch of files omitted)
>>> 
>>> # mt -f /dev/nsa0 rewind
>>> # tar tvf /dev/nsa0 
>>> drwxrwxr-x  0 bacula bacula      0 Jan 30 17:20 ./
>>> -rwxr-x---  0 root   bacula   4556 Dec 21 15:04 ./#make_catalog_backup.pl#
>>> -rw-rw----  0 bacula bacula   3452 Jan 30 15:55 ./bacula-sd.conf~
>>> -rw-r--r--  0 root   bacula    351 Dec 18 16:52 ./master.key.info
>>> 
>>> (Same files)
>>> 
>>> # cat /etc/bacula/bacula-sd.conf
>>> 
>>> #
>>> #  Bacula Storage Daemon Configuration file for UCSC
>>> # Updated 18 Jan 2018 Kenneth Garges
>>> #
>>> #  For Bacula release 7.4.7 (16 March 2017) -- freebsd 10.3-RELEASE-p20
>>> #
>>> # You may need to change the name of your tape drive
>>> #   on the "Archive Device" directive in the Device
>>> #   resource.  If you change the Name and/or the
>>> #   "Media Type" in the Device resource, please ensure
>>> #   that dird.conf has corresponding changes.
>>> #
>>> #
>>> # Copyright (C) 2000-2015 Kern Sibbald
>>> # License: BSD 2-Clause; see file LICENSE-FOSS
>>> #
>>> 
>>> Storage {                             # definition of myself
>>>  Name = core-prod-bkp-3-sd
>>>  SDPort = 9103                  # Director's port
>>>  WorkingDirectory = "/var/db/bacula"
>>>  Pid Directory = "/var/run"
>>>  Maximum Concurrent Jobs = 20
>>> }
>>> 
>>> #
>>> # List Directors who are permitted to contact Storage daemon
>>> #
>>> Director {
>>>  Name = core-prod-bkp-3.ucsc.edu-dir
>>>  Password = “*****"
>>> }
>>> 
>>> 
>>> #
>>> # Define a Virtual autochanger
>>> #
>>> Autochanger {
>>>  Name = FileChgr1
>>>  Device = FileChgr1-Dev1, FileChgr1-Dev2
>>>  Changer Command = ""
>>>  Changer Device = /dev/null
>>> }
>> 
>> I suggest trying must one Device in here for now.
>> 
>>> 
>>> Device {
>>>  Name = FileChgr1-Dev1
>>>  Media Type = File1
>>>  Archive Device = /backups
>>>  LabelMedia = yes;                   # lets Bacula label unlabeled media
>>>  Random Access = Yes;
>>>  AutomaticMount = yes;               # when device opened, read it
>>>  RemovableMedia = no;
>>>  AlwaysOpen = no;
>>>  Maximum Concurrent Jobs = 5
>>> }
>>> 
>>> Device {
>>>  Name = FileChgr1-Dev2
>>>  Media Type = File1
>>>  Archive Device = /backups
>>>  LabelMedia = yes;                   # lets Bacula label unlabeled media
>>>  Random Access = Yes;
>>>  AutomaticMount = yes;               # when device opened, read it
>>>  RemovableMedia = no;
>>>  AlwaysOpen = no;
>>>  Maximum Concurrent Jobs = 5
>>> }
>>> 
>>> 
>>> Device {
>>>  Name = "Drive1"
>>>  Media Type = LTO-4
>>>  Archive Device = /dev/nsa0
>>>  AutomaticMount = yes;               # when device opened, read it
>>>  AlwaysOpen = yes;
>>>  RemovableMedia = yes;
>>>  RandomAccess = no;
>>>  Maximum File Size = 5GB
>>> }
>>> 
>>> #
>>> # Send all messages to the Director,
>>> # mount messages also are sent to the email address
>>> #
>>> Messages {
>>>  Name = Standard
>>>  director = core-prod-bkp-3.ucsc.edu-dir = all
>>> }
>>> 
>>> 
>>> # btape -c /etc/bacula/bacula-sd.conf /dev/nsa0
>>> Tape block granularity is 1024 bytes.
>>> btape: butil.c:290-0 Using device: "/dev/nsa0" for writing.
>>> btape: btape.c:478-0 open device "Drive1" (/dev/nsa0): OK
>>> *test
>>> 
>>> === Write, rewind, and re-read test ===
>>> 
>>> I'm going to write 10000 records and an EOF
>>> then write 10000 records and an EOF, then rewind,
>>> and re-read the data to verify that it is correct.
>>> 
>>> This is an *essential* feature ...
>>> 
>>> btape: btape.c:1161-0 Wrote 10000 blocks of 64412 bytes.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:1177-0 Wrote 10000 blocks of 64412 bytes.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:1219-0 Rewind OK.
>>> 10000 blocks re-read correctly.
>>> Got EOF on tape.
>>> 10000 blocks re-read correctly.
>>> === Test Succeeded. End Write, rewind, and re-read test ===
>>> 
>>> btape: btape.c:1286-0 Block position test
>>> btape: btape.c:1297-0 Rewind OK.
>>> Reposition to file:block 0:4
>>> Block 5 re-read correctly.
>>> Reposition to file:block 0:200
>>> Block 201 re-read correctly.
>>> Reposition to file:block 0:9999
>>> Block 10000 re-read correctly.
>>> Reposition to file:block 1:0
>>> Block 10001 re-read correctly.
>>> Reposition to file:block 1:600
>>> Block 10601 re-read correctly.
>>> Reposition to file:block 1:9999
>>> Block 20000 re-read correctly.
>>> === Test Succeeded. End Write, rewind, and re-read test ===
>>> 
>>> 
>>> 
>>> === Append files test ===
>>> 
>>> This test is essential to Bacula.
>>> 
>>> I'm going to write one record  in file 0,
>>>                   two records in file 1,
>>>             and three records in file 2
>>> 
>>> btape: btape.c:582-0 Rewound "Drive1" (/dev/nsa0)
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:478-0 open device "Drive1" (/dev/nsa0): OK
>>> btape: btape.c:582-0 Rewound "Drive1" (/dev/nsa0)
>>> btape: btape.c:1430-0 Now moving to end of medium.
>>> btape: btape.c:633-0 Moved to end of medium.
>>> We should be in file 3. I am at file 3. This is correct!
>>> 
>>> Now the important part, I am going to attempt to append to the tape.
>>> 
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:582-0 Rewound "Drive1" (/dev/nsa0)
>>> Done appending, there should be no I/O errors
>>> 
>>> Doing Bacula scan of blocks:
>>> 1 block of 64448 bytes in file 1
>>> End of File mark.
>>> 2 blocks of 64448 bytes in file 2
>>> End of File mark.
>>> 3 blocks of 64448 bytes in file 3
>>> End of File mark.
>>> 1 block of 64448 bytes in file 4
>>> End of File mark.
>>> Total files=4, blocks=7, bytes = 451,136
>>> End scanning the tape.
>>> We should be in file 4. I am at file 4. This is correct!
>>> 
>>> The above Bacula scan should have output identical to what follows.
>>> Please double check it ...
>>> === Sample correct output ===
>>> 1 block of 64448 bytes in file 1
>>> End of File mark.
>>> 2 blocks of 64448 bytes in file 2
>>> End of File mark.
>>> 3 blocks of 64448 bytes in file 3
>>> End of File mark.
>>> 1 block of 64448 bytes in file 4
>>> End of File mark.
>>> Total files=4, blocks=7, bytes = 451,136
>>> === End sample correct output ===
>>> 
>>> If the above scan output is not identical to the
>>> sample output, you MUST correct the problem
>>> or Bacula will not be able to write multiple Jobs to 
>>> the tape.
>>> 
>>> 
>>> === Write, backup, and re-read test ===
>>> 
>>> I'm going to write three records and an EOF
>>> then backup over the EOF and re-read the last record.
>>> Bacula does this after writing the last block on the
>>> tape to verify that the block was written correctly.
>>> 
>>> This is not an *essential* feature ...
>>> 
>>> btape: btape.c:582-0 Rewound "Drive1" (/dev/nsa0)
>>> btape: btape.c:820-0 Wrote first record of 64412 bytes.
>>> btape: btape.c:831-0 Wrote second record of 64412 bytes.
>>> btape: btape.c:842-0 Wrote third record of 64412 bytes.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:858-0 Backspaced over EOF OK.
>>> btape: btape.c:863-0 Backspace record OK.
>>> btape: btape.c:880-0 
>>> Block re-read correct. Test succeeded!
>>> === End Write, backup, and re-read test ===
>>> 
>>> 
>>> 
>>> === Forward space files test ===
>>> 
>>> This test is essential to Bacula.
>>> 
>>> I'm going to write five files then test forward spacing
>>> 
>>> btape: btape.c:582-0 Rewound "Drive1" (/dev/nsa0)
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:582-0 Rewound "Drive1" (/dev/nsa0)
>>> btape: btape.c:1644-0 Now forward spacing 1 file.
>>> We should be in file 1. I am at file 1. This is correct!
>>> btape: btape.c:1656-0 Now forward spacing 2 files.
>>> We should be in file 3. I am at file 3. This is correct!
>>> btape: btape.c:582-0 Rewound "Drive1" (/dev/nsa0)
>>> btape: btape.c:1669-0 Now forward spacing 4 files.
>>> We should be in file 4. I am at file 4. This is correct!
>>> 
>>> btape: btape.c:1687-0 Now forward spacing 1 more file.
>>> We should be in file 5. I am at file 5. This is correct!
>>> 
>>> === End Forward space files test ===
>>> 
>>> *quit
>>> 
>>> Now I edited bacula-sd.conf to add the auto changer stuff.
>>> 
>>> # cat bacula-sd.conf
>>> 
>>> #
>>> #  Bacula Storage Daemon Configuration file for UCSC
>>> # Updated 18 Jan 2018 Kenneth Garges
>>> #
>>> #  For Bacula release 7.4.7 (16 March 2017) -- freebsd 10.3-RELEASE-p20
>>> #
>>> # You may need to change the name of your tape drive
>>> #   on the "Archive Device" directive in the Device
>>> #   resource.  If you change the Name and/or the
>>> #   "Media Type" in the Device resource, please ensure
>>> #   that dird.conf has corresponding changes.
>>> #
>>> #
>>> # Copyright (C) 2000-2015 Kern Sibbald
>>> # License: BSD 2-Clause; see file LICENSE-FOSS
>>> #
>>> 
>>> Storage {                             # definition of myself
>>>  Name = core-prod-bkp-3-sd
>>>  SDPort = 9103                  # Director's port
>>>  WorkingDirectory = "/var/db/bacula"
>>>  Pid Directory = "/var/run"
>>>  Maximum Concurrent Jobs = 20
>>> }
>>> 
>>> #
>>> # List Directors who are permitted to contact Storage daemon
>>> #
>>> Director {
>>>  Name = core-prod-bkp-3.ucsc.edu-dir
>>>  Password = "RqVUSRtYt7yf6uKU5BaLKwRmfRZ8fzGSFnW85jhJ2E8p3"
>>> }
>>> 
>>> #
>>> # Devices supported by this Storage daemon
>>> # To connect, the Director's bacula-dir.conf must have the
>>> #  same Name and MediaType.
>>> #
>>> 
>>> #
>>> # Define a Virtual autochanger
>>> #
>>> Autochanger {
>>>  Name = FileChgr1
>>>  Device = FileChgr1-Dev1, FileChgr1-Dev2
>>>  Changer Command = ""
>>>  Changer Device = /dev/null
>>> }
>>> 
>>> Device {
>>>  Name = FileChgr1-Dev1
>>>  Media Type = File1
>>>  Archive Device = /backups
>>>  LabelMedia = yes;                   # lets Bacula label unlabeled media
>>>  Random Access = Yes;
>>>  AutomaticMount = yes;               # when device opened, read it
>>>  RemovableMedia = no;
>>>  AlwaysOpen = no;
>>>  Maximum Concurrent Jobs = 5
>>> }
>>> 
>>> Device {
>>>  Name = FileChgr1-Dev2
>>>  Media Type = File1
>>>  Archive Device = /backups
>>>  LabelMedia = yes;                   # lets Bacula label unlabeled media
>>>  Random Access = Yes;
>>>  AutomaticMount = yes;               # when device opened, read it
>>>  RemovableMedia = no;
>>>  AlwaysOpen = no;
>>>  Maximum Concurrent Jobs = 5
>>> }
>>> 
>>> #
>>> # Quantum Scalar i80 tape library at UCSC
>>> # Hostname of library: core-prod-jb-2
>>> #
>>> Autochanger {
>>>  Name = "core-prod-jb-2"
>>>  Device = "Drive1"
>>> # Device = "Drive2"
>>>  Changer Command = "/usr/local/etc/bacula/mtx-changer %c %o %S %a %d"
>>> #  Changer Device = /dev/ch0
>>>  Changer Device = /dev/pass42
>>> }
>> 
>> Yes, use the pass device for the changers
>> 
>> 
>>> 
>>> Device {
>>>  Name = "Drive1"
>>>  Media Type = LTO-4
>>> #  Archive Device = /dev/pass41
>>>  Archive Device = /dev/nsa0
>>>  AutomaticMount = yes;               # when device opened, read it
>>>  AlwaysOpen = yes;
>>>  RemovableMedia = yes;
>>>  RandomAccess = no;
>>>  Maximum File Size = 5GB
>>>  Changer Command = "/usr/local/etc/bacula/mtx-changer %c %o %S %a %d"
>>>  Changer Device = /dev/pass42
>>>  AutoChanger = yes
>>> # Enable the Alert command only if you have the mtx package loaded
>>> #Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
>>> # If you have smartctl, enable this, it has more info than tapeinfo
>>> #Alert Command = "sh -c 'smartctl -H -l error %c'"
>>> }
>>> 
>>> #
>>> # Send all messages to the Director,
>>> # mount messages also are sent to the email address
>>> #
>>> Messages {
>>>  Name = Standard
>>>  director = core-prod-bkp-3.ucsc.edu-dir = all
>>> }
>>> 
>>> # btape -c /etc/bacula/bacula-sd.conf -v -d 99 /dev/nsa0
>>> Tape block granularity is 1024 bytes.
>>> btape: address_conf.c:274-0 Initaddr 0.0.0.0:9103 
>>> btape: butil.c:290-0 Using device: "/dev/nsa0" for writing.
>>> btape: autochanger.c:328-0 Locking changer core-prod-jb-2
>>> 30-Jan 19:08 btape JobId 0: 3301 Issuing autochanger "loaded? drive 0" 
>>> command.
>>> btape: autochanger.c:284-0 Run program=/usr/local/etc/bacula/mtx-changer 
>>> /dev/pass42 loaded 0 /dev/nsa0 0
>>> btape: autochanger.c:286-0 run_prog: /usr/local/etc/bacula/mtx-changer 
>>> /dev/pass42 loaded 0 /dev/nsa0 0 stat=268435457 result=RequestSense (0x03) 
>>> failed
>> 
>> I think you need more testing on the command line with mtx-changer. See 
>> below.
>> 
>>> mtx: Request Sense: Long Report=yes
>>> mtx: Request Sense: Valid Residual=no
>>> mtx: Request Sense: Error Code=0 (Unknown?!)
>>> mtx: Request Sense: Sense Key=No Sense
>>> mtx: Request Sense: FileMark=no
>>> mtx: Request Sense: EOM=no
>>> mtx: Request Sense: ILI=no
>>> mtx: Request Sense: Additional Sense Code = 00
>>> mtx: Request Sense: Additional Sense Qualifier = 00
>>> mtx: Request Sense: BPV=no
>>> mtx: Request Sense: Error in CDB=no
>>> mtx: Request Sense: SKSV=no
>>> Mode sense (0x1A) for Page 0x1D failed
>>> mtx: Request Sense: Long Report=yes
>>> mtx: Request Sense: Valid Residual=no
>>> mtx: Request Sense: Error Code=0 (Unknown?!)
>>> mtx: Request Sense: Sense Key=No Sense
>>> mtx: Request Sense: FileMark=no
>>> mtx: Request Sense: EOM=no
>>> mtx: Request Sense: ILI=no
>>> mtx: Request Sense: Additional Sense Code = 00
>>> mtx: Request Sense: Additional Sense Qualifier = 00
>>> mtx: Request Sense: BPV=no
>>> mtx: Request Sense: Error in CDB=no
>>> mtx: Request Sense: SKSV=no
>>> READ ELEMENT STATUS Command Failed
>>> 30-Jan 19:08 btape JobId 0: 3991 Bad autochanger "loaded? drive 0" command: 
>>> ERR=Child exited with code 1.
>>> Results=RequestSense (0x03) failed
>>> mtx: Request Sense: Long Report=yes
>>> mtx: Request Sense: Valid Residual=no
>>> mtx: Request Sense: Error Code=0 (Unknown?!)
>>> mtx: Request Sense: Sense Key=No Sense
>>> mtx: Request Sense: FileMark=no
>>> mtx: Request Sense: EOM=no
>>> mtx: Request Sense: ILI=no
>>> mtx: Request Sense: Additional Sense Code = 00
>>> mtx: Request Sense: Additional Sense Qualifier = 00
>>> mtx: Request Sense: BPV=no
>>> mtx: Request Sense: Error in CDB=no
>>> mtx: Request Sense: SKSV=no
>>> Mode sense (0x1A) for Page 0x1D failed
>>> mtx: Request Sense: Long Report=yes
>>> mtx: Request Sense: Valid Residual=no
>>> mtx: Request Sense: Error Code=0 (Unknown?!)
>>> mtx: Request Sense: Sense Key=No Sense
>>> mtx: Request Sense: FileMark=no
>>> mtx: Request Sense: EOM=no
>>> mtx: Request Sense: ILI=no
>>> mtx: Request Sense: Additional Sense Code = 00
>>> mtx: Request Sense: Additional Sense Qualifier = 00
>>> mtx: Request Sense: BPV=no
>>> mtx: Request Sense: Error in CDB=no
>>> mtx: Request Sense: SKSV=no
>>> READ ELEMENT STATUS Command Failed
>>> 
>>> btape: autochanger.c:314-0 Error: autochanger loaded? drive 0 ERR=Child 
>>> exited with code 1.
>>> Results=RequestSense (0x03) failed
>>> mtx: Request Sense: Long Report=yes
>>> mtx: Request Sense: Valid Residual=no
>>> mtx: Request Sense: Error Code=0 (Unknown?!)
>>> mtx: Request Sense: Sense Key=No Sense
>>> mtx: Request Sense: FileMark=no
>>> mtx: Request Sense: EOM=no
>>> mtx: Request Sense: ILI=no
>>> mtx: Request Sense: Additional Sense Code = 00
>>> mtx: Request Sense: Additional Sense Qualifier = 00
>>> mtx: Request Sense: BPV=no
>>> mtx: Request Sense: Error in CDB=no
>>> mtx: Request Sense: SKSV=no
>>> Mode sense (0x1A) for Page 0x1D failed
>>> mtx: Request Sense: Long Report=yes
>>> mtx: Request Sense: Valid Residual=no
>>> mtx: Request Sense: Error Code=0 (Unknown?!)
>>> mtx: Request Sense: Sense Key=No Sense
>>> mtx: Request Sense: FileMark=no
>>> mtx: Request Sense: EOM=no
>>> mtx: Request Sense: ILI=no
>>> mtx: Request Sense: Additional Sense Code = 00
>>> mtx: Request Sense: Additional Sense Qualifier = 00
>>> mtx: Request Sense: BPV=no
>>> mtx: Request Sense: Error in CDB=no
>>> mtx: Request Sense: SKSV=no
>>> READ ELEMENT STATUS Command Failed
>>> 
>>> btape: autochanger.c:342-0 Unlocking changer core-prod-jb-2
>>> btape: autochanger.c:328-0 Locking changer core-prod-jb-2
>>> 30-Jan 19:08 btape JobId 0: 3301 Issuing autochanger "loaded? drive 0" 
>>> command.
>>> btape: autochanger.c:284-0 Run program=/usr/local/etc/bacula/mtx-changer 
>>> /dev/pass42 loaded 0 /dev/nsa0 0
>>> btape: autochanger.c:286-0 run_prog: /usr/local/etc/bacula/mtx-changer 
>>> /dev/pass42 loaded 0 /dev/nsa0 0 stat=268435457 result=mtx: Request Sense: 
>>> Long Report=yes
>>> mtx: Request Sense: Valid Residual=no
>>> mtx: Request Sense: Error Code=0 (Unknown?!)
>>> mtx: Request Sense: Sense Key=No Sense
>>> mtx: Request Sense: FileMark=no
>>> mtx: Request Sense: EOM=no
>>> mtx: Request Sense: ILI=no
>>> mtx: Request Sense: Additional Sense Code = 00
>>> mtx: Request Sense: Additional Sense Qualifier = 00
>>> mtx: Request Sense: BPV=no
>>> mtx: Request Sense: Error in CDB=no
>>> mtx: Request Sense: SKSV=no
>>> INQUIRY command Failed
>>> 30-Jan 19:08 btape JobId 0: 3991 Bad autochanger "loaded? drive 0" command: 
>>> ERR=Child exited with code 1.
>>> Results=mtx: Request Sense: Long Report=yes
>>> mtx: Request Sense: Valid Residual=no
>>> mtx: Request Sense: Error Code=0 (Unknown?!)
>>> mtx: Request Sense: Sense Key=No Sense
>>> mtx: Request Sense: FileMark=no
>>> mtx: Request Sense: EOM=no
>>> mtx: Request Sense: ILI=no
>>> mtx: Request Sense: Additional Sense Code = 00
>>> mtx: Request Sense: Additional Sense Qualifier = 00
>>> mtx: Request Sense: BPV=no
>>> mtx: Request Sense: Error in CDB=no
>>> mtx: Request Sense: SKSV=no
>>> INQUIRY command Failed
>>> 
>>> btape: autochanger.c:314-0 Error: autochanger loaded? drive 0 ERR=Child 
>>> exited with code 1.
>>> Results=mtx: Request Sense: Long Report=yes
>>> mtx: Request Sense: Valid Residual=no
>>> mtx: Request Sense: Error Code=0 (Unknown?!)
>>> mtx: Request Sense: Sense Key=No Sense
>>> mtx: Request Sense: FileMark=no
>>> mtx: Request Sense: EOM=no
>>> mtx: Request Sense: ILI=no
>>> mtx: Request Sense: Additional Sense Code = 00
>>> mtx: Request Sense: Additional Sense Qualifier = 00
>>> mtx: Request Sense: BPV=no
>>> mtx: Request Sense: Error in CDB=no
>>> mtx: Request Sense: SKSV=no
>>> INQUIRY command Failed
>>> 
>>> btape: autochanger.c:342-0 Unlocking changer core-prod-jb-2
>>> btape: btape.c:478-0 open device "Drive1" (/dev/nsa0): OK
>>> *test
>>> 
>>> === Write, rewind, and re-read test ===
>>> 
>>> I'm going to write 10000 records and an EOF
>>> then write 10000 records and an EOF, then rewind,
>>> and re-read the data to verify that it is correct.
>>> 
>>> This is an *essential* feature ...
>>> 
>>> btape: btape.c:1161-0 Wrote 10000 blocks of 64412 bytes.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:1177-0 Wrote 10000 blocks of 64412 bytes.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:1219-0 Rewind OK.
>>> 10000 blocks re-read correctly.
>>> Got EOF on tape.
>>> 10000 blocks re-read correctly.
>>> === Test Succeeded. End Write, rewind, and re-read test ===
>>> 
>>> btape: btape.c:1286-0 Block position test
>>> btape: btape.c:1297-0 Rewind OK.
>>> Reposition to file:block 0:4
>>> Block 5 re-read correctly.
>>> Reposition to file:block 0:200
>>> Block 201 re-read correctly.
>>> Reposition to file:block 0:9999
>>> Block 10000 re-read correctly.
>>> Reposition to file:block 1:0
>>> Block 10001 re-read correctly.
>>> Reposition to file:block 1:600
>>> Block 10601 re-read correctly.
>>> Reposition to file:block 1:9999
>>> Block 20000 re-read correctly.
>>> === Test Succeeded. End Write, rewind, and re-read test ===
>>> 
>>> 
>>> 
>>> === Append files test ===
>>> 
>>> This test is essential to Bacula.
>>> 
>>> I'm going to write one record  in file 0,
>>>                   two records in file 1,
>>>             and three records in file 2
>>> 
>>> btape: btape.c:582-0 Rewound "Drive1" (/dev/nsa0)
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: dev.c:271-0 close_dev vol= fd=3 dev=802c6bc28 adata=0 dev="Drive1" 
>>> (/dev/nsa0)
>>> btape: autochanger.c:328-0 Locking changer core-prod-jb-2
>>> 30-Jan 19:12 btape JobId 0: 3301 Issuing autochanger "loaded? drive 0" 
>>> command.
>>> btape: autochanger.c:284-0 Run program=/usr/local/etc/bacula/mtx-changer 
>>> /dev/pass42 loaded 0 /dev/nsa0 0
>>> btape: autochanger.c:286-0 run_prog: /usr/local/etc/bacula/mtx-changer 
>>> /dev/pass42 loaded 0 /dev/nsa0 0 stat=268435457 result=mtx: Request Sense: 
>>> Long Report=yes
>>> mtx: Request Sense: Valid Residual=no
>>> mtx: Request Sense: Error Code=0 (Unknown?!)
>>> mtx: Request Sense: Sense Key=No Sense
>>> mtx: Request Sense: FileMark=no
>>> mtx: Request Sense: EOM=no
>>> mtx: Request Sense: ILI=no
>>> mtx: Request Sense: Additional Sense Code = 00
>>> mtx: Request Sense: Additional Sense Qualifier = 00
>>> mtx: Request Sense: BPV=no
>>> mtx: Request Sense: Error in CDB=no
>>> mtx: Request Sense: SKSV=no
>>> INQUIRY command Failed
>>> 30-Jan 19:12 btape JobId 0: 3991 Bad autochanger "loaded? drive 0" command: 
>>> ERR=Child exited with code 1.
>>> Results=mtx: Request Sense: Long Report=yes
>>> mtx: Request Sense: Valid Residual=no
>>> mtx: Request Sense: Error Code=0 (Unknown?!)
>>> mtx: Request Sense: Sense Key=No Sense
>>> mtx: Request Sense: FileMark=no
>>> mtx: Request Sense: EOM=no
>>> mtx: Request Sense: ILI=no
>>> mtx: Request Sense: Additional Sense Code = 00
>>> mtx: Request Sense: Additional Sense Qualifier = 00
>>> mtx: Request Sense: BPV=no
>>> mtx: Request Sense: Error in CDB=no
>>> mtx: Request Sense: SKSV=no
>>> INQUIRY command Failed
>>> 
>>> btape: autochanger.c:314-0 Error: autochanger loaded? drive 0 ERR=Child 
>>> exited with code 1.
>>> Results=mtx: Request Sense: Long Report=yes
>>> mtx: Request Sense: Valid Residual=no
>>> mtx: Request Sense: Error Code=0 (Unknown?!)
>>> mtx: Request Sense: Sense Key=No Sense
>>> mtx: Request Sense: FileMark=no
>>> mtx: Request Sense: EOM=no
>>> mtx: Request Sense: ILI=no
>>> mtx: Request Sense: Additional Sense Code = 00
>>> mtx: Request Sense: Additional Sense Qualifier = 00
>>> mtx: Request Sense: BPV=no
>>> mtx: Request Sense: Error in CDB=no
>>> mtx: Request Sense: SKSV=no
>>> INQUIRY command Failed
>>> 
>>> btape: autochanger.c:342-0 Unlocking changer core-prod-jb-2
>>> btape: btape.c:478-0 open device "Drive1" (/dev/nsa0): OK
>>> btape: btape.c:582-0 Rewound "Drive1" (/dev/nsa0)
>>> btape: btape.c:1430-0 Now moving to end of medium.
>>> btape: btape.c:633-0 Moved to end of medium.
>>> We should be in file 3. I am at file 3. This is correct!
>>> 
>>> Now the important part, I am going to attempt to append to the tape.
>>> 
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:582-0 Rewound "Drive1" (/dev/nsa0)
>>> Done appending, there should be no I/O errors
>>> 
>>> Doing Bacula scan of blocks:
>>> Block=19999 file,blk=0,1 blen=64448 First rec FI=0 SessId=0 SessTim=0 
>>> Strm=0 rlen=64412
>>> 1 block of 64448 bytes in file 1
>>> End of File mark.
>>> Block=20000 file,blk=1,1 blen=64448 First rec FI=0 SessId=0 SessTim=0 
>>> Strm=0 rlen=64412
>>> Block=20001 file,blk=1,2 blen=64448 First rec FI=0 SessId=0 SessTim=0 
>>> Strm=0 rlen=64412
>>> 2 blocks of 64448 bytes in file 2
>>> End of File mark.
>>> Block=20002 file,blk=2,1 blen=64448 First rec FI=0 SessId=0 SessTim=0 
>>> Strm=0 rlen=64412
>>> Block=20003 file,blk=2,2 blen=64448 First rec FI=0 SessId=0 SessTim=0 
>>> Strm=0 rlen=64412
>>> Block=20004 file,blk=2,3 blen=64448 First rec FI=0 SessId=0 SessTim=0 
>>> Strm=0 rlen=64412
>>> 3 blocks of 64448 bytes in file 3
>>> End of File mark.
>>> Block=20005 file,blk=3,1 blen=64448 First rec FI=0 SessId=0 SessTim=0 
>>> Strm=0 rlen=64412
>>> 1 block of 64448 bytes in file 4
>>> End of File mark.
>>> Total files=4, blocks=7, bytes = 451,136
>>> End scanning the tape.
>>> We should be in file 4. I am at file 4. This is correct!
>>> 
>>> The above Bacula scan should have output identical to what follows.
>>> Please double check it ...
>>> === Sample correct output ===
>>> 1 block of 64448 bytes in file 1
>>> End of File mark.
>>> 2 blocks of 64448 bytes in file 2
>>> End of File mark.
>>> 3 blocks of 64448 bytes in file 3
>>> End of File mark.
>>> 1 block of 64448 bytes in file 4
>>> End of File mark.
>>> Total files=4, blocks=7, bytes = 451,136
>>> === End sample correct output ===
>>> 
>>> If the above scan output is not identical to the
>>> sample output, you MUST correct the problem
>>> or Bacula will not be able to write multiple Jobs to 
>>> the tape.
>>> 
>>> 
>>> === Write, backup, and re-read test ===
>>> 
>>> I'm going to write three records and an EOF
>>> then backup over the EOF and re-read the last record.
>>> Bacula does this after writing the last block on the
>>> tape to verify that the block was written correctly.
>>> 
>>> This is not an *essential* feature ...
>>> 
>>> btape: btape.c:582-0 Rewound "Drive1" (/dev/nsa0)
>>> btape: btape.c:820-0 Wrote first record of 64412 bytes.
>>> btape: btape.c:831-0 Wrote second record of 64412 bytes.
>>> btape: btape.c:842-0 Wrote third record of 64412 bytes.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:858-0 Backspaced over EOF OK.
>>> btape: btape.c:863-0 Backspace record OK.
>>> btape: btape.c:880-0 
>>> Block re-read correct. Test succeeded!
>>> === End Write, backup, and re-read test ===
>>> 
>>> 
>>> 
>>> === Forward space files test ===
>>> 
>>> This test is essential to Bacula.
>>> 
>>> I'm going to write five files then test forward spacing
>>> 
>>> btape: btape.c:582-0 Rewound "Drive1" (/dev/nsa0)
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:1917-0 Wrote one record of 64412 bytes.
>>> btape: btape.c:1919-0 Wrote block to device.
>>> btape: btape.c:612-0 Wrote 1 EOF to "Drive1" (/dev/nsa0)
>>> btape: btape.c:582-0 Rewound "Drive1" (/dev/nsa0)
>>> btape: btape.c:1644-0 Now forward spacing 1 file.
>>> We should be in file 1. I am at file 1. This is correct!
>>> btape: btape.c:1656-0 Now forward spacing 2 files.
>>> We should be in file 3. I am at file 3. This is correct!
>>> btape: btape.c:582-0 Rewound "Drive1" (/dev/nsa0)
>>> btape: btape.c:1669-0 Now forward spacing 4 files.
>>> We should be in file 4. I am at file 4. This is correct!
>>> 
>>> btape: btape.c:1687-0 Now forward spacing 1 more file.
>>> We should be in file 5. I am at file 5. This is correct!
>>> 
>>> === End Forward space files test ===
>>> 
>>> 
>>> Ah, I see you have an autochanger configured.
>>> To test the autochanger you must have a blank tape
>>> that I can write on in Slot 1.
>>> 
>>> Do you wish to continue with the Autochanger test? (y/n): y
>>> 
>>> 
>>> === Autochanger test ===
>>> 
>>> 3301 Issuing autochanger "loaded" command.
>>> 3991 Bad autochanger command: /usr/local/etc/bacula/mtx-changer /dev/pass42 
>>> loaded 1 /dev/nsa0 0
>>> 3991 result="mtx: Request Sense: Long Report=yes
>>> ": ERR=Child exited with code 1
>>> You must correct this error or the Autochanger will not work.
>>> *quit
>>> btape: dev.c:271-0 close_dev vol= fd=3 dev=802c6bc28 adata=0 dev="Drive1" 
>>> (/dev/nsa0)
>>> Pool   Maxsize  Maxused  Inuse
>>> NoPool      256        8      0
>>> NAME        130        0      0
>>> FNAME       256       11      0
>>> MSG       64512        4      0
>>> EMSG       1024        3      0
>>> BSOCK      4096        0      0
>>> 
>>> # /usr/local/etc/bacula/mtx-changer /dev/pass42 loaded 1 /dev/nsa0 0
>>> mtx: Request Sense: Long Report=yes
>>> mtx: Request Sense: Valid Residual=no
>>> mtx: Request Sense: Error Code=0 (Unknown?!)
>>> mtx: Request Sense: Sense Key=No Sense
>>> mtx: Request Sense: FileMark=no
>>> mtx: Request Sense: EOM=no
>>> mtx: Request Sense: ILI=no
>>> mtx: Request Sense: Additional Sense Code = 00
>>> mtx: Request Sense: Additional Sense Qualifier = 00
>>> mtx: Request Sense: BPV=no
>>> mtx: Request Sense: Error in CDB=no
>>> mtx: Request Sense: SKSV=no
>>> INQUIRY command Failed
>>> 
>>> The FreeBSD version of mtx also fails. 
>>> 
>>> # /usr/local/sbin/mtx -f /dev/pass42 inquiry
>>> mtx: Request Sense: Long Report=yes
>>> mtx: Request Sense: Valid Residual=no
>>> mtx: Request Sense: Error Code=0 (Unknown?!)
>>> mtx: Request Sense: Sense Key=No Sense
>>> mtx: Request Sense: FileMark=no
>>> mtx: Request Sense: EOM=no
>>> mtx: Request Sense: ILI=no
>>> mtx: Request Sense: Additional Sense Code = 00
>>> mtx: Request Sense: Additional Sense Qualifier = 00
>>> mtx: Request Sense: BPV=no
>>> mtx: Request Sense: Error in CDB=no
>>> mtx: Request Sense: SKSV=no
>>> INQUIRY Command Failed
>>> # /usr/local/sbin/mtx -f /dev/pass42 status
>>> mtx: Request Sense: Long Report=yes
>>> mtx: Request Sense: Valid Residual=no
>>> mtx: Request Sense: Error Code=0 (Unknown?!)
>>> mtx: Request Sense: Sense Key=No Sense
>>> mtx: Request Sense: FileMark=no
>>> mtx: Request Sense: EOM=no
>>> mtx: Request Sense: ILI=no
>>> mtx: Request Sense: Additional Sense Code = 00
>>> mtx: Request Sense: Additional Sense Qualifier = 00
>>> mtx: Request Sense: BPV=no
>>> mtx: Request Sense: Error in CDB=no
>>> mtx: Request Sense: SKSV=no
>>> INQUIRY command Failed
>>> 
>>> 
>>> And using /dev/ch0 instead of /dev/pass42 doesn’t seem to help.
>>> 
>>> # /usr/local/sbin/mtx -f /dev/ch0 status
>>> cannot open SCSI device '/dev/ch0' - Input/output error
>>> 
>>> # /usr/local/etc/bacula/mtx-changer /dev/ch0 loaded 1 /dev/nsa0 0
>>> cannot open SCSI device '/dev/ch0' - Input/output error
>> 
>> I have documented most of my setup procedure on FreeBSD.
>> 
>> Getting mtx working first.  Then mtx-changers.  Verify permissions on 
>> devices for the bacula user.
>> 
>> These might help, based on 
>> https://dan.langille.org/?s=mtx-changer&searchsubmit=
>> 
>> https://dan.langille.org/2016/02/04/dell-tl4000-tape-library-running-btape-and-configuring-baculas-mtx-changer/
>> 
>> This example has more on permissions:
>> 
>> https://www.freebsddiary.org/tape-library-integration.php
>> 
>> Hope that gets you started.
>> 
>> -- 
>> Dan Langille - BSDCan / PGCon
>> d...@langille.org
> 


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users

Reply via email to