LinearTapeFileSystem / ltfs

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

Unable to use Quantum HH LTO5 drive #245

Closed spgill closed 3 years ago

spgill commented 3 years ago

Describe the bug The docs mention that there is experimental support for Quantum HH drives, so I wanted to gibe it a shot with my Quantum tape drive... but it seems the model of drive is not detected as compatible.

My exact model number is TC-l52BN, one of the "Model B" external models found on this page: https://www.quantum.com/serviceandsupport/softwareanddocumentationdownloads/lto-5half-height/index.aspx

To Reproduce

  1. Compile latest source on Debian 10 (I tried master branch and 2.4-stable branch)
  2. Point ltfs at Quantum Ultrium 5 HH drive and try to open tape volume
  3. Error in console 1 LTFS30213I Unsupported Drive 'QUANTUM ' / 'ULTRIUM 5 '.

Expected behavior Should open the LTFS volume as the docs state there is experimental support for Quantum HH drives.

If I build ltfs with the exact same method but using the official Quantum LTFS source code, it works as it should.

Screenshots Output from ltfs command:

1 LTFS14000I LTFS starting, LTFS version 2.4.3.1 (Prelim), log level 2.
1 LTFS14058I LTFS Format Specification version 2.4.0.
1 LTFS14104I Launched by "ltfs -f -o devname=/dev/sg14 -o sync_type=unmount -o eject /ltfs".
1 LTFS14105I This binary is built for Linux (x86_64).
1 LTFS14106I GCC version is 8.3.0.
1 LTFS17087I Kernel version: Linux version 5.10.1-Unraid (root@Develop) (gcc (GCC) 9.3.0, GNU ld version 2.33.1-slack15) #1 SMP Thu Dec 17 11:41:39 PST 2020 i386.
1 LTFS17089I Distribution: PRETTY_NAME="Debian GNU/Linux 10 (buster)".
1 LTFS14064I Sync type is "unmount".
1 LTFS17085I Plugin: Loading "sg" tape backend.
1 LTFS17085I Plugin: Loading "unified" iosched backend.
1 LTFS30209I Opening a device through sg-ibmtape driver (/dev/sg14).
1 LTFS30213I Unsupported Drive 'QUANTUM ' / 'ULTRIUM 5       '.
1 LTFS12012E Cannot open device: failed backend open call.
1 LTFS10004E Cannot open device '/dev/sg14'.

Desktop (please complete the following information):

Additional context Out of curiosity, I wondered if maybe the extra space in the vendor name could be tripping it up ('QUANTUM '), so I tried modifying quantum_tape.h to add an extra space to QUANTUM_VENDOR_ID, but no luck

piste-jp commented 3 years ago

At this time, the Quantum drives supported are the drives that return ULTRIUM-HH? as the product ID. I know there are the drives return ULTRIUM ? instead, but I hesitated to add these ones because there is no SCSI spec anywhere.

Do you have an intention to make a test to support it on your equipment? If so, I can modify the codes and then you confirm the code work fine on your env. (Because I don't have any Quantum drives at all. So I can't do anything at this time.)

https://github.com/LinearTapeFileSystem/ltfs/blob/f2769f20688ac90396f1f5d7f5473dfebb9de98e/src/tape_drivers/quantum_tape.c#L65-L72

spgill commented 3 years ago

Of course. If you could tell me what changes to make I would be willing to test it on my equipment.

Or perhaps push the changes to a different branch. 😁

piste-jp commented 3 years ago

OK. Thanks.

I will prepare the branch for this on my repository. Let me have a time to prepare the code for a moment. I will touch you once it's ready.

piste-jp commented 3 years ago

Hi,

Quickly, I just allowed the drive QUANTUM ' / 'ULTRIUM 5 on the bnranch. Please try the branch quantum-another on the repository git@github.com:piste-jp-ibm/ltfs.git.

It works fine if we are lucky (I think we have something bad things...). Otherwise, please make a further comment.

spgill commented 3 years ago

Tested your changes and the volume mounts successfully. There are a few non-critical errors on mount and unmount, but I am able to read and write to the volume successfully.

On mount:

