LinearTapeFileSystem / ltfs

Reference implementation of the LTFS format Spec for stand alone tape drive
BSD 3-Clause "New" or "Revised" License
252 stars 76 forks source link

LTO-7 on IBM Drive only mounts as read only after running mkltfs #358

Closed robertovco3 closed 2 years ago

robertovco3 commented 2 years ago

Describe the bug We are unable to successfully mount and write to an LTO-7 Tape with IBM Ultrium drive after it has been formatted using mkltfs.

Drive Info: ULTRIUM-HH7 Firmware version(s) tested: K4K1, P381

LTFS Info: LTFS version 2.4.4.1 (Prelim). LTFS Format Specification version 2.4.0.

HBA Info: IBM Drives connected using fiber channel Emulex LightPulse LPE16004

To Reproduce Steps to reproduce the behavior:

Output of mkltfs

[ltfsuser@ltfsserver /]$ sudo mkltfs -f -x -d /dev/tape/library/dte0 -s T01432 -n T01432
LTFS15000I Starting mkltfs, LTFS version 2.4.4.1 (Prelim), log level 7.
LTFS15041I Launched by "mkltfs -f -x -d /dev/tape/library/dte0 -s T01432 -n T01432".
LTFS15042I This binary is built for Linux (x86_64).
LTFS15043I GCC version is 4.8.5 20150623 (Red Hat 4.8.5-16).
LTFS17087I Kernel version: Linux version 3.10.0-693.21.1.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Wed Mar 7 19:03:37 UTC 2018 i386.
LTFS17089I Distribution: NAME="CentOS Linux".
LTFS17089I Distribution: CentOS Linux release 7.4.1708 (Core) .
LTFS17089I Distribution: CentOS Linux release 7.4.1708 (Core) .
LTFS17089I Distribution: CentOS Linux release 7.4.1708 (Core) .
LTFS15025D Validating command line options.
LTFS15037D Command line options are valid.
LTFS15003I Formatting device '/dev/tape/library/dte0'.
LTFS15004I LTFS volume blocksize: 524288.
LTFS15005I Index partition placement policy: None.
LTFS11337I Update index-dirty flag (1) - T01432 (0x0x2071160).
LTFS15006D Opening the device.
LTFS17085I Plugin: Loading "lin_tape" tape backend.
LTFS30416I lin_tape version is 3.0.59.
LTFS30423I Opening a device through ibmtape driver (/dev/tape/library/dte0).
LTFS30428I Product ID is 'ULTRIUM-HH7     '.
LTFS30429I Vendor ID is IBM     .
LTFS30593D Backend inquiry: 128 .
LTFS30432I Firmware revision is K4K1.
LTFS30433I Drive serial is 11C70E30B5.
LTFS12023D Reserving device.
LTFS30592D Backend reserve unit (6) 11C70E30B5.
LTFS12028D Unlocking medium.
LTFS30592D Backend allow medium removal 11C70E30B5.
LTFS30592D Backend read block limits 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x05, timeout = 60).
LTFS17160I Maximum device block size is 1048576.
LTFS11330I Loading cartridge.
LTFS30592D Backend load 11C70E30B5.
LTFS30598D Backend readpos: (0, 0) FM = 0 11C70E30B5.
LTFS30593D Backend modesense: 63 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x5a, timeout = 60).
LTFS30592D Backend test unit ready 11C70E30B5.
LTFS12026D Locking medium in the drive.
LTFS30592D Backend prevent medium removal 11C70E30B5.
LTFS30598D Backend readpos: (0, 0) FM = 0 11C70E30B5.
LTFS30592D Backend lin_tape_ibmtape_set_default Setting SILI bit.
LTFS30592D Backend lin_tape_ibmtape_set_default Resetting LBP.
LTFS30593D Backend modesense: 36 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x5a, timeout = 60).
LTFS30593D Backend LBP Enable: 0 .
LTFS30593D Backend LBP Method: 1 .
LTFS30472I Logical block protection is disabled.
LTFS30597D Backend logsense: (23, 0) 11C70E30B5.
LTFS30457I Cannot get remaining capacity: get log page 0x17 failed (437).
LTFS30592D Backend read block limits 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x05, timeout = 60).
LTFS30593D Backend modesense: 0 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x5a, timeout = 60).
LTFS30593D Backend modesense: 16 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x5a, timeout = 60).
LTFS11332I Load successful.
LTFS30592D Backend test unit ready 11C70E30B5.
LTFS30592D Backend test unit ready 11C70E30B5.
LTFS30597D Backend logsense: (23, 0) 11C70E30B5.
LTFS30457I Cannot get remaining capacity: get log page 0x17 failed (437).
LTFS30593D Backend modesense: 16 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x5a, timeout = 60).
LTFS30592D Backend modeselect 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x55, timeout = 60).
LTFS17157I Changing the drive setting to write-anywhere mode.
LTFS30593D Backend modesense: 16 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x5a, timeout = 60).
LTFS15007D Device opened.
LTFS15049I Checking the medium (load).
LTFS30592D Backend test unit ready 11C70E30B5.
LTFS30592D Backend load 11C70E30B5.
LTFS30598D Backend readpos: (0, 0) FM = 0 11C70E30B5.
LTFS30593D Backend modesense: 63 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x5a, timeout = 60).
LTFS30592D Backend test unit ready 11C70E30B5.
LTFS30598D Backend readpos: (0, 0) FM = 0 11C70E30B5.
LTFS30592D Backend lin_tape_ibmtape_set_default Setting SILI bit.
LTFS30592D Backend lin_tape_ibmtape_set_default Resetting LBP.
LTFS30593D Backend modesense: 36 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x5a, timeout = 60).
LTFS30593D Backend LBP Enable: 0 .
LTFS30593D Backend LBP Method: 1 .
LTFS30472I Logical block protection is disabled.
LTFS30597D Backend logsense: (23, 0) 11C70E30B5.
LTFS30457I Cannot get remaining capacity: get log page 0x17 failed (437).
LTFS30592D Backend read block limits 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x05, timeout = 60).
LTFS30593D Backend modesense: 0 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x5a, timeout = 60).
LTFS30593D Backend modesense: 16 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x5a, timeout = 60).
LTFS15010I Creating data partition b on SCSI partition 1.
LTFS15011I Creating index partition a on SCSI partition 0.
LTFS30592D Backend read block limits 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x05, timeout = 60).
LTFS30593D Backend modesense: 0 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x5a, timeout = 60).
LTFS17165I Resetting the medium's capacity proportion.
LTFS30592D Backend load 11C70E30B5.
LTFS30598D Backend readpos: (0, 0) FM = 0 11C70E30B5.
LTFS30593D Backend modesense: 63 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x5a, timeout = 60).
LTFS39801D SCSI timeout (op_code 0x0b, timeout = 960).
LTFS30592D Backend test unit ready 11C70E30B5.
LTFS30406D IOCTL: sense = 06/2a01.
LTFS30407D IOCTL: pos = 0x00000000 11C70E30B5.
LTFS30410D IOCTL: TEST UNIT READY 17162 expected error -20604.
LTFS11097I Partitioning the medium.
LTFS30592D Backend load 11C70E30B5.
LTFS30598D Backend readpos: (0, 0) FM = 0 11C70E30B5.
LTFS30593D Backend modesense: 63 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x5a, timeout = 60).
LTFS30593D Backend modesense: 17 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x5a, timeout = 60).
LTFS30592D Backend modeselect 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x55, timeout = 60).
LTFS30402D SIOC_PASS_THROUGH: sense = 01/3700.
LTFS30403D SIOC_PASS_THROUGH: pos = 0x00000000 11C70E30B5.
LTFS30592D Backend format 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x04, timeout = 3240).
LTFS30593D Backend modesense: 63 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x5a, timeout = 60).
LTFS30593D Backend modesense: 15 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x5a, timeout = 60).
LTFS30592D Backend modeselect 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x55, timeout = 60).
LTFS11100I Writing label to partition b.
LTFS30597D Backend locate: (1, 0) 11C70E30B5.
LTFS30598D Backend readpos: (1, 0) FM = 0 11C70E30B5.
LTFS30595D Backend write: 80 bytes 11C70E30B5.
LTFS30596D Backend writefm: 1 11C70E30B5.
LTFS30598D Backend readpos: (1, 2) FM = 1 11C70E30B5.
LTFS30595D Backend write: 489 bytes 11C70E30B5.
LTFS30596D Backend writefm: 1 11C70E30B5.
LTFS30598D Backend readpos: (1, 4) FM = 2 11C70E30B5.
LTFS11278I Writing index to partition b.
LTFS30597D Backend readattr: (0, 5667) 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x8c, timeout = 60).
LTFS30402D SIOC_PASS_THROUGH: sense = 05/2400.
LTFS30403D SIOC_PASS_THROUGH: pos = 0x00000004 11C70E30B5.
LTFS30413I Error on readattr: Invalid Field in CDB (-20501) 11C70E30B5.
LTFS30460I Cannot read attribute (-20501).
LTFS11336I The attribute does not exist. Ignore the expected error.
LTFS17235I Writing index of T01432 to b (Reason: Format, 0 files) 11C70E30B5.
LTFS30596D Backend writefm: 1 11C70E30B5.
LTFS30598D Backend readpos: (1, 5) FM = 3 11C70E30B5.
LTFS30595D Backend write: 895 bytes 11C70E30B5.
LTFS30596D Backend writefm: 1 11C70E30B5.
LTFS30598D Backend readpos: (1, 7) FM = 4 11C70E30B5.
LTFS30597D Backend readattr: (0, 9) 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x8c, timeout = 60).
LTFS30594D Backend writeattr: 1 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x8d, timeout = 60).
LTFS17236I Wrote index of T01432 (Gen = 1, Part = b, Pos = 5, 11C70E30B5).
LTFS11337I Update index-dirty flag (0) - T01432 (0x0x2071160).
LTFS11100I Writing label to partition a.
LTFS30597D Backend locate: (0, 0) 11C70E30B5.
LTFS30598D Backend readpos: (0, 0) FM = 0 11C70E30B5.
LTFS30595D Backend write: 80 bytes 11C70E30B5.
LTFS30596D Backend writefm: 1 11C70E30B5.
LTFS30598D Backend readpos: (0, 2) FM = 1 11C70E30B5.
LTFS30595D Backend write: 489 bytes 11C70E30B5.
LTFS30596D Backend writefm: 1 11C70E30B5.
LTFS30598D Backend readpos: (0, 4) FM = 2 11C70E30B5.
LTFS11278I Writing index to partition a.
LTFS30597D Backend readattr: (0, 5667) 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x8c, timeout = 60).
LTFS30402D SIOC_PASS_THROUGH: sense = 05/2400.
LTFS30403D SIOC_PASS_THROUGH: pos = 0x00000004 11C70E30B5.
LTFS30413I Error on readattr: Invalid Field in CDB (-20501) 11C70E30B5.
LTFS30460I Cannot read attribute (-20501).
LTFS11336I The attribute does not exist. Ignore the expected error.
LTFS30596D Backend writefm: 0 11C70E30B5.
LTFS30598D Backend readpos: (0, 4) FM = 2 11C70E30B5.
LTFS17235I Writing index of T01432 to a (Reason: Format, 0 files) 11C70E30B5.
LTFS30596D Backend writefm: 1 11C70E30B5.
LTFS30598D Backend readpos: (0, 5) FM = 3 11C70E30B5.
LTFS30595D Backend write: 1006 bytes 11C70E30B5.
LTFS30596D Backend writefm: 1 11C70E30B5.
LTFS30598D Backend readpos: (0, 7) FM = 4 11C70E30B5.
LTFS30597D Backend readattr: (0, 9) 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x8c, timeout = 60).
LTFS30594D Backend writeattr: 0 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x8d, timeout = 60).
LTFS30594D Backend writeattr: 1 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x8d, timeout = 60).
LTFS17236I Wrote index of T01432 (Gen = 1, Part = a, Pos = 5, 11C70E30B5).
LTFS15013I Volume UUID is: 5a41d8fc-f3a0-4ee1-a291-ad1839881556.
LTFS30592D Backend test unit ready 11C70E30B5.
LTFS30597D Backend logsense: (23, 0) 11C70E30B5.
LTFS30457I Cannot get remaining capacity: get log page 0x17 failed (437).
LTFS15019I Volume capacity is 4409 GB.
LTFS30594D Backend writeattr: 0 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x8d, timeout = 60).
LTFS30594D Backend writeattr: 0 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x8d, timeout = 60).
LTFS30594D Backend writeattr: 0 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x8d, timeout = 60).
LTFS30594D Backend writeattr: 0 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x8d, timeout = 60).
LTFS30594D Backend writeattr: 0 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x8d, timeout = 60).
LTFS30594D Backend writeattr: 0 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x8d, timeout = 60).
LTFS30594D Backend writeattr: 0 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x8d, timeout = 60).
LTFS30594D Backend writeattr: 0 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x8d, timeout = 60).
LTFS30594D Backend writeattr: 0 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x8d, timeout = 60).
LTFS15020D Closing the device.
LTFS12028D Unlocking medium.
LTFS30592D Backend allow medium removal 11C70E30B5.
LTFS30592D Backend test unit ready 11C70E30B5.
LTFS30593D Backend modesense: 16 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x5a, timeout = 60).
LTFS30592D Backend modeselect 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x55, timeout = 60).
LTFS12025D Releasing device.
LTFS30592D Backend release unit (6) 11C70E30B5.
LTFS30592D Backend rewind 11C70E30B5.
LTFS30598D Backend readpos: (0, 0) FM = 0 11C70E30B5.
LTFS30593D Backend modesense: 36 11C70E30B5.
LTFS39801D SCSI timeout (op_code 0x5a, timeout = 60).
LTFS30593D Backend LBP Enable: 0 .
LTFS30593D Backend LBP Method: 1 .
LTFS30472I Logical block protection is disabled.
LTFS15022D Device closed.
LTFS15024I Medium formatted successfully.

Output when mounting LTO-7 Tape:

[ltfsuser@ltfsserver ~]$ sudo ltfs -o rw,devname=/dev/tape/library/dte0 /mnt/library/dte0
LTFS14000I LTFS starting, LTFS version 2.4.4.1 (Prelim), log level 2.
LTFS14058I LTFS Format Specification version 2.4.0.
LTFS14104I Launched by "ltfs -o rw,devname=/dev/tape/library/dte0 /mnt/library/dte0".
LTFS14105I This binary is built for Linux (x86_64).
LTFS14106I GCC version is 4.8.5 20150623 (Red Hat 4.8.5-16).
LTFS17087I Kernel version: Linux version 3.10.0-693.21.1.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Wed Mar 7 19:03:37 UTC 2018 i386.
LTFS17089I Distribution: NAME="CentOS Linux".
LTFS17089I Distribution: CentOS Linux release 7.4.1708 (Core) .
LTFS17089I Distribution: CentOS Linux release 7.4.1708 (Core) .
LTFS17089I Distribution: CentOS Linux release 7.4.1708 (Core) .
LTFS14063I Sync type is "time", Sync time is 300 sec.
LTFS17085I Plugin: Loading "lin_tape" tape backend.
LTFS17085I Plugin: Loading "unified" iosched backend.
LTFS14095I Set the tape device write-anywhere mode to avoid cartridge ejection.
LTFS30416I lin_tape version is 3.0.59.
LTFS30423I Opening a device through ibmtape driver (/dev/tape/library/dte0).
LTFS30428I Product ID is 'ULTRIUM-HH7     '.
LTFS30429I Vendor ID is IBM     .
LTFS30432I Firmware revision is K4K1.
LTFS30433I Drive serial is 11C70E30B5.
LTFS17160I Maximum device block size is 1048576.
LTFS11330I Loading cartridge.
LTFS30472I Logical block protection is disabled.
LTFS30457I Cannot get remaining capacity: get log page 0x17 failed (437).
LTFS11332I Load successful.
LTFS30457I Cannot get remaining capacity: get log page 0x17 failed (437).
LTFS17157I Changing the drive setting to write-anywhere mode.
LTFS11005I Mounting the volume.
LTFS30472I Logical block protection is disabled.
LTFS30457I Cannot get remaining capacity: get log page 0x17 failed (437).
LTFS30457I Cannot get remaining capacity: get log page 0x17 failed (437).
LTFS30464W Cannot get EOD status: failed to get log page 0x17 (437).
LTFS30464W Cannot get EOD status: failed to get log page 0x17 (437).
LTFS17145W Tape backend does not support missing EOD detection.
LTFS17147I Attempting to mount a cartridge without EOD status check.
LTFS17227I Tape attribute: Vendor = IBM     .
LTFS17227I Tape attribute: Application Name = LTFS                            .
LTFS17227I Tape attribute: Application Version = 2.4.4.1 .
LTFS17227I Tape attribute: Medium Label = T01432.
LTFS17228I Tape attribute: Text Localization ID = 0x81.
LTFS17227I Tape attribute: Barcode = T01432                          .
LTFS17227I Tape attribute: Application Format Version = 2.4.0           .
LTFS17228I Tape attribute: Volume Lock Status = 0x00.
LTFS17227I Tape attribute: Media Pool name = .
LTFS11031I Volume mounted successfully. T01432 : Gen = 1 / (a, 5) -> (b, 5) / 11C70E30B5.
LTFS14071I Medium has no space to write data. Mounting as read-only.
LTFS14111I Initial setup completed successfully.
LTFS14112I Invoke 'mount' command to check the result of final setup.