1 LTFS14000I LTFS starting, LTFS version 2.5.0.0 (Prelim), log level 2.
1 LTFS14058I LTFS Format Specification version 2.4.0.
1 LTFS14104I Launched by "ltfs -d -f -o devname=/dev/sg14 -o sync_type=unmount -o eject /ltfs".
1 LTFS14105I This binary is built for Linux (x86_64).
1 LTFS14106I GCC version is 8.3.0.
1 LTFS17087I Kernel version: Linux version 5.10.1-Unraid (root@Develop) (gcc (GCC) 9.3.0, GNU ld version 2.33.1-slack15) #1 SMP Thu Dec 17 11:41:39 PST 2020 i386.
1 LTFS17089I Distribution: PRETTY_NAME="Debian GNU/Linux 10 (buster)".
1 LTFS14064I Sync type is "unmount".
1 LTFS17085I Plugin: Loading "sg" tape backend.
1 LTFS17085I Plugin: Loading "unified" iosched backend.
1 LTFS30209I Opening a device through sg-ibmtape driver (/dev/sg14).
1 LTFS30250I Opened the SCSI tape device 16.0.3.0 (/dev/sg14).
1 LTFS30207I Vendor ID is QUANTUM .
1 LTFS30208I Product ID is ULTRIUM 5       .
1 LTFS30214I Firmware revision is 3180.
1 LTFS30215I Drive serial is HU1135J57B.
1 LTFS30285I The reserved buffer size of /dev/sg14 is 1048576.
1 LTFS30205I TEST_UNIT_READY (0x00) returns -20209.
1 LTFS17160I Maximum device block size is 1048576.
1 LTFS11330I Loading cartridge.
1 LTFS30265W Failed to get medium type code: medium type check is skipped. <-----
1 LTFS11332I Load successful.
1 LTFS17157I Changing the drive setting to append-only mode.
1 LTFS30265W Failed to get medium type code: medium type check is skipped. <-----
1 LTFS30205I MODESELECT (0x55) returns -20500. <-----
1 LTFS30263I MODESELECT returns Invalid Field in Parameter List (-20500) /dev/sg14. <-----
1 LTFS17266I Skip setting the append only mode because the drive doesn't seem to support it.
1 LTFS11005I Mounting the volume.
1 LTFS30265W Failed to get medium type code: medium type check is skipped.
1 LTFS30205I MODESENSE (0x5a) returns -20501.
1 LTFS30263I MODESENSE returns Invalid Field in CDB (-20501) /dev/sg14.
1 LTFS17227I Tape attribute: Vendor = QUANTUM .
1 LTFS17227I Tape attribute: Application Name = LTFS                            .
1 LTFS17227I Tape attribute: Application Version = 2.4.0.2 .
1 LTFS17227I Tape attribute: Medium Label = .
1 LTFS17228I Tape attribute: Text Localization ID = 0x81.
1 LTFS17227I Tape attribute: Barcode = SG5007                          .
1 LTFS17227I Tape attribute: Application Format Version = 2.4.0           .
1 LTFS17228I Tape attribute: Volume Lock Status = 0x00.
1 LTFS17227I Tape attribute: Media Pool name = .
1 LTFS14111I Initial setup completed successfully.
1 LTFS14112I Invoke 'mount' command to check the result of final setup.
1 LTFS14113I Specified mount point is listed if succeeded.
FUSE library version: 2.9.9
nullpath_ok: 1
nopath: 0
utime_omit_ok: 0
unique: 2, opcode: INIT (26), nodeid: 0, insize: 56, pid: 0
INIT: 7.32
flags=0x03fffffb
max_readahead=0x00020000
6 LTFS14029I Ready to receive file system requests.

On unmount:

1 LTFS17235I Writing index of SG5007 to b (Reason: Unmount, 257 files) HU1135J57B.
1 LTFS17236I Wrote index of SG5007 (b, HU1135J57B).
1 LTFS11337I Update index-dirty flag (0) - SG5007 (0x0x5642aff6bbf0).
1 LTFS17235I Writing index of SG5007 to a (Reason: Unmount, 257 files) HU1135J57B.
1 LTFS17236I Wrote index of SG5007 (a, HU1135J57B).
1 LTFS30205I LOGSENSE (0x4d) returns -20501. <-----
1 LTFS30263I LOGSENSE returns Invalid Field in CDB (-20501) /dev/sg14. <-----
1 LTFS30234I Cannot get log page 0x37 (-20501) in get cart health.
1 LTFS11034I Volume unmounted successfully.
1 LTFS11289I Ejecting cartridge.
1 LTFS12022I Unloading medium.
1 LTFS30205I TEST_UNIT_READY (0x00) returns -20209.
1 LTFS30205I TEST_UNIT_READY (0x00) returns -20209.
1 LTFS30205I TEST_UNIT_READY (0x00) returns -20209.
1 LTFS11291I Eject successful.
1 LTFS30205I TEST_UNIT_READY (0x00) returns -20209.
1 LTFS30205I TEST_UNIT_READY (0x00) returns -20209.
1 LTFS30205I TEST_UNIT_READY (0x00) returns -20209.
1 LTFS30205I MODESENSE (0x5a) returns -20501.
1 LTFS30263I MODESENSE returns Invalid Field in CDB (-20501) /dev/sg14.

Some of the error lines that I do not recognized (compared to Quantum LTFS) I marked with <-----

Let me know if you require more data from my equipment.

piste-jp commented 3 years ago

Thank you for your info.

At mount, this error might be good to be resolved by the code change and this log could cause another issue.

LTFS30265W Failed to get medium type code: medium type check is skipped. <-----

But this is not a problem at all. LTFS just tried to check the append only mode is supported or not.

1 LTFS30205I MODESELECT (0x55) returns -20500. <-----
1 LTFS30263I MODESELECT returns Invalid Field in Parameter List (-20500) /dev/sg14. <-----
1 LTFS17266I Skip setting the append only mode because the drive doesn't seem to support it.

At unmount, this drive doesn't support the cartridge performance log page. But it cause another problem and it looks the code can fetch capacity data correctly from the drive.

1 LTFS30205I LOGSENSE (0x4d) returns -20501. <-----
1 LTFS30263I LOGSENSE returns Invalid Field in CDB (-20501) /dev/sg14. <-----
1 LTFS30234I Cannot get log page 0x37 (-20501) in get cart health.
piste-jp commented 3 years ago

I will try to fix the first one. Let me have a time.

spgill commented 3 years ago

Thanks @piste-jp-ibm 😊