Expected behavior At this point we expect to be able to write to the tape, but we get a read-only volume.

piste-jp commented 2 years ago

LTFS doesn't have any good returns against LOGSENSE commands.

First of all, the lin_tape backend is obsoleting and we don't want to have any effort to maintain. I strongly recommend using the sg backend. (It looks you modified the [indtall_dir]/etc/ltfs.conf.local. Use the default configurarion.)

Next, I don't know how you configure the device. What is /dev/tape/library/dte0? Do you configure the udev setting and is it an alias of /dev/IBMtapeX?

Basically, you need to specify the device name that is listed by ltfs -o device_list. It shall be /dev/sgX in the sg backend.

https://github.com/LinearTapeFileSystem/ltfs#how-to-use-the-ltfs-quick-start

robertovco3 commented 2 years ago

Hello Piste,

That is good to know with regards to lin_tape backend. We have not tested our IBM drives using the sg backend and all of our scripting for automated workflows use lin_tape, so we will advise to migrate toward sg.

Yes, /dev/tape/library/dte0 = /dev/IBMtapeX. We use udev settings to mapping the serial for drive1, so that dt0 is always drive 1. We need to figure out how to do the equivalent for sg.

I will attempt the workflow using backend sg.

piste-jp commented 2 years ago

I recommend specifying drive serial under the sg backend. The sg backend can have a drive serial or a device name like /dev/sgX.

https://github.com/LinearTapeFileSystem/ltfs#step2-format-a-tape

Or put the file like below as /etc/udev/rules.d/60-persistent-storage-tape.rules and create a persistent name.

# persistent storage links: /dev/tape/{by-id,by-path}

ACTION!="add|change", GOTO="persistent_storage_tape_end"

# type 8 devices are "Medium Changers"

SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="8", IMPORT{program}="path_id $tmpnode", IMPORT{program}="scsi_id --sg-version=3 --export --whitelisted -d $tempnode", SYMLINK+="tape/by-id/scsi-$env{ID_PATH}-$env{ID_SCSI_SERIAL}"

# type 1 devices are "Tape"
SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="1", IMPORT{program}="path_id $tmpnode", IMPORT{program}="scsi_id --sg-version=3 --export --whitelisted -d $tempnode", SYMLINK+="tape/by-id/scsi-$env{ID_PATH}-$env{ID_SCSI_SERIAL}"

SUBSYSTEM!="scsi_tape", GOTO="persistent_storage_tape_end"

KERNEL=="st*[0-9]|nst*[0-9]", ATTRS{ieee1394_id}=="?*", ENV{ID_SERIAL}="$attr{ieee1394_id}", ENV{ID_BUS}="ieee1394"
KERNEL=="st*[0-9]|nst*[0-9]", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", IMPORT{program}="usb_id --export %p"
KERNEL=="st*[0-9]|nst*[0-9]", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", KERNELS=="[0-9]*:*[0-9]", ENV{BSG_DEV}="$root/bsg/$id"
KERNEL=="st*[0-9]|nst*[0-9]", ENV{ID_SERIAL}!="?*", WAIT_FOR="$env{BSG_DEV}", IMPORT="scsi_id --whitelisted --export --device=$env{BSG_DEV}", ENV{ID_BUS}="scsi"
KERNEL=="st*[0-9]",  ENV{ID_SERIAL}=="?*", SYMLINK+="tape/by-id/$env{ID_BUS}-$env{ID_SERIAL}-st"
KERNEL=="nst*[0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="tape/by-id/$env{ID_BUS}-$env{ID_SERIAL}-nst"

# by-path (parent device path)
KERNEL=="st*[0-9]|nst*[0-9]", IMPORT{program}="path_id %p"
KERNEL=="st*[0-9]", ENV{ID_PATH}=="?*", SYMLINK+="tape/by-path/$env{ID_PATH}-st"
KERNEL=="nst*[0-9]", ENV{ID_PATH}=="?*", SYMLINK+="tape/by-path/$env{ID_PATH}-nst"

LABEL="persistent_storage_tape_end"
robertovco3 commented 2 years ago

Piste, thank you very much. We were successful with using the sg backend, the mkltfs and ltfs commands required sudo to run successfully.

I will test out the udev pathing so that we can move away from lin_tape to sg, which has historically been the backend for our workflow